信息想要在CAN-BUS區域網內有效、快速的傳遞,就要把它轉換為適合CAN-BUS總線的傳輸格式。我們把這種信息稱之為報文,把適合CAN-BUS總線傳輸的格式稱之為報文格式。總線上的信息是以不同的固定報文格式發送的,但長度受限。
報文傳輸格式有以下四種不同的幀類型所表示和控制,所謂幀就是一個計量單位,它的數據由兩部分組成:幀頭和幀數據。
數據幀:數據幀攜帶數據,是數據在網絡上傳輸時的一個數據單元。
遠程幀:總線單元發送的遠程幀,請求發送具有統一識別符的數據幀。
錯誤幀:任何電控單元檢測到總線錯誤就會發出錯誤幀。
過載幀:用以在先行和後續的數據幀之間提供以附加的延時。
本次我們主要講述有關數據幀的相關內容。數據幀由7個不同的位場組成:
1.幀起始SOF(START OF FRAME)
標誌數據幀和遠程幀的起始,由單個顯性位構成。只有當總線位空閒狀態時,才允許節點開始發送,所有節點必須同步於首先發送節點的幀起始引起的上升沿。
2.仲裁場AF(Arbitration Field)
在CAN2.0A中,仲裁場由11位標識符和遠程發送請求位RTR(Remote Transmission Request)組成;而在CAN2.0B中,仲裁場由29位標識符和遠程發送請求位RTR構成。也就是說CAN協議支持兩種報文格式,其唯一的區別是標識符(ID)長度的不同,標準格式為11位,擴展格式為29位。
(1)標識符ID(Identifier):標識符分為標準格式標識符和擴展格式標識符。在CAN2.0A中標準格式標識符的長度為11位,這些位以ID-10至ID-0的順序發送,最低位為ID-0,其中最高7位(ID-10到ID-4)必須不是全隱性。
(2)遠程發送請求位RTR (Remote Transmission Request):在數據幀中,遠程發送請求位必須是顯性電平,而在遠程幀中,遠程發送請求位必須是隱性電平。在擴展格式中,先發送基本標識符,其後是標識符擴展位和替代遠程請求位。擴展標識符在替代遠程請求位後發送。
(3)替代遠程請求位SRR (Substitute Remote Request): SRR位為隱性位。在擴展格式中,它在標準格式的遠程發送請求位位置上被發送,並替代標準格式中的遠程發送請求位。這樣,可以解決標準格式和擴展格式的衝突。
(4)標識符擴展位IDE (Identifier Extension Bit): IDE位對於擴展格式而言屬於仲裁場,對於標準格式來說屬於控制場。標識符擴展位在標準格式中以顯性電平發送,而在擴展格式中為隱性電平。
3.控制場CF(Control Field)
兩種格式的控制場格式不同。在標準格式中,控制場包括DLC (Data Length Code)、IDE位(顯性)和保留位0r(顯性)。在擴展格式中,包括DLC和兩個保留位1r、
2r,這兩個保留位必須發送顯性電平。DLC為4位,允許使用0到8之間的數字。
4.數據場DF(Data Field)
數據場由數據幀中被發送的數據組成,它可包括從0到8個字節,每個字節8位,其中首先發送最高有效位。
5.循環冗餘校驗場CRC (Cyclic Redundancy Check)
CRC場包括15位CRC序列和1位CRC界定符(隱性)。CRC生成器所使用的多項式是:X15 + X14+ X10 + X8 + X7 + X4 + X3 + 1,這個多項式除法的餘數就是發送到總線上的「循環冗餘校驗碼」,它只用於檢測錯誤而不能校正。
6.應答場ACK (Acknowledge)
ACK場為兩位,包括應答間隙(ACK SLOT)和應答界定符(ACK DELIMITER)。在應答場裡,發送站發送兩個隱性位。當接收器接收到有效的報文時,接收器就會在應答間隙期間發送應答信號,向發送器發送一顯性位以示回答。
7.幀結束EOF (END OF FRAME)
每個數據幀和遠程幀均由一標誌序列界定,也就是幀結尾,這個標誌序列由7個隱性位組成。