應(yīng)答錯誤:如果在ACK段發(fā)送節(jié)點沒有接收到接收節(jié)點發(fā)出的應(yīng)答(顯性位),將發(fā)生應(yīng)答錯誤(Acknowledgment Error),所以當(dāng)單個節(jié)點發(fā)送數(shù)據(jù)幀時會發(fā)生該類錯誤。
錯誤幀在總線信號傳輸中起著信號燈的作用,接收和發(fā)送過程中如果檢測到通信出錯,便會發(fā)送錯誤幀,錯誤幀由錯誤標識符以及錯誤界定符構(gòu)成。其中錯誤標識符分為兩種:“主動錯誤”和“被動錯誤”。
主動錯誤狀態(tài)下,只要檢查到錯誤,它立即“主動地”發(fā)出錯標識。所謂“出錯標識“,它本身就是一個“錯誤的位序列”(連續(xù)的6個顯性位,不滿足CAN協(xié)議的“最多5個連續(xù)的同性位”要求),目的是“主動地”告訴大家:即使你們沒有發(fā)現(xiàn)“剛才我已發(fā)現(xiàn)”的錯誤,現(xiàn)在我“以身作則”出錯啦!你們該看到這個錯誤了吧!
如果處于被動狀態(tài)下,檢查到錯誤,它只能干瞪眼“被動地”等別人(主動報錯站點)報錯,等待的時候它可不能去動總線,直到識別出由主動報錯站點發(fā)出 的“錯誤的位序列”,它才松了一口氣:有人正式報錯了!然后他就可以去競爭總線,該干啥干啥。
為了避免某個設(shè)備因為自身原因(例如硬件損壞)導(dǎo)致無法正常收發(fā)數(shù)據(jù)而不斷地破壞數(shù)據(jù)幀,從而影響其他正常節(jié)點通訊,CAN-bus規(guī)范中規(guī)定每個CAN控制器都有一個發(fā)送錯誤計數(shù)器和一個接收計數(shù)器。根據(jù)計數(shù)值不同CAN節(jié)點會處于不同的設(shè)備狀態(tài),狀態(tài)之間的轉(zhuǎn)換關(guān)系見下圖: