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

評論