1.數據幀:用於發送節點向接收節點傳送數據的幀。
2.遠程幀:用於接收節點向具有相同ID的發送節點傳送數據的幀。
3.錯誤幀:用於當檢測出錯誤時向其他節點通知錯誤的幀。
4.過載幀:用於接收節點通知其尚未做好准備的幀。
5.幀間隔:用於將數據幀及遠程幀與前面的幀分隔開來。
標准幀和擴展幀:
數據幀和遠程幀都可以使用標准幀格式或者擴展幀格式
RTR:遠程發送請求位,數據幀為顯性,遠程幀為隱性。
SRR:代替遠程請求位(在擴展格式中在RTR位置,所以得此名),該位為隱性位。在這個地方占個位以保持標准幀和擴展幀IDE對齊,便可以判斷標准幀優先於擴展幀。
IDE:標識符擴展位,標准幀為顯性,擴展幀為隱性。
R0、R1:保留位。
DLC:數據長度位。
CRC:校驗位。
CRC分隔符:隱性位
ACK:應答位和應答界定位。在應答域中,發送器發出兩個隱性位。接收器接收到報文后,在應答位期間,用顯性位填充應答位作為回應,應答界定則為保持隱性。
幀結束:由7個隱性位組成。
數據幀:
SOF幀起始:數據幀開始的段。
仲裁場:該幀優先級的段。
控制場:數據的字節數以及保留位。
數據場:數據內容。
CRC場:校驗數據。
應答場:確認正常接收的段。
幀結尾:數據幀結束的段。
遠程幀:
通過發送遠程幀,作為數據接收器的節點可以發起各自數據源的數據傳送請求,即向數據發送器請求發送具有相同ID的數據幀。
遠程幀沒有數據段。
錯誤幀:
錯誤類型:應答錯誤,填充錯誤,CRC錯誤,格式錯誤
錯誤幀由錯誤標志的疊加和結束符組成。錯誤標志有主動(積極)錯誤標志和被動(消極)錯誤標志。主動(積極)錯誤標志為6個顯性位,被動(消極)錯誤標志為6個隱性位。
錯誤積極節點:如果檢測到一個錯誤條件,就會發送積極錯誤標志。這將引起其它節點檢測到填充錯誤,並開始發送錯誤標志。因此錯誤標志疊加在6~12位之間。節點發送完錯誤標志之后就發送一個隱性位,並監控總線,直到總線上出現一個隱性位,然后再發送7個隱性位。這樣一個錯誤幀就發送完畢了。
消極錯誤節點:如果檢測到一個錯誤條件,會試圖發送一個消極錯誤標志進行指示。這個消極錯誤節點會一直等待6個具有相同極性的連續位,等待從消極錯誤標志起始開始,當檢測到6個相同極性的連續位時,消極錯誤標志發送完成。
過載幀:
過載條件:接收器要求延遲下一次數據幀或遠程幀的到達;在幀間隔間歇場的第一位和第二位檢測到顯性位;如果CAN節點在錯誤界定符或過載界定符的第8位采樣到一個顯性位,則節點會發送一個過載幀,錯誤計數器不會增加。
幀間空間:
數據幀和遠程幀的前面必然有幀間空間。對於主動錯誤節點和被動錯誤節點,幀間空間的結構稍有不同。對於主動錯誤節點,幀空間由3個顯性位的間歇字段和總線空閑組成。在間歇字段不允許發送數據幀和遠程幀。總線空閑的長度任意,當有顯性位時就被認為是幀起始。被動錯誤標志除了上邊兩部分外,在間歇字段后還有8個顯性位的掛起傳輸。在掛起傳輸階段被動錯誤節點不可以發送數據幀與遠程幀。