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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

文章目錄

  • 一、前言
  • 二、幀開始
  • 三、仲裁段
  • 四、控制段
  • 五、數(shù)據(jù)段
  • 六、CRC段(校驗(yàn))
  • 七、ACK段(應(yīng)答段)
  • 八、幀結(jié)束
  • 九、幀間隔ITM
  • 十、一個(gè)數(shù)據(jù)段長(zhǎng)度為8的標(biāo)準(zhǔn)幀,總共多少個(gè)位呢?是108位嗎?

一、前言


一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)幀由以下組成:

  • 幀開始
  • 仲裁段
  • 控制段
  • 數(shù)據(jù)段
  • CRC段(校驗(yàn))
  • ACK段
  • 幀結(jié)束
    以上的元素,缺一不可,否則沒法通過CAN控制器的校驗(yàn),應(yīng)用程序無(wú)法獲取CAN報(bào)文。
  • 二、幀開始


    幀起始由1個(gè)顯性位(邏輯0)組成,用于CAN總線上各個(gè)CAN節(jié)點(diǎn)的同步。在CAN總線空閑時(shí),總線是隱性(1)。由于CAN總線是電平邏輯是"線與原理",所以當(dāng)其中一個(gè)CAN節(jié)點(diǎn)發(fā)送幀起始(顯性0),CAN總線會(huì)從隱形1變成顯性0,各個(gè)節(jié)點(diǎn)進(jìn)行同步。

    三、仲裁段


    標(biāo)準(zhǔn)幀與拓展幀在這里有區(qū)別,CANID的過濾器與CANID的優(yōu)先級(jí)都在仲裁段完成。在STM32的CAN控制與FDCAN控制上,發(fā)送CAN報(bào)文之前需要對(duì)RTR寄存器賦值,表示即將發(fā)送的CAN報(bào)文是標(biāo)準(zhǔn)幀還是遠(yuǎn)程幀。
    實(shí)際工作上,分配CAN_ID時(shí)(或者Node_ID)時(shí)需要從仲裁段思考。哪些CAN節(jié)點(diǎn)的通訊優(yōu)先級(jí)比較高,通訊優(yōu)先級(jí)高的CAN節(jié)點(diǎn)配置較小的CAN_ID(或者Node_ID)。

    四、控制段


    標(biāo)準(zhǔn)幀與拓展幀在這里有區(qū)別,DLC規(guī)定了數(shù)據(jù)段的長(zhǎng)度。在STM32的CAN控制與FDCAN控制器,發(fā)送CAN報(bào)文之前需要對(duì)DLC寄存器賦值,表示即將發(fā)送的CAN報(bào)文的數(shù)據(jù)段有多少個(gè)字節(jié)。
    其中DLC段需要應(yīng)用程序控制,決定數(shù)據(jù)段有多少個(gè)字節(jié)的數(shù)據(jù)。

    五、數(shù)據(jù)段


    數(shù)據(jù)段比較簡(jiǎn)單,最大8個(gè)字節(jié)(當(dāng)DCL設(shè)置8時(shí))。當(dāng)DCL設(shè)置0時(shí),數(shù)據(jù)段為0個(gè)字節(jié)。
    應(yīng)用程序的大部分工作都是處理數(shù)據(jù)段里的數(shù)據(jù)。

    六、CRC段(校驗(yàn))


    校驗(yàn)的算法由CAN控制器完成,應(yīng)用程序不用管它,了解一下即可。

    校驗(yàn)的流程是發(fā)送端先計(jì)算CRC值,接收端接著也計(jì)算CRC值。如果接收端發(fā)現(xiàn)CRC值不對(duì),接著就會(huì)產(chǎn)生CRC校驗(yàn)錯(cuò)誤。

    七、ACK段(應(yīng)答段)


    當(dāng)沒有CAN節(jié)點(diǎn)應(yīng)答時(shí),ACK段為隱性(1),當(dāng)有CAN節(jié)點(diǎn)應(yīng)答時(shí),ACK段位顯性(0)。

    八、幀結(jié)束


    幀結(jié)束由7個(gè)隱性位組成。

    九、幀間隔ITM

    1個(gè)隱性位(ACK界定符)+7個(gè)隱性位(幀結(jié)束)+3個(gè)隱性位(幀間隔ITM) = 11個(gè)隱性位。11個(gè)隱形位后,CAN總線進(jìn)入空閑狀態(tài)。

    十、一個(gè)數(shù)據(jù)段長(zhǎng)度為8的標(biāo)準(zhǔn)幀,總共多少個(gè)位呢?是108位嗎?

    答案是不止108位,因?yàn)檫€需要考慮位填充(連續(xù)5個(gè)相同位后,CAN控制器會(huì)填入一個(gè)相反的位)。

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。