CAN通訊協(xié)議
CAN通訊是一種多主總線異步通信協(xié)議,采用差分信號(hào)傳輸,具有高可靠性、實(shí)時(shí)性強(qiáng)、抗干擾能力好等特點(diǎn)。它廣泛應(yīng)用于汽車電子、工業(yè)控制等領(lǐng)域,用于設(shè)備間數(shù)據(jù)快速準(zhǔn)確傳輸,保障系統(tǒng)穩(wěn)定運(yùn)行。
一、CAN物理層
1、電氣特性
總線結(jié)構(gòu)物理特征(左:閉環(huán);右:開環(huán)):
?
CAN總線由兩根信號(hào)線組成,使用的是差分信號(hào),是一種異步通訊CAN總線網(wǎng)絡(luò)的結(jié)構(gòu)有閉環(huán)和開環(huán)兩種,其對(duì)應(yīng)標(biāo)準(zhǔn)分別在ISO11898(高速CAN標(biāo)準(zhǔn))和ISO11519-2(低速CAN)中描述(對(duì)OSI七層模型中的數(shù)據(jù)鏈路層和物理層進(jìn)行了標(biāo)準(zhǔn)化),兩種標(biāo)準(zhǔn)對(duì)比如下圖所示:
2、CAN的電平形式
CAN是差分通訊,總線電平分為顯性電平(Dominant Level)和隱形電平(Recessive Level)兩種,總線必須處于兩種電平之一,總線上執(zhí)行邏輯上的線與時(shí),顯性電平為0,隱形電平為1
二、CAN總線幀格式
| 幀類型 | 用途 |
|---|---|
| 數(shù)據(jù)幀 | 發(fā)送設(shè)備主動(dòng)發(fā)送數(shù)據(jù)(廣播式) |
| 遙控幀 | 接收設(shè)備主動(dòng)請(qǐng)求數(shù)據(jù)(請(qǐng)求式) |
| 錯(cuò)誤幀 | 某個(gè)設(shè)備檢測(cè)出錯(cuò)誤時(shí)向其他設(shè)備通知錯(cuò)誤 |
| 過載幀 | 接收設(shè)備通知其尚未做好接收準(zhǔn)備 |
| 間隔幀 | 用于將數(shù)據(jù)幀及遙控幀與前面的幀分離開 |
1、數(shù)據(jù)幀
幀起始(標(biāo)準(zhǔn)/擴(kuò)展格式相同)
SOF(Start of Frame):幀起始,一個(gè)顯性位,表示幀開始的段;
仲裁段(標(biāo)準(zhǔn)/擴(kuò)展格式不同)
ID(Identify):- 仲裁段,區(qū)分功能,同時(shí)決定優(yōu)先級(jí);
- 標(biāo)準(zhǔn)CAN有11位ID(ID28-ID18),擴(kuò)展格式ID包含基本ID(ID28-ID18)和擴(kuò)展ID(ID17-ID0);
- 禁止高7為ID全為1(隱形);
- (標(biāo)準(zhǔn)ID)
RTR(Remote Transmission Request ):遠(yuǎn)程請(qǐng)求位,區(qū)分?jǐn)?shù)據(jù)幀和遙控幀; - (擴(kuò)展ID)
IDE(Identifier Extension):擴(kuò)展標(biāo)志位,區(qū)分標(biāo)準(zhǔn)格式和擴(kuò)展格式; - (擴(kuò)展ID)
SRR(Substitute Remote Request):替代RTR,協(xié)議升級(jí)時(shí)留下的無意義位;
控制段(標(biāo)準(zhǔn)/擴(kuò)展格式不同)
r0/r1(Reserve):保留位,為后續(xù)協(xié)議升級(jí)留下空間;DLC(Data Length Code):數(shù)據(jù)長(zhǎng)度,指示數(shù)據(jù)段有幾個(gè)字節(jié);- (標(biāo)準(zhǔn)ID)
IDE(Identifier Extension):擴(kuò)展標(biāo)志位,區(qū)分標(biāo)準(zhǔn)格式和擴(kuò)展格式;
數(shù)據(jù)段(標(biāo)準(zhǔn)/擴(kuò)展格式相同)
Data:數(shù)據(jù)段,0~8個(gè)字節(jié);
CRC段(標(biāo)準(zhǔn)/擴(kuò)展格式相同)
CRC(Cyclic Redundancy Check):15位循環(huán)冗余校驗(yàn),校驗(yàn)數(shù)據(jù)是否正確;CRC界定符:1隱性位
ACK段(標(biāo)準(zhǔn)/擴(kuò)展格式相同)
ACK(ACK Slot):應(yīng)答槽位,發(fā)送方發(fā)送1(隱形),接收方回應(yīng)0(顯性),判斷數(shù)據(jù)有沒有被接收方接收;ACK界定符:1隱性位
幀結(jié)束(標(biāo)準(zhǔn)/擴(kuò)展格式相同)
EOF(End of Frame ):幀結(jié)束,7位隱形位,表示數(shù)據(jù)位已經(jīng)傳輸完畢;
2、遙控幀
遙控幀無數(shù)據(jù)段,RTR為隱性電平1,其他部分與數(shù)據(jù)幀相同
3、錯(cuò)誤幀
總線上所有設(shè)備都會(huì)監(jiān)督總線的數(shù)據(jù),一旦發(fā)現(xiàn)“位錯(cuò)誤”或“填充錯(cuò)誤”或“CRC錯(cuò)誤”或“格式錯(cuò)誤”或“應(yīng)答錯(cuò)誤” ,這些設(shè)備便會(huì)發(fā)出錯(cuò)誤幀來破壞數(shù)據(jù),同時(shí)終止當(dāng)前的發(fā)送設(shè)備。
4、過載幀
當(dāng)接收方收到大量數(shù)據(jù)而無法處理時(shí),其可以發(fā)出過載幀,延緩發(fā)送方的數(shù)據(jù)發(fā)送,以平衡總線負(fù)載,避免數(shù)據(jù)丟失。
5、幀間隔
將數(shù)據(jù)幀和遙控幀與前面的幀分離開
四、位時(shí)序
由發(fā)送單元在非同步的情況下發(fā)送的每秒鐘的位數(shù)稱為位速率。一個(gè)位可分為4段,它們都由Time Quantum(Tq)的最小時(shí)間的那位組成。
- 同步段(SS)
- 傳播時(shí)間段(PTS)
- 相位緩沖段1(PBS1)
- 相位緩沖段2(PBS2)
1 位分為 4 個(gè)段,每個(gè)段又由若干個(gè) Tq 構(gòu)成,這稱為位時(shí)序。
其中采樣點(diǎn)位于PBS1結(jié)束后
段及其作用如下圖所示:
五、波特率的計(jì)算
其中每一個(gè)段的時(shí)間由Tq組成,Tq = 1/CAN時(shí)鐘頻率;
六、位填充
位填充是為防止突發(fā)錯(cuò)誤而設(shè)定的功能。當(dāng)同樣的電平持續(xù)5位時(shí)則添加一個(gè)位的反型數(shù)據(jù)。如下圖所示:
1、發(fā)送單元的工作
在發(fā)送數(shù)據(jù)幀和遙控幀時(shí),SOF~CRC段間的數(shù)據(jù),相同電平如果持續(xù)5位,在下一個(gè)位(第6個(gè)位)則
要插入1位與前5位反型的電平。
2、接收單元的工作
在接收數(shù)據(jù)幀和遙控幀時(shí),SOF~CRC段間的數(shù)據(jù),相同電平如果持續(xù)5位,需要?jiǎng)h除下一個(gè)位(第6個(gè)
位)再接收。如果這個(gè)第6個(gè)位的電平與前5位相同,將被視為錯(cuò)誤并發(fā)送錯(cuò)誤幀。
七、附錄
1、數(shù)據(jù)長(zhǎng)度碼和字節(jié)關(guān)系

浙公網(wǎng)安備 33010602011771號(hào)