1. 程式人生 > >CAN2.0A幀格式 與 LIN幀格式 簡單說明

CAN2.0A幀格式 與 LIN幀格式 簡單說明

即使 技術分享 存在 仲裁 求長 格式 不存在 狀態 數據傳輸

一、標準的2.0A幀格式

技術分享圖片
各字段解釋:
SOF
幀開始標誌比特是一個顯性比特(0),由一個或多個準備發送幀的節點傳輸。SOF標誌著幀的開始(或仲裁發送幀的權利),並用於“硬同步”總線上的設備。只有在開始發送前總線上至少有11個處於隱性狀態的連續比特時,發送方才能開始發送幀。

仲裁字段
仲裁字段包含12比特,前11比特被稱為仲裁ID。該字段的主要功能是實現CAN的媒體接入控制機制,仲裁字段的第12比特標記為遠程傳輸請求(RTR),現在基本不用。CAN-FD作為最新的CAN幀格式已經沒有RTR字段。

控制字段
標準11比特幀的控制字段包含一個顯性的IDE標記,在擴展幀(29比特ID字段)中該標記為隱性狀態,還有一個保留比特和一個4比特的數據字段。數據字段決定了幀中數據或凈荷部分的數據長度。ISO11898-1規定,數據字段可以是任何4比特值,但大於或等於8表示數據凈荷長度是8。在CAN-FD規範中,數據字段大於8表示凈荷大於8,但凈荷最大為64字節(大於8時有對應關系)。

CRC
ISO11898標準幀的CRC字段長度是16比特,由15比特的CRC值和一個隱性CRC定界符比特組成。當CRC校驗失敗時,ACK產生作用

ACK
確認字段是總線上的所有接收方用來向發送方發送信號確認CRC值匹配且正確接收到了整個幀。如果任何節點正確的收到了幀且不存在任何錯誤,發送方會將該比特設置成顯性比特,代表它已正確發送了報文。如果接收方檢測到問題,將用一個錯誤幀覆蓋ACK比特,用以通知給所有問題相關方。
幀結束標識符
連續7個隱性比特表示幀結束

媒體接入控制

CAN用一種巧妙的方法允許設備能夠同時開始傳輸數據而不產生沖突,規定具有最高優先級的報文的設備能夠持續傳輸,而較低優先級的報文組隊不過退避。
該方法依賴於仲裁字段以及總線上的所有設備的數據傳輸都由總線控制這一事實。任何時候總線被檢測到空閑時,設備找發送幀數據前會發送一個顯性比特的幀起始標識符(SOF)。該顯性比特供總線上所有設備來同步時鐘。因此,如果多臺設備檢測到總線空閑並試圖發送SOF時,他們能檢測到其它設備的比特,並根據從總線收到的第一個SOF進行同步。
一旦“硬同步”完成, 任何希望在該幀時間內發送幀的設備將開始以每次發送1比特的方法發送11比特的仲裁ID。總線配置成“邏輯與”操作,即使只有一臺設備發送了一個顯性比特(0),總線也會變成0值。在此種情況下,發送顯性比特的設備繼續仲裁,而發送隱性比特的設備將“退出”並準備隨後發送幀。所以ID較小者,仲裁時會優先勝出,每次競爭時高優先級的報文能夠優先發送。
CAN仲裁機制被稱為非破壞性的機制,因為總會有一個報文會勝出將幀發送出去。但是,這一點也要求設備能夠同步並幾乎同時將仲裁ID的比特發送出去才能發生。所以總線要求長度較短且傳輸速度較慢。(500K/s的總線布線最大長度40M,支節點0.3M,最多30個節點)


二、LIN幀格式

LIN的物理層使用基於汽車電源工作的單線,通常12V。允許在7V至18V的範圍內波動。LIN采用主從架構的總線拓撲。所有LIN節點共享同一物理媒介,其中一個節點指定為主機,而其他最多16個節點作為從節點。最大網絡長度40M。

技術分享圖片
Break
LIN 數據幀開始發送前,主機會發送13個顯性比特,用於通知其它節點即將有數據發送

SYNC
SYNC符號由主節點發送,比特序0,1,0,1,0,1,0,1(0x55)組成。使從節點與主機同步並準備好開始接收ID

ID
ID字節由6比特的ID值以及末端用於錯誤檢測的2個校驗比特組成。所以唯一ID的數量限制在了64個

凈荷
爆頭始終由主節點發送,而凈荷部分由數據的預期源節點根據幀DI發送。

校驗和


簡單的8比特校驗和用於檢測錯誤

媒體接入控制

LIN依賴與由主節點控制的定時觸發的報文系統。只有主機才能發起幀在總線上的傳輸,因此不會產生沖突。

CAN2.0A幀格式 與 LIN幀格式 簡單說明