CAN總線是可以掛載多個控制單元,每個單元均可以發(fā)送和接收數(shù)據(jù),為了避免發(fā)生沖突,協(xié)議規(guī)定只有等信道空閑時刻優(yōu)先級高的單元才能占有總線并發(fā)送數(shù)據(jù),那么CAN單元是如何判斷優(yōu)先級的呢? CAN仲裁的實現(xiàn)方式1. CANID在CAN報文中的位置每一個CAN報文的CANID有唯一標識的11bit/29bit構成,以標準CAN幀為例,11bitCANID在CAN幀中的位置如圖1所示。SOF之后是Identifier,各個節(jié)點要外發(fā)的CANID通過CANID仲裁,優(yōu)先級高的報文被優(yōu)先發(fā)送。同時,對應節(jié)點優(yōu)先獲得CAN總線的使用權,而仲裁失敗的節(jié)點則停止數(shù)據(jù)的發(fā)送,轉而進行數(shù)據(jù)的接收,只能等待下一個SOF時刻再去仲裁。
圖1標準CAN數(shù)據(jù)幀格式
2. CAN總線仲裁機制的實現(xiàn)
那么CANID的優(yōu)先等級是如何判斷的呢?其實CAN總線ID仲裁方式相當于一個“線與”的結構,顯性(邏輯0)與隱形(邏輯1)相與變?yōu)轱@性即0&1=0,硬件電路簡圖可參考圖2。標準CAN幀格式的總線仲裁方式如圖3所示。因為高位在前,低位在后,故CAN標識符組成的數(shù)值越小優(yōu)先級越高。
圖2線與電路簡圖
圖3總線仲裁方式圖
CANID沖突發(fā)生的條件及現(xiàn)象1.CANID沖突的條件
本文以我司協(xié)議轉換模塊CSM300為例進行介紹,CSM300是集成微處理器、CAN-bus控制器、CAN-bus收發(fā)器、DC-DC轉換、高速數(shù)字隔離于一體的嵌入式CAN與UART/SPI雙向轉換模塊。如果我們將兩個ID均為00000000的CSM300模塊組成一個CAN總線網(wǎng)絡系統(tǒng),當這兩個ID相同的模塊同時往CAN總線端發(fā)送數(shù)據(jù)時將會造成仲裁失敗。
2. CANID沖突的現(xiàn)象
以CSM300為例進行說明,電路硬件簡易連接圖如圖4所示,用兩個上位機通過兩路串口同時給兩個相同配置的模塊發(fā)送一組數(shù)據(jù),此時兩模塊會同時將RXD腳接收到的數(shù)據(jù)轉換至CAN總線端。因為兩個CAN節(jié)點的ID一樣,CAN總線仲裁失敗,兩發(fā)送節(jié)點收不到反饋信號,將一直發(fā)送最后一幀數(shù)據(jù),此時CAN總線端的波形如圖5所示。圖4CSM300電路連接圖
圖5CAN總線波形圖
CSM系列如何避免CANID沖突為滿足不同環(huán)境的應用,CSM300系列和CSM100系列均有透明轉換、透明帶標識轉換、自定義協(xié)議轉換三種轉換方式供用戶選配,如圖6所示。
圖6轉換方式選配圖
透明轉換方式下用戶可通過MCU或上位機將模塊配置為不同的ID避免發(fā)生仲裁失敗的情況,透明轉換方式下,模塊無需對數(shù)據(jù)進行額外處理,最大限度地提高了數(shù)據(jù)轉換速度,也提高了緩沖區(qū)的利用率。不過此模式下每個模塊的CANID在配置完成后不能更改除非用戶再次配置,此外該模式下可能將兩組時間間隔接近的UART幀識別為一組數(shù)據(jù)進行轉換,造成數(shù)據(jù)轉換錯誤。
透明帶標識轉換方式下,用戶可以在配置時固定CANID在串行幀的位置和長度如圖7所示,通過改變串行幀數(shù)據(jù)來控制所發(fā)數(shù)據(jù)的CAN幀ID,方便用戶在同一節(jié)點發(fā)送不同ID的CAN數(shù)據(jù)。但是此模式下需要確保串行幀的時間間隔足夠大,避免模塊不能正確識別每組串行幀的結束造成數(shù)據(jù)轉換錯誤。透明帶標識模式下串行幀最小間隔具體要求可參考CSM100和CSM300的用戶手冊。
圖7透明帶標識轉換配置圖
有效的自定義協(xié)議轉換串行幀包括了幀頭、幀尾、幀ID和幀長度等,用戶可通過改變串行幀數(shù)據(jù)來控制CAN幀ID,方便用戶在同一節(jié)點發(fā)送不同ID的CAN數(shù)據(jù)。同時用戶將在配置時固定幀頭和幀尾如圖8所示,此模式下用戶通過串行幀數(shù)據(jù)告知模塊串行幀的幀頭、幀尾和數(shù)據(jù)長度,故此轉換方式下可有效避免因串行幀間隔時間短造成的數(shù)據(jù)轉換錯誤的情況。
圖8自定義轉換配置圖
-
CAN
+關注
關注
57文章
2774瀏覽量
464477 -
總線
+關注
關注
10文章
2905瀏覽量
88450
發(fā)布評論請先 登錄
相關推薦
基于Vector工具進行CAN協(xié)議錯誤幀的分析實踐
![基于Vector工具進行<b class='flag-5'>CAN</b><b class='flag-5'>協(xié)議</b>錯誤幀的分析實踐](https://file.elecfans.com/web2/M00/52/D4/pYYBAGLNkrKAeFJaAAAjXRuImx0496.png)
CAN總線的擴展功能及其應用
CAN總線應用領域 CAN總線協(xié)議解析
CAN總線與LIN總線的區(qū)別
CAN總線的主要優(yōu)勢與不足
CAN總線通信協(xié)議詳解
CAN總線在工業(yè)自動化中的應用
【CAN總線知識】全面了解CAN總線協(xié)議
![【<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>知識】全面了解<b class='flag-5'>CAN</b><b class='flag-5'>總線</b><b class='flag-5'>協(xié)議</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評論