CAN總線通信協(xié)議(總結篇)


CAN通信協(xié)議概念
CAN(Controller Area Network),控制器局域網(wǎng)廣泛應用于汽車ECU間網(wǎng)絡通信,現(xiàn)也用于其它各類工業(yè)控制系統(tǒng)。
CAN網(wǎng)絡的一些特點:(1)串行通信總線;(2)線狀總線,任意節(jié)點可隨時加入和退出總線,不影響總線上其余節(jié)點;

????低速CAN總線通信速率125kBit/s
????高速CAN總線通信速率500kBit/s
????廣播發(fā)送模式,總線上任意節(jié)點可以接收總線上的信息
????總線訪問原則CSMA(載波偵聽多路訪問),節(jié)點自己發(fā)送到總線上的信息自己可以監(jiān)聽
NRZ(non-return-to-zero)coding
2.CAN總線協(xié)議基礎
????CAN總線上以幀為單位傳輸數(shù)據(jù),CAN幀分為數(shù)據(jù)幀、錯誤幀、遠程幀、過載幀。
????數(shù)據(jù)幀有兩種格式,標準幀格式和擴展幀格式,標準幀與擴展幀唯一的不同是標準幀仲裁區(qū)是11位ID,擴展幀的仲裁區(qū)是29位ID

? ?->?以CAN數(shù)據(jù)幀的標準幀為例分析幀結構如下:

????->幀開始的標志,一個顯性位,提供一個下降沿用于硬同步。
????其中:仲裁區(qū),11位的CAN ID用于仲裁
????CAN ID越小,CAN幀的優(yōu)先級越高,會獲得總線控制權
????禁止仲裁區(qū)高7位全為隱形,即禁止CAN ID為1111111XXXX,CAN ID范圍為0x00-0x7EF
仲裁區(qū)的RTR(Remote Transmission Request)一直置顯性

? ? ->控制區(qū)的IDE(Identifier Extension)在標準幀中置顯性位,在擴展幀中置隱性位。
????r0預留
????DLC0-DLC3表示數(shù)據(jù)區(qū)的字節(jié)長度,長度最大為8。

????數(shù)據(jù)區(qū)的長度最大為8個字節(jié)
????需要傳輸?shù)臄?shù)據(jù)長度在DLC中定義
????傳輸?shù)臄?shù)據(jù)格式為MSB

????->CRC(Cyclic Redundancy Check)
????CRC區(qū)DEL始終置隱性位

????->發(fā)送節(jié)點在ACK位置隱性位,任何收到此報文的節(jié)點置顯性位,發(fā)送節(jié)點監(jiān)聽到ACK位被置成顯性位,就會知道此條報文被至少一個節(jié)點正確的接收到。
????ACK區(qū)的DEL始終置隱性位。

?
????->連續(xù)7個隱性位表示數(shù)據(jù)幀的結束

????->幀間隔為三個連續(xù)的隱性位
????一般幀間隔期間CAN controller復制報文內容至Rx緩沖器
????ACK位之后的ACK結束標志加上EOF加上IFS為11個連續(xù)的隱性位
