1. 程式人生 > >CAN總線標準幀

CAN總線標準幀

字節數 單元 組成 數據 body 接收 接受 info 報文

技術分享圖片


CAN總線是一種串行數據通信協議,其通信接口中集成了CAN協議的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環冗余檢驗、優先級判別等項工作。

CAN總線結構

技術分享圖片

CAN總線規範采用了ISO-OSI(Open System Interconnection Reference Model,開放式通信系統互聯參考模型)的三層網絡結構,有三種不同的器件與之相對應。

對應物理層的是收發器;

對應數據鏈路層的是CAN控制器;

應用層上主要是用戶特殊的應用,對應的器件是微控制器。

CAN總線標準幀

技術分享圖片

標準幀 11位標識符。

幀類型 數據幀、遠程幀、錯誤幀和過載幀

  • 數據幀:數據幀攜帶數據從發送器至接收器。總線上傳輸的大多是這個幀。

  • 遠程幀:由總線單元發出,請求發送具有同一識別符的數據幀。數據幀(或遠程幀)通過幀間空間與其他各幀分開。

  • 錯誤幀:任何單元一但檢測到總線錯誤就發出錯誤幀。

  • 過載幀:過載幀用以在先行的和後續的數據幀(或遠程幀)之間提供一附加的延時。

幀以起始幀(SOF)位開始, SOF 為顯性狀態,允許所有節點的硬同步。SOF之後是仲裁字段,由12個位組成,分別為11個標識位和一個遠程發送請求(Remote TransmissionRequest, RTR)位。RTR 位用於區分報文是數據幀

(RTR 位為顯性狀態)還是遠程幀(RTR 位為隱性狀態)。

技術分享圖片

仲裁字段之後是控制字段,由6 個位組成。控制字段的第一位為標識擴展(Identifier Extension,IDE)位,該位應是顯性狀態來指定標準幀。標識擴展位的下一位為零保留位(RB0),CAN 協議將其定義為顯性位。控制

字段的其余4 位為數據長度碼(Data Length Code,DLC),用來指定報文中包含的數據字節數(0 到8 字節)。

技術分享圖片

控制字段之後為數據字段,包含要發送的任何數據字節。數據字段長度由上述DLC 定義(0 到8 字節)。

技術分享圖片

數據字段之後為循環冗余校驗(CRC)字段,用來檢測報文傳輸錯誤。CRC 字段包含一個15 位的CRC 序列,之後是隱性的CRC 定界位。

技術分享圖片

最後一個字段是確認字段(ACK),由2 個位組成。在確認時隙(ACK Slot)位執行期間,發送節點發出一個隱性位。任何收到無錯誤幀的節點會發回一個顯性位(無論該節點是否配置為接受該報文與否)來確認幀收到無誤。確認字段以隱性確認定界符結束,該定界符可能不允許被改寫為顯性位。

技術分享圖片


版權所有權歸卿萃科技 杭州FPGA事業部,轉載請註明出處

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA極客空間 微信公眾號


技術分享圖片

掃描二維碼關註杭州卿萃科技FPGA極客空間



CAN總線標準幀