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