1寫在前面
繼續為大家更新CAN總線協議相關內容,這些內容其實也比較重要,會直接影響到你后期CAN總線的編程,夸張一點的說會影響到你的軟件架構。
本文內容相對來說比較容易理解,初學者有必要了解一下。
2
位填充
位填充是為防止突發錯誤而設定的功能。當同樣的電平持續 5 位時則添加一個位的反型數據。
這個功能很好理解,如下圖所示。位填充的數據不需要編程控制,由控制器自動完成。其目的也是提高CAN總線的穩定性。
(1) 發送單元的工作
在發送數據幀和遙控幀時, SOF~CRC 段間的數據,相同電平如果持續 5 位,在下一個位(第 6 個位)則要插入 1 位與前 5 位反型的電平。
(2) 接收單元的工作
在接收數據幀和遙控幀時, SOF~CRC 段間的數據,相同電平如果持續 5 位,需要刪除下一個位(第 6 個位)再接收。如果這個第 6 個位的電平與前 5 位相同,將被視為錯誤并發送錯誤幀。
3
優先級的決定
前面講述“CAN 總線差分信號”時描述了顯性和隱性,其實這是CAN總線的特點,也是決定CAN總線優先級比較重要的功能。
在CAN總線空閑態,最先開始發送消息的單元獲得發送權。
多個單元同時開始發送時,各發送單元從仲裁段的第一位開始進行仲裁。連續輸出顯性電平最多的單元可繼續發送。
上圖描述了CAN控制仲裁的過程,單元2最終獲得了搶占CAN總線的權利,也就是說單元2具有更高的優先級。
當單元1 仲裁失利時,自動轉換為接收(本來該發送,優先級比別人低,就開始接收數據了。 同時,控制器將會在下一輪繼續發送這次未完成的數據)。
3.1 數據幀和遙控幀的優先級
具有相同 ID 的數據幀和遙控幀在總線上競爭時,仲裁段的最后一位(RTR)為顯性位的數據幀具有優先權,可繼續發送。
數據幀和遙控幀的仲裁過程如下圖:
3.2 標準格式和擴展格式的優先級
標準格式 ID 與具有相同 ID 的遙控幀或者擴展格式的數據幀在總線上競爭時,標準格式的 RTR 位為顯性位的具有優先權,可繼續發送。
提示:
不明白數據幀和遙控幀,標準格式和擴展格式之間差異的朋友,建議參看我上一篇文章《CANOpen系列教程04》。
4
其他
CAN總線協議的重要內容在這前面基本是講述的差不多了,還有一些不是很重要的內容,比如硬件設計需要在CAN_H和CAN_L之間添加一個120歐電阻,總線的傳輸距離等。
-
CAN
+關注
關注
57文章
2770瀏覽量
464390 -
CANopen
+關注
關注
8文章
270瀏覽量
43759 -
換位填充
+關注
關注
0文章
2瀏覽量
1707
發布評論請先 登錄
相關推薦
CAN總線與LIN總線的區別
freertos中斷優先級在哪設置
【CAN總線知識】CAN總線信號傳輸的位定時與位同步理論
![【<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'>位</b>定時與<b class='flag-5'>位</b><b class='flag-5'>同步</b>理論](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評論