通過(guò) CAN 總線傳輸數(shù)據(jù)是需要按照一定協(xié)議進(jìn)行的,CAN 協(xié)議提供了 5種幀格式來(lái)傳輸數(shù)據(jù):數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過(guò)載幀和幀間隔。其中數(shù)據(jù)幀和遙控幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種,標(biāo)準(zhǔn)格式有 11 位標(biāo)識(shí)符(ID),擴(kuò)展格式有 29個(gè)標(biāo)識(shí)符(ID)。這 5 中幀的用途見(jiàn)表:
1、數(shù)據(jù)幀
數(shù)據(jù)幀由 7 段組成:
①、幀起始,表示數(shù)據(jù)幀開(kāi)始的段。②、仲裁段,表示該幀優(yōu)先級(jí)的段。③、控制段,表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段。④、數(shù)據(jù)段,數(shù)據(jù)的內(nèi)容,一幀可發(fā)送 0~8個(gè)字節(jié)的數(shù)據(jù)。⑤、CRC 段,檢查幀的傳輸錯(cuò)誤的段。⑥、ACK 段,表示確認(rèn)正常接收的段。⑦、幀結(jié)束,表示數(shù)據(jù)幀結(jié)束的段。
數(shù)據(jù)幀結(jié)構(gòu)如圖所示:
圖給出了數(shù)據(jù)幀標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種幀結(jié)構(gòu),圖中 D 表示顯性電平 0、R 表示隱性電平 1,D/R 表示顯性或隱性,也就是 0 或1,我們來(lái)簡(jiǎn)單分析一下數(shù)據(jù)幀的這 7 個(gè)段。
①、幀起始
幀起始很簡(jiǎn)單,標(biāo)準(zhǔn)格式和擴(kuò)展格式都是由一個(gè)位的顯性電平 0 來(lái)表示幀起始。
②、仲裁段
仲裁段表示幀優(yōu)先級(jí),仲裁段結(jié)構(gòu)如圖所示:
標(biāo)準(zhǔn)格式和擴(kuò)展格式的仲裁段不同,從圖可以看出,標(biāo)準(zhǔn)格式的 ID 為 11 位,發(fā)送順序是從 ID10 到 ID0,最高 7 位 ID10~ID4不能全為隱性(1),也就是禁止 0X1111111XXXXX這樣的 ID。擴(kuò)展格式的 ID 為 29 位,基本 ID 從 ID28 到 ID18,擴(kuò)展 ID 由ID17 到 ID0,基本ID 與標(biāo)準(zhǔn)格式一樣,禁止最高 7 位都為隱性。
③、控制段
控制段由 6 個(gè)位構(gòu)成,表示數(shù)據(jù)段的字節(jié)數(shù),標(biāo)準(zhǔn)格式和擴(kuò)展格式的控制段略有不同,如圖所示:
圖中 r1 和 r0 為保留位,保留位必須以顯性電平發(fā)送。DLC 為數(shù)據(jù)長(zhǎng)度,高位在前,DLC 段有效值范圍為 0~8。
④、數(shù)據(jù)段
數(shù)據(jù)段也就是幀的有效數(shù)據(jù),標(biāo)準(zhǔn)格式和擴(kuò)展格式相同,可以包含 0~8 個(gè)字節(jié)的數(shù)據(jù),從最高位(MSB)開(kāi)始發(fā)送,結(jié)構(gòu)如圖所示:
⑤、CRC 段
CRC 段保存 CRC 校準(zhǔn)值,用于檢查幀傳輸錯(cuò)誤,標(biāo)準(zhǔn)格式和擴(kuò)展格式相同,CRC 段結(jié)構(gòu)如圖所示:
從圖可以看出,CRC 段由 15 位的 CRC 值與 1 位的 CRC 界定符組成。CRC值的計(jì)算范圍包括:幀起始、仲裁段、控制段、數(shù)據(jù)段,接收方以同樣的算法進(jìn)行計(jì)算,然后用計(jì)算得到的 CRC 值與此 CRC段進(jìn)行比較,如果不一致的話就會(huì)報(bào)錯(cuò)。
⑥、ACK 段
ACK 段用來(lái)確認(rèn)接收是否正常,標(biāo)準(zhǔn)格式和擴(kuò)展格式相同,ACK 段結(jié)構(gòu)如圖所示:
從圖可以看出,ACK 段由 ACK 槽(ACK Slot)和 ACK 界定符兩部分組成。發(fā)送單元的 ACK,發(fā)送 2
個(gè)隱性位,而接收到正確消息的單元在 ACK 槽(ACK Slot)發(fā)送顯性位,通知發(fā)送單元正常接收結(jié)束,這個(gè)過(guò)程叫發(fā)送 ACK/返回 ACK。發(fā)送 ACK的是所有接收單元中接收到正常消息的單元,所謂正常消息是指不含填充錯(cuò)誤、格式錯(cuò)誤、CRC錯(cuò)誤的消息,這些接收單元既不處于總線關(guān)閉態(tài)也不處于休眠態(tài)的所有接收單元中。
⑦、幀結(jié)束
最后就是幀結(jié)束段,標(biāo)準(zhǔn)格式和擴(kuò)展格式相同,幀結(jié)束段結(jié)構(gòu)如圖所示:
從圖可以看出,幀結(jié)束段很簡(jiǎn)單,由 7 位隱性位構(gòu)成。
-
CAN
+關(guān)注
關(guān)注
57文章
2744瀏覽量
463612 -
數(shù)據(jù)幀
+關(guān)注
關(guān)注
0文章
45瀏覽量
6739
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論