CAN報文格式


CAN協議的報文傳輸過程中有:數據幀、遠程幀、錯誤幀、過載幀和幀間隔。

        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個顯性位的掛起傳輸。在掛起傳輸階段被動錯誤節點不可以發送數據幀與遠程幀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM