一、CAN數據幀的標准格式和擴展格式
我們知道CAN總線上的數據幀都可以配置一個ID號,其可以為11位(標准ID格式)或者29位(擴展ID格式),這也是數據幀的標准格式和擴展格式的區別所在。
這個ID在CAN優先級中起着重要的作用,它決定了數據幀發送的優先級。對於優先級高的信息,可以給他打包上一個高優先級的ID,使它能夠及時的發送出去。
RTR:用於區分此幀是數據幀還是遙控幀,顯性電平(邏輯0)表示數據幀,隱性電平(邏輯1)表示遙控幀。
數據幀:包含了我們要傳輸的數據的幀,用於往總線上發送數據。
遙控幀:請求其它節點發出與本遙控幀具有相同ID號的數據幀。
比如:在某一個時刻,節點A向總線發送了一個ID號為0x01的遙控幀,那么就意味着節點A請求總線上的其他節點發送ID號為I0x01的數據幀。
假如節點B能夠發出ID號為0x01的數據幀,那么節點B就會在收到節點A發出的遙控幀之后,立刻向總線上發送ID號為0x01的數據幀。
SRR:只存在於擴展格式的幀當中,用於代替標准幀中此位置的RTR位,置為隱性電平即可。
IDE:用於區別標准格式還是擴展格式的數據幀,顯性電平表示標准格式(標准格式的SRR封裝在控制段中),隱性電平表示擴展格式。
二、總線如何根據ID號來仲裁報文的優先級
CAN總線有個特點是如果總線上同時出現顯性電平(邏輯0)和隱性電平(邏輯1),總線的狀態會被置為顯性電平。
假設現在有兩個節點同時發送報文(如下圖),總線仲裁的過程如下:
1、開始階段兩個節點發送的電平一樣,所以他們一起處於發送狀態。
2、到了某一時間,節點1發送了隱性電平,節點2發送的是顯性電平,這時由於上面介紹的CAN總線的特點,節點2競爭成功。
3、節點1隨之失去總線的占有權,轉為接收狀態,節點2持續處於發送狀態。