1寫在前面
繼續(xù)為大家更新CAN總線協(xié)議相關內(nèi)容,這些內(nèi)容其實也比較重要,會直接影響到你后期CAN總線的編程,夸張一點的說會影響到你的軟件架構。
本文內(nèi)容相對來說比較容易理解,初學者有必要了解一下。
2
位填充
位填充是為防止突發(fā)錯誤而設定的功能。當同樣的電平持續(xù) 5 位時則添加一個位的反型數(shù)據(jù)。
這個功能很好理解,如下圖所示。位填充的數(shù)據(jù)不需要編程控制,由控制器自動完成。其目的也是提高CAN總線的穩(wěn)定性。
(1) 發(fā)送單元的工作
在發(fā)送數(shù)據(jù)幀和遙控幀時, SOF~CRC 段間的數(shù)據(jù),相同電平如果持續(xù) 5 位,在下一個位(第 6 個位)則要插入 1 位與前 5 位反型的電平。
(2) 接收單元的工作
在接收數(shù)據(jù)幀和遙控幀時, SOF~CRC 段間的數(shù)據(jù),相同電平如果持續(xù) 5 位,需要刪除下一個位(第 6 個位)再接收。如果這個第 6 個位的電平與前 5 位相同,將被視為錯誤并發(fā)送錯誤幀。
3
優(yōu)先級的決定
前面講述“CAN 總線差分信號”時描述了顯性和隱性,其實這是CAN總線的特點,也是決定CAN總線優(yōu)先級比較重要的功能。
在CAN總線空閑態(tài),最先開始發(fā)送消息的單元獲得發(fā)送權。
多個單元同時開始發(fā)送時,各發(fā)送單元從仲裁段的第一位開始進行仲裁。連續(xù)輸出顯性電平最多的單元可繼續(xù)發(fā)送。
上圖描述了CAN控制仲裁的過程,單元2最終獲得了搶占CAN總線的權利,也就是說單元2具有更高的優(yōu)先級。
當單元1 仲裁失利時,自動轉換為接收(本來該發(fā)送,優(yōu)先級比別人低,就開始接收數(shù)據(jù)了。 同時,控制器將會在下一輪繼續(xù)發(fā)送這次未完成的數(shù)據(jù))。
3.1 數(shù)據(jù)幀和遙控幀的優(yōu)先級
具有相同 ID 的數(shù)據(jù)幀和遙控幀在總線上競爭時,仲裁段的最后一位(RTR)為顯性位的數(shù)據(jù)幀具有優(yōu)先權,可繼續(xù)發(fā)送。
數(shù)據(jù)幀和遙控幀的仲裁過程如下圖:
3.2 標準格式和擴展格式的優(yōu)先級
標準格式 ID 與具有相同 ID 的遙控幀或者擴展格式的數(shù)據(jù)幀在總線上競爭時,標準格式的 RTR 位為顯性位的具有優(yōu)先權,可繼續(xù)發(fā)送。
提示:
不明白數(shù)據(jù)幀和遙控幀,標準格式和擴展格式之間差異的朋友,建議參看我上一篇文章《CANOpen系列教程04》。
4
其他
CAN總線協(xié)議的重要內(nèi)容在這前面基本是講述的差不多了,還有一些不是很重要的內(nèi)容,比如硬件設計需要在CAN_H和CAN_L之間添加一個120歐電阻,總線的傳輸距離等。
接下來的文章會結合STM32芯片集成CAN控制器、例程講述如何編程控制CAN總線數(shù)據(jù)的收發(fā)等。
-
CAN
+關注
關注
57文章
2919瀏覽量
467759 -
CANopen
+關注
關注
8文章
402瀏覽量
44868 -
換位填充
+關注
關注
0文章
2瀏覽量
1757
發(fā)布評論請先 登錄
CAN總線傳播延遲過大導致通信異常現(xiàn)象解析

ADL5308可以通過軟件和硬件配置的參數(shù),配置的優(yōu)先級是什么?
CAN總線采樣點不一致的危害
CyU3PDebugPrint的最高優(yōu)先級和最低優(yōu)先級是什么?
【手把手教你玩轉CAN總線】從原理到STM32實戰(zhàn)
基于Vector工具進行CAN協(xié)議錯誤幀的分析實踐

CAN總線的擴展功能及其應用
CAN總線與LIN總線的區(qū)別
CAN總線通信中的數(shù)據(jù)幀結構解析
CAN總線通信協(xié)議詳解
CH32V103 使用中斷優(yōu)先級分組0時報錯
在汽車區(qū)域模塊中使用理想二極管的優(yōu)先級電源多路復用器

freertos中斷優(yōu)先級在哪設置
【CAN總線知識】CAN總線信號傳輸?shù)?b class='flag-5'>位定時與位同步理論

評論