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