簡明易懂教程-磁致伸縮位移傳感器CAN總線
每組報(bào)文開頭的11 位字符為標(biāo)識(shí)符,定義了報(bào)文的優(yōu)先級(jí),這種報(bào)文格式成為面向內(nèi)容的編制方案。同一系統(tǒng)中標(biāo)識(shí)符是唯一的,不可能有兩個(gè)站發(fā)送具有相同標(biāo)識(shí)符的報(bào)文,當(dāng)幾個(gè)站同時(shí)競爭總線讀取時(shí),這種配置十分重要。
在我看到的很多文章里,有很多顯性和隱性的地方,為此我頭痛不已,最終我把它們徹底弄明白了。
這個(gè)靜電平狀態(tài)就是隱形狀態(tài),也稱隱性電平,也就是沒有任何干擾的時(shí)候的狀態(tài)稱為隱性狀態(tài)。當(dāng)有信號(hào)修改時(shí),CAN_High 線上的電壓值變高了,一般來說會(huì)升高至少1V;而CAN_Low 線上的電壓值會(huì)降低一個(gè)同樣值,也是1v。
在隱性狀態(tài)下,CAN_High 線與CAN_Low 沒有電壓差,這樣我們看到?jīng)]有任何變化也就檢測不到信號(hào)。但是在顯性狀態(tài)時(shí),改值最低為2V,我們就可以利用這種變化才傳輸數(shù)據(jù)了。所以出現(xiàn)了那些幀,那些幀中的場,那些場中的位,云云~~~~~~~~~~~
一般來說,控制單元通過收發(fā)器連接到 CAN 驅(qū)動(dòng)總線上,這個(gè)收發(fā)器(顧名思義,可發(fā)送,可接收)內(nèi)有一個(gè)接收器,該接收器是安裝在接收一側(cè)的差動(dòng)信號(hào)放大器。然后,這個(gè)放大器很自然地就放大了CAN_High 和CAN_Low 線的電平差,然后傳到接收區(qū).
由此可知,當(dāng)有電壓差,差動(dòng)信號(hào)放大器放大傳輸,將相應(yīng)的數(shù)據(jù)位轉(zhuǎn)化為0。
所謂報(bào)文,就是CAN 總線上要傳輸?shù)臄?shù)據(jù)報(bào),為了安全,我們要給我們傳輸?shù)?span style="padding: 0px; margin: 0px; -webkit-tap-highlight-color: transparent; box-sizing: border-box;">數(shù)據(jù)報(bào)編碼定一下協(xié)議,這樣才能不容易出錯(cuò),所以出現(xiàn)了很多的幀,以及仲裁啊,CRC 效驗(yàn)。這些都是難點(diǎn)。
識(shí)別符的概念
CAN 的報(bào)文格式有兩種,不同之處其實(shí)就是識(shí)別符長度不同,具有11 位識(shí)別符的幀稱為標(biāo)準(zhǔn)幀,而還有29 位識(shí)別符的幀為擴(kuò)展幀,CAN 報(bào)文有以下4 個(gè)不同的幀類型。分別是:
(2) 遠(yuǎn)程幀:總線節(jié)點(diǎn)發(fā)出遠(yuǎn)程幀,請求發(fā)送具有同一標(biāo)識(shí)符的數(shù)據(jù)幀;
(4) 過載幀:過載幀用已在先行的后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時(shí)。
我們先研究數(shù)據(jù)幀吧。
這里的位場,就是不同位的組合,這名字起的很爛,讓人看了感覺很抽象。我們來看看這些個(gè)不同的位場吧。一開始是一位幀起始,也叫SOF。它用顯性位表示,也就是0;它告訴我們,兩個(gè)線上有電壓差了,也就是有數(shù)據(jù)了。

然后下一個(gè)場是仲裁場。這個(gè)仲裁很抽象,其實(shí)在這里就是為了解決一個(gè)問題。如果2 個(gè)或2 個(gè)以上的單元同時(shí)開始傳送報(bào)文,那么就會(huì)有總線訪問沖突,那么仲裁機(jī)制就是用來根據(jù)標(biāo)識(shí)符優(yōu)先級(jí)來一個(gè)一個(gè)的去掉低級(jí)別的數(shù)據(jù)。我們可以詳細(xì)的描述這場生動(dòng)的爭搶總線的戰(zhàn)斗。
首先搞明白兩點(diǎn),
二、當(dāng)隱性碰到顯性,就變?yōu)轱@性。
為什么呢,因?yàn)锳 節(jié)點(diǎn)同時(shí)發(fā)出顯性位,讓總線也變成顯性了,也就是0。節(jié)點(diǎn)B 會(huì)退出發(fā)送處于單純監(jiān)聽方式而不發(fā)送數(shù)據(jù);節(jié)點(diǎn)A 成功發(fā)送仲裁位從而獲得總線的控制權(quán),繼而發(fā)送全部消息。
在獲得總線控制權(quán)的節(jié)點(diǎn)發(fā)送數(shù)據(jù)過程中,其他節(jié)點(diǎn)成為報(bào)文的接收節(jié)點(diǎn),并且不會(huì)在總線再次空閑之前發(fā)送報(bào)文,在這逐位的比較中,最終節(jié)點(diǎn)B 因?yàn)榈谄呶坏钠顏G掉了總線。從此單純監(jiān)聽,江山就拱手讓給了節(jié)點(diǎn)A 了。這就是仲裁機(jī)制
但在擴(kuò)展格式里,包括29 位識(shí)別符、SRR 位、IDE 位、RTR 位。
我暈,為什么這么搞呢,不急,先留著這個(gè)問題。
這時(shí)候,標(biāo)準(zhǔn)幀的RTR 為顯性,而擴(kuò)展幀SRR 為隱性,這樣,總線自然就被標(biāo)準(zhǔn)幀占據(jù)。
對于擴(kuò)展格式,IDE位屬于仲裁場;對于標(biāo)準(zhǔn)格式,IDE位屬于控制場。標(biāo)準(zhǔn)格式的IDE位為“顯性”,而擴(kuò)展格式的IDE

控制場結(jié)構(gòu)
數(shù)據(jù)場
循環(huán)冗余碼CRC場
CRC場包括CRC序列(CRC Sequence),其后是CRC界定符(CRC Delimiter),結(jié)構(gòu)如圖:

任意一個(gè)由二進(jìn)制位串組成的代碼都可以和一個(gè)系數(shù)僅為‘0’和‘1’取值的多項(xiàng)式一一對應(yīng)。例如:代碼1010111 對應(yīng)的多項(xiàng)式為x6+x4+x2+x+1,而多項(xiàng)式為x5+x3+x2+x+1 對應(yīng)的代碼101111。
要傳輸?shù)男畔⑿蛄袨?101,在末尾添加所給多項(xiàng)式的最高次階個(gè)0,如本題為x^3,則添加3個(gè)0,變?yōu)椋?101000;
應(yīng)答場長度為2個(gè)位,包含應(yīng)答間隙(ACK Slot)和應(yīng)答界定符(ACK Delimiter),如圖所示。在ACK場(應(yīng)答場)里,發(fā)送節(jié)點(diǎn)發(fā)送兩個(gè)“隱性”位。














管理員
該內(nèi)容暫無評(píng)論