<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 不懂CAN協(xié)議?如何避免總線(xiàn)仲裁失???

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

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

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

本文引用地址:http://dyxdggzs.com/article/202302/442920.htm


仲裁的實(shí)現方式


1. CANID在CAN報文中的位置


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


1675243312447641.png

圖1 標準CAN數據幀格式


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


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


7.png

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


1675243291720998.png

圖3 總線(xiàn)仲裁方式圖


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


1. CANID沖突的條件


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


2. CANID沖突的現象


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


9.png

圖4 CSM300電路連接圖


1675243270872988.png

圖5 CAN總線(xiàn)波形圖


CSM系列如何避免CANID沖突


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


11.png

圖6 轉換方式選配圖


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


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


12.png

圖7 透明帶標識轉換配置圖


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


13.png

圖8 自定義轉換配置圖



關(guān)鍵詞: ZLG CAN

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>