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文章
2719瀏覽量
463377 -
CANopen
+關注
關注
8文章
249瀏覽量
43546 -
換位填充
+關注
關注
0文章
2瀏覽量
1688
發布評論請先 登錄
相關推薦
評論