中文在线中文资源,色鲁97精品国产亚洲AV高,亚洲欧美日韩在线一区,国产精品福利午夜在线观看

你的位置:首頁 > 互連技術 > 正文

不懂CAN協議?如何避免總線仲裁失敗?

發布時間:2023-02-22 來源:ZLG 責任編輯:wenwei

【導讀】CAN總線是可以掛載多個控制單元,每個單元均可以發送和接收數據,為了避免發生沖突,協議規定只有等信道空閑時刻優先級高的單元才能占有總線并發送數據,那么CAN單元是如何判斷優先級的呢?


CAN仲裁的實現方式


1. CANID在CAN報文中的位置


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


1675243312447641.png

圖1 標準CAN數據幀格式


2. CAN總線仲裁機制的實現


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


7.png

圖2 線與電路簡圖


1675243291720998.png

圖3 總線仲裁方式圖


CANID沖突發生的條件及現象


1. CANID沖突的條件


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


2. CANID沖突的現象


以CSM300為例進行說明,電路硬件簡易連接圖如圖4所示,用兩個上位機通過兩路串口同時給兩個相同配置的模塊發送一組數據,此時兩模塊會同時將RXD腳接收到的數據轉換至CAN總線端。因為兩個CAN節點的ID一樣,CAN總線仲裁失敗,兩發送節點收不到反饋信號,將一直發送最后一幀數據,此時CAN總線端的波形如圖5所示。


9.png

圖4 CSM300電路連接圖


1675243270872988.png

圖5 CAN總線波形圖


CSM系列如何避免CANID沖突


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


11.png

圖6 轉換方式選配圖


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


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


12.png

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


有效的自定義協議轉換串行幀包括了幀頭、幀尾、幀ID和幀長度等,用戶可通過改變串行幀數據來控制CAN幀ID,方便用戶在同一節點發送不同ID的CAN數據。同時用戶將在配置時固定幀頭和幀尾如圖8所示,此模式下用戶通過串行幀數據告知模塊串行幀的幀頭、幀尾和數據長度,故此轉換方式下可有效避免因串行幀間隔時間短造成的數據轉換錯誤的情況。


13.png

圖8 自定義轉換配置圖


來源:ZLG



免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。


推薦閱讀:


自主機器人的分布式傳感器

第三代半導體功率器件在汽車上的應用

應用為導向的混合式步進電機技術大大提升了電機的動態扭矩

種草氮化鎵充電器,幾個方面要注意

如何抑制藍牙音頻設備的噪聲和提升其音質?

特別推薦
技術文章更多>>
技術白皮書下載更多>>
熱門搜索
?

關閉

?

關閉

  • <center id="09kry"></center>

  • 主站蜘蛛池模板: 泸定县| 时尚| 北流市| 垫江县| 兴安盟| 曲阜市| 蒙山县| 扎兰屯市| 伊宁市| 巢湖市| 荔浦县| 沅江市| 丰原市| 云龙县| 边坝县| 无棣县| 澳门| 阿尔山市| 永嘉县| 休宁县| 昆山市| 健康| 万年县| 应用必备| 福安市| 喀什市| 曲周县| 宜川县| 略阳县| 沛县| 六安市| 兴山县| 小金县| 旬阳县| 香河县| 楚雄市| 政和县| 彝良县| 洛宁县| 蓬安县| 宁阳县|