CAN總線是一種串行通信協(xié)議,能有效的支持具有很高安全等級的分布實時控制
應用范圍十分廣泛,從高速網絡到低價位的多路接線都可以使用CAN,主要運用于汽車電子航天等行業(yè),使用CAN連接發(fā)動機的控制單元等汽車部件,CAN總線具有可靠,實時以及靈活的特性.
CAN總線以廣播的形式發(fā)送報文.當CAN總線上的某個節(jié)點需要給其他節(jié)點發(fā)送消息時,會以廣播的形式發(fā)送給總線上所有的節(jié)點,因為總線上的節(jié)點不適用地址來進行配置CAN系統(tǒng),而是根據報文的開頭的11位標識符決定是否要接受其他節(jié)點發(fā)來的報文.
每個節(jié)點都有自己的處理器和CAN總線接口控制器;當一個節(jié)點需要發(fā)送數(shù)據到另一個節(jié)點時,自身節(jié)點的處理器需要將要發(fā)送的數(shù)據和自己的標識符傳給自身的總線控制接口,處于準備狀態(tài);當獲取到總線的使用權后,將數(shù)據和標識符組裝成報文,將報文以一定格式發(fā)出,此時其他的節(jié)點處于接收狀態(tài).至于其他節(jié)點是否接收,由其他節(jié)點決定,是都會對某些報文進行過濾.當新增的節(jié)點僅僅是純粹的數(shù)據接收設備時,只需要該設備直接從總線上接收數(shù)據即可.
首先 CAN 數(shù)據總線有兩條導線,一條是黃色的,一條是綠色的 ------ 分別是 CAN_High 線和 CAN_Low 線,當靜止狀態(tài)時,這兩條導線上的電平一樣,這個電平稱為靜電平,大約為 2.5 伏。
這個靜電平狀態(tài)就是隱形狀態(tài),也稱隱性電平,也就是沒有任何干擾的時候的狀態(tài)稱為隱性狀態(tài)。當有信號修改時,CAN_High 線上的電壓值變高了,一般來說會升高至少 1V;而 CAN_Low 線上的電壓值會降低一個同樣值,也是 1v。那么這時候,CAN_High 就是 2.5v+1v=3.5v,它就處于激活狀態(tài)了。而 CAN_Low 降為 2.5v-1v=1.5v。
由此我們得到,在隱性狀態(tài)下CAN_High 線與 CAN_Low 沒有電壓差,這樣我們看到沒有任何變化也就檢測不到信號。但是在顯性狀態(tài)時,改值最低為 2V,我們就可以利用這種變化才傳輸數(shù)據了。所以出現(xiàn)了那些幀,那些幀中的場,那些場中的位等等。
在總線上通常邏輯 1 表示隱性。而 0 表示顯性。這些 1 啊,0 啊,就可以利用起來為我們傳數(shù)據了。利用這種電壓差,我們可以接收信號。
一般來說,控制單元通過收發(fā)器連接到 CAN 驅動總線上,這個收發(fā)器(顧名思義,可發(fā)送,可接收)內有一個接收器,該接收器是安裝在接收一側的差動信號放大器。然后,這個放大器很自然地就放大了 CAN_High 和 CAN_Low 線的電平差,然后傳到接收區(qū)。
CAN 的報文格式有兩種,不同之處其實就是識別符長度不同,具有 11 位識別符的幀稱為標準幀,而還有 29 位識別符的幀為擴展幀,CAN 報文有以下 4 個不同的幀類型。分別是:
(1) 數(shù)據幀:數(shù)據幀將數(shù)據從發(fā)送器傳輸?shù)浇邮掌?
(2) 遠程幀:總線節(jié)點發(fā)出遠程幀,請求發(fā)送具有同一標識符的數(shù)據幀;
(3) 錯誤幀:任何節(jié)點檢測到總線錯誤就發(fā)出錯誤幀;
(4) 過載幀:過載幀用已在先行的后續(xù)的數(shù)據幀(或遠程幀)之間提供一附加的延時。
下面詳細介紹一下數(shù)據幀,用于CAN傳送數(shù)據,包括幀起始、仲裁場、控制場、數(shù)據場和CRC場。
幀起始:標志一個數(shù)據幀的開始,僅由一個顯性位構成,只有在總線空閑期間才能夠發(fā)送。
仲裁場:在標準幀中,仲裁場由11位標識符和RTR位組成;在擴展幀中,仲裁場由29位標識符、SRR位、IDE位和RTR位組成。
ID(標識符)是用來確定一條報文,表明報文含義及優(yōu)先級,如上面舉例的0x100。
RTR(遠程傳送請求位),數(shù)據幀RTR位必須為顯性電平(RTR=0),遠程幀RTR位必須為隱性電平(RTR=1)。
IDE(標識符擴展位)在標準幀屬于控制場,在擴展幀中屬于仲裁場。在標準幀中IDE為顯性電平(IDE=0),在擴展幀中IDE為隱性電平(IDE=1)
SRR(遠程代替請求位)在擴展幀中始終為隱性電平(SRR=1)
控制場:由6位組成。在標準幀中,控制場包括IDE(此時為顯性電平0)、保留位r(此時為顯性電平0)以及占4個bit的數(shù)據場長度碼DLC。在擴展幀中,控制場沒有IDE位,而是兩個保留位r0和r1,此時同樣均為顯性電平0。
數(shù)據場:包含CAN數(shù)據幀發(fā)送的數(shù)據,0~8個byte,如上面舉例的主要信息就是圍繞數(shù)據場來說明的,這也是整車電子工程師討論得最多的一部分內容,如果你不是專門的CAN設計工程師,其他的格式內容僅作了解即可。
CRC場:包括CRC序列CRC界定符DEL,CRC校驗是為了通信雙方的安全可靠性制定的”暗號“,只有發(fā)送方根據發(fā)送信息計算的CRC值與接收方根據接收信息計算的CRC值對上,才能判斷這次通信成功了,否則就會報錯。
CAN總線是一種多主方式的串行通訊總線,基本設計規(guī)范要求有高的位速率,高抗電子干擾性,并且能夠檢測出產生的任何錯誤。CAN總線可以應用于汽車電控制系統(tǒng)、電梯控制系統(tǒng)、安全監(jiān)測系統(tǒng)、醫(yī)療儀器、紡織機械、船舶運輸?shù)阮I域。