CAN總線幾種正常的“異常”波形
一、CAN-bus信號(hào)產(chǎn)生原理
眾所周知,一個(gè)標(biāo)準(zhǔn)CAN節(jié)點(diǎn)由微處理器、控制器、收發(fā)器構(gòu)成。多個(gè)節(jié)點(diǎn)成總線型架構(gòu)掛在一起,兩個(gè)端節(jié)點(diǎn)上并有終端電阻。其結(jié)構(gòu)簡(jiǎn)圖如下圖所示。
圖1 CAN-bus節(jié)點(diǎn)網(wǎng)絡(luò)結(jié)構(gòu)
可以看出,與總線直接相連的是CAN節(jié)點(diǎn)的收發(fā)器,起內(nèi)部電路等效如下圖所示,CAN-H、CAN-L直接由三極管驅(qū)動(dòng),近似可以看成電流型輸出。結(jié)合上文所述網(wǎng)絡(luò)架構(gòu)中的終端電阻,節(jié)點(diǎn)發(fā)出信號(hào)時(shí)電流流過(guò)終端電阻產(chǎn)生電壓信號(hào),當(dāng)同一時(shí)間多個(gè)節(jié)點(diǎn)同時(shí)發(fā)出信號(hào)時(shí)就會(huì)使總線上的電流高于單一節(jié)點(diǎn)發(fā)出的電流,使得我們觀察電壓信號(hào)時(shí)出現(xiàn)突增的現(xiàn)象。
圖2 CAN收發(fā)器結(jié)構(gòu)
CAN-bus是總線型結(jié)構(gòu),通常狀態(tài)下一般只有一個(gè)節(jié)點(diǎn)占有總線。那么有幾種情況會(huì)導(dǎo)致多個(gè)節(jié)點(diǎn)同時(shí)發(fā)出,進(jìn)而導(dǎo)致幅值出現(xiàn)“異常”呢,下文通過(guò)致遠(yuǎn)電子CANScope分析儀的幾個(gè)測(cè)試案例總結(jié)一下。
二、應(yīng)答位上的幅值“異常”
最常見(jiàn)的,當(dāng)CAN網(wǎng)絡(luò)上存在3個(gè)以上的節(jié)點(diǎn)時(shí),應(yīng)答位上的幅值要明顯高于同一報(bào)文的其他位置,如下圖所示??梢钥吹綀?bào)文在ID段、數(shù)據(jù)段、CRC校驗(yàn)段處的幅值均比較一致,但是到應(yīng)答位處時(shí)幅值出現(xiàn)突增。這是為什么呢,大家都知道CAN-bus總線擁有自動(dòng)應(yīng)答機(jī)制,即當(dāng)某一節(jié)點(diǎn)發(fā)送完一幀報(bào)文時(shí),所有總線中的其余非只聽(tīng)節(jié)點(diǎn)均會(huì)在應(yīng)答位處做出響應(yīng),如果報(bào)文被成功識(shí)別則發(fā)出一個(gè)顯性位做為應(yīng)答信號(hào)。
結(jié)合上文所述,應(yīng)答位此時(shí)CAN總線上的電流是若干節(jié)點(diǎn)電流疊加的綜合,所以應(yīng)答位的幅值高就很容易講通了。
圖3 應(yīng)答位上的幅值“異常”
三、ID段上的幅值“異常”
CAN-bus總線的一大特點(diǎn)就是多主結(jié)構(gòu),即網(wǎng)絡(luò)中所有節(jié)點(diǎn)功能對(duì)等,沒(méi)有主從機(jī)的概念,所有節(jié)點(diǎn)均可自由收發(fā)數(shù)據(jù)。保證多主結(jié)構(gòu)得以實(shí)現(xiàn)的關(guān)鍵在于CAN總線的仲裁機(jī)制也稱(chēng)優(yōu)先級(jí)機(jī)制。當(dāng)網(wǎng)絡(luò)中同時(shí)有多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí)會(huì)在ID段處產(chǎn)生仲裁,優(yōu)先級(jí)高的節(jié)點(diǎn)會(huì)最終占有總線。
如下圖所示,可以看到在圖中的標(biāo)記處波形出現(xiàn)了“臺(tái)階”。正是由于在“臺(tái)階”出現(xiàn)前有兩個(gè)節(jié)點(diǎn)同時(shí)發(fā)出數(shù)據(jù),導(dǎo)致幅值增高,在“臺(tái)階”處某一節(jié)點(diǎn)由于優(yōu)先級(jí)高占有總線,另一個(gè)節(jié)點(diǎn)暫時(shí)退出,使得幅值又回歸平常。
圖4 ID段上的幅值異常
四、錯(cuò)誤幀上的幅值“異常”
再看看這個(gè)案例,可以看到在波形的后半部分也出現(xiàn)了臺(tái)階式的幅值增高,光標(biāo)卡住的顯性電平區(qū)間可以看到寬度明顯超過(guò)了5個(gè)標(biāo)準(zhǔn)位寬,按照CAN總線的位填充規(guī)則(不能存在連續(xù)六個(gè)相同的顯性位或隱性位)表明這是一條錯(cuò)誤幀。但是不要誤會(huì),并不是因?yàn)檫@個(gè)幅值“異常”而導(dǎo)致的錯(cuò)誤幀,我們知道CAN總線有錯(cuò)誤重發(fā)機(jī)制,以保證總線傳輸數(shù)據(jù)的可靠性。這種可靠性正式通過(guò)錯(cuò)誤幀的“一票否決制”實(shí)現(xiàn)的。
當(dāng)網(wǎng)絡(luò)中某一節(jié)點(diǎn)識(shí)別到一條認(rèn)為是有問(wèn)題的報(bào)文后會(huì)發(fā)送六個(gè)連續(xù)的顯性位(即錯(cuò)誤幀),投出這一否決票通知網(wǎng)絡(luò)上所有其他節(jié)點(diǎn),本條報(bào)文無(wú)效。此后其他節(jié)點(diǎn)會(huì)以“跟票”的形式全部發(fā)出六個(gè)顯性位錯(cuò)誤幀。所以此時(shí)多個(gè)節(jié)點(diǎn)重疊部分的錯(cuò)誤幀的幅值就會(huì)高一些了。
圖5 錯(cuò)誤幀上的幅值異常
評(píng)論