日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAN总线技术 | 数据链路层02 - 帧结构

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAN总线技术 | 数据链路层02 - 帧结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、幀開始
  • 三、仲裁段
  • 四、控制段
  • 五、數據段
  • 六、CRC段(校驗)
  • 七、ACK段(應答段)
  • 八、幀結束
  • 九、幀間隔ITM
  • 十、一個數據段長度為8的標準幀,總共多少個位呢?是108位嗎?

一、前言


一個標準的數據幀由以下組成:

  • 幀開始
  • 仲裁段
  • 控制段
  • 數據段
  • CRC段(校驗)
  • ACK段
  • 幀結束
    以上的元素,缺一不可,否則沒法通過CAN控制器的校驗,應用程序無法獲取CAN報文。
  • 二、幀開始


    幀起始由1個顯性位(邏輯0)組成,用于CAN總線上各個CAN節點的同步。在CAN總線空閑時,總線是隱性(1)。由于CAN總線是電平邏輯是"線與原理",所以當其中一個CAN節點發送幀起始(顯性0),CAN總線會從隱形1變成顯性0,各個節點進行同步。

    三、仲裁段


    標準幀與拓展幀在這里有區別,CANID的過濾器與CANID的優先級都在仲裁段完成。在STM32的CAN控制與FDCAN控制上,發送CAN報文之前需要對RTR寄存器賦值,表示即將發送的CAN報文是標準幀還是遠程幀。
    實際工作上,分配CAN_ID時(或者Node_ID)時需要從仲裁段思考。哪些CAN節點的通訊優先級比較高,通訊優先級高的CAN節點配置較小的CAN_ID(或者Node_ID)。

    四、控制段


    標準幀與拓展幀在這里有區別,DLC規定了數據段的長度。在STM32的CAN控制與FDCAN控制器,發送CAN報文之前需要對DLC寄存器賦值,表示即將發送的CAN報文的數據段有多少個字節。
    其中DLC段需要應用程序控制,決定數據段有多少個字節的數據。

    五、數據段


    數據段比較簡單,最大8個字節(當DCL設置8時)。當DCL設置0時,數據段為0個字節。
    應用程序的大部分工作都是處理數據段里的數據。

    六、CRC段(校驗)


    校驗的算法由CAN控制器完成,應用程序不用管它,了解一下即可。

    校驗的流程是發送端先計算CRC值,接收端接著也計算CRC值。如果接收端發現CRC值不對,接著就會產生CRC校驗錯誤。

    七、ACK段(應答段)


    當沒有CAN節點應答時,ACK段為隱性(1),當有CAN節點應答時,ACK段位顯性(0)。

    八、幀結束


    幀結束由7個隱性位組成。

    九、幀間隔ITM

    1個隱性位(ACK界定符)+7個隱性位(幀結束)+3個隱性位(幀間隔ITM) = 11個隱性位。11個隱形位后,CAN總線進入空閑狀態。

    十、一個數據段長度為8的標準幀,總共多少個位呢?是108位嗎?

    答案是不止108位,因為還需要考慮位填充(連續5個相同位后,CAN控制器會填入一個相反的位)。

    一般CAN示波器就能捕捉到位填充。

    總結

    以上是生活随笔為你收集整理的CAN总线技术 | 数据链路层02 - 帧结构的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。