<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 不懂CAN協(xié)議?如何避免總線仲裁失?。?/p>

          不懂CAN協(xié)議?如何避免總線仲裁失???

          作者: 時(shí)間:2023-02-02 來(lái)源:ZLG 收藏

          總線是可以掛載多個(gè)控制單元,每個(gè)單元均可以發(fā)送和接收數(shù)據(jù),為了避免發(fā)生沖突,協(xié)議規(guī)定只有等信道空閑時(shí)刻優(yōu)先級(jí)高的單元才能占有總線并發(fā)送數(shù)據(jù),那么單元是如何判斷優(yōu)先級(jí)的呢?

          本文引用地址:http://www.ex-cimer.com/article/202302/442920.htm


          仲裁的實(shí)現(xiàn)方式


          1. CANID在CAN報(bào)文中的位置


          每一個(gè)CAN報(bào)文的CANID有唯一標(biāo)識(shí)的11bit/29bit構(gòu)成,以標(biāo)準(zhǔn)CAN幀為例,11bitCANID在CAN幀中的位置如圖1所示。SOF之后是Identifier,各個(gè)節(jié)點(diǎn)要外發(fā)的CANID通過(guò)CANID仲裁,優(yōu)先級(jí)高的報(bào)文被優(yōu)先發(fā)送。同時(shí),對(duì)應(yīng)節(jié)點(diǎn)優(yōu)先獲得CAN總線的使用權(quán),而仲裁失敗的節(jié)點(diǎn)則停止數(shù)據(jù)的發(fā)送,轉(zhuǎn)而進(jìn)行數(shù)據(jù)的接收,只能等待下一個(gè)SOF時(shí)刻再去仲裁。


          1675243312447641.png

          圖1 標(biāo)準(zhǔn)CAN數(shù)據(jù)幀格式


          2. CAN總線仲裁機(jī)制的實(shí)現(xiàn)


          那么CANID的優(yōu)先等級(jí)是如何判斷的呢?其實(shí)CAN總線ID仲裁方式相當(dāng)于一個(gè)“線與”的結(jié)構(gòu),顯性(邏輯0)與隱形(邏輯1)相與變?yōu)轱@性即0&1=0,硬件電路簡(jiǎn)圖可參考圖2。標(biāo)準(zhǔn)CAN幀格式的總線仲裁方式如圖3所示。因?yàn)楦呶辉谇?,低位在后,故CAN標(biāo)識(shí)符組成的數(shù)值越小優(yōu)先級(jí)越高。


          7.png

          圖2 線與電路簡(jiǎn)圖


          1675243291720998.png

          圖3 總線仲裁方式圖


          CANID沖突發(fā)生的條件及現(xiàn)象


          1. CANID沖突的條件


          本文以我司協(xié)議轉(zhuǎn)換模塊CSM300為例進(jìn)行介紹,CSM300是集成微處理器、CAN-bus控制器、CAN-bus收發(fā)器、DC-DC轉(zhuǎn)換、高速數(shù)字隔離于一體的嵌入式CAN與UART/SPI雙向轉(zhuǎn)換模塊。如果我們將兩個(gè)ID均為00 00 00 00的CSM300模塊組成一個(gè)CAN總線網(wǎng)絡(luò)系統(tǒng),當(dāng)這兩個(gè)ID相同的模塊同時(shí)往CAN總線端發(fā)送數(shù)據(jù)時(shí)將會(huì)造成仲裁失敗。


          2. CANID沖突的現(xiàn)象


          以CSM300為例進(jìn)行說(shuō)明,電路硬件簡(jiǎn)易連接圖如圖4所示,用兩個(gè)上位機(jī)通過(guò)兩路串口同時(shí)給兩個(gè)相同配置的模塊發(fā)送一組數(shù)據(jù),此時(shí)兩模塊會(huì)同時(shí)將RXD腳接收到的數(shù)據(jù)轉(zhuǎn)換至CAN總線端。因?yàn)閮蓚€(gè)CAN節(jié)點(diǎn)的ID一樣,CAN總線仲裁失敗,兩發(fā)送節(jié)點(diǎn)收不到反饋信號(hào),將一直發(fā)送最后一幀數(shù)據(jù),此時(shí)CAN總線端的波形如圖5所示。


          9.png

          圖4 CSM300電路連接圖


          1675243270872988.png

          圖5 CAN總線波形圖


          CSM系列如何避免CANID沖突


          為滿足不同環(huán)境的應(yīng)用,CSM300系列和CSM100系列均有透明轉(zhuǎn)換、透明帶標(biāo)識(shí)轉(zhuǎn)換、自定義協(xié)議轉(zhuǎn)換三種轉(zhuǎn)換方式供用戶選配,如圖6所示。


          11.png

          圖6 轉(zhuǎn)換方式選配圖


          透明轉(zhuǎn)換方式下用戶可通過(guò)MCU或上位機(jī)將模塊配置為不同的ID避免發(fā)生仲裁失敗的情況,透明轉(zhuǎn)換方式下,模塊無(wú)需對(duì)數(shù)據(jù)進(jìn)行額外處理,最大限度地提高了數(shù)據(jù)轉(zhuǎn)換速度,也提高了緩沖區(qū)的利用率。不過(guò)此模式下每個(gè)模塊的CANID在配置完成后不能更改除非用戶再次配置,此外該模式下可能將兩組時(shí)間間隔接近的UART幀識(shí)別為一組數(shù)據(jù)進(jìn)行轉(zhuǎn)換,造成數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤。


          透明帶標(biāo)識(shí)轉(zhuǎn)換方式下,用戶可以在配置時(shí)固定CANID在串行幀的位置和長(zhǎng)度如圖7所示,通過(guò)改變串行幀數(shù)據(jù)來(lái)控制所發(fā)數(shù)據(jù)的CAN幀ID,方便用戶在同一節(jié)點(diǎn)發(fā)送不同ID的CAN數(shù)據(jù)。但是此模式下需要確保串行幀的時(shí)間間隔足夠大,避免模塊不能正確識(shí)別每組串行幀的結(jié)束造成數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤。透明帶標(biāo)識(shí)模式下串行幀最小間隔具體要求可參考CSM100和CSM300的用戶手冊(cè)。


          12.png

          圖7 透明帶標(biāo)識(shí)轉(zhuǎn)換配置圖


          有效的自定義協(xié)議轉(zhuǎn)換串行幀包括了幀頭、幀尾、幀ID和幀長(zhǎng)度等,用戶可通過(guò)改變串行幀數(shù)據(jù)來(lái)控制CAN幀ID,方便用戶在同一節(jié)點(diǎn)發(fā)送不同ID的CAN數(shù)據(jù)。同時(shí)用戶將在配置時(shí)固定幀頭和幀尾如圖8所示,此模式下用戶通過(guò)串行幀數(shù)據(jù)告知模塊串行幀的幀頭、幀尾和數(shù)據(jù)長(zhǎng)度,故此轉(zhuǎn)換方式下可有效避免因串行幀間隔時(shí)間短造成的數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤的情況。


          13.png

          圖8 自定義轉(zhuǎn)換配置圖



          關(guān)鍵詞: ZLG CAN

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();