我知道,我對與電子有關的所有事情都很著迷,但不論從哪個角度看,今天的現場可編程門陣列(FPGA),都顯得“鶴立雞群”,真是非常棒的器件。如果在這個智能時代,在這個領域,想擁有一技之長的你還沒有關注FPGA,那么世界將拋棄你,時代將拋棄你。作者ALIFPGA,多年FPGA開發經驗,所有文章皆為多年學習和工作經驗之總結。
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
+關注
關注
1620文章
21509瀏覽量
598871 -
CAN總線
+關注
關注
145文章
1898瀏覽量
130333
原文標題:CAN總線標準幀
文章出處:【微信號:ALIFPGA,微信公眾號:FPGA極客空間】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論