《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 快速讀懂CAN-bus節(jié)點(diǎn)的錯誤處理規(guī)則

快速讀懂CAN-bus節(jié)點(diǎn)的錯誤處理規(guī)則

2016-10-27
來源:ZLG致遠(yuǎn)電子
關(guān)鍵詞: CAN-bus CPU 電纜 發(fā)送器

  CAN-bus的可靠性很高,但是在某些情況下還是發(fā)生錯誤,為了使數(shù)據(jù)能夠在總線上可靠傳輸,CAN-bus規(guī)范對各類幀的格式、用途及發(fā)送時機(jī)都進(jìn)行了詳細(xì)的規(guī)定。并實(shí)現(xiàn)在CAN控制器中自動完成幀格式處理及校驗(yàn)等工作,一旦錯誤被檢測,正在傳送的數(shù)據(jù)幀將會立即停止而待總線空閑時再次重發(fā)直至發(fā)送成功,該過程并不需要CPU的干涉除非錯誤累計該發(fā)送器退隱(Bus off)。

  CAN-bus的可靠性很高,但是在某些情況下還是發(fā)生錯誤,為了使數(shù)據(jù)能夠在總線上可靠傳輸,CAN-bus規(guī)范對各類幀的格式、用途及發(fā)送時機(jī)都進(jìn)行了詳細(xì)的規(guī)定。下面我們來總結(jié)下在CAN通訊中會出現(xiàn)哪些錯誤。

1.png

  圖一

  位錯誤:發(fā)送節(jié)點(diǎn)在發(fā)送數(shù)據(jù)的同時也會對發(fā)出的比特流采樣回收,如果監(jiān)測到總線電平與正在發(fā)送的電平不符,將會發(fā)生位錯誤(Bit Check Error);

  位填充錯誤:為解決異步串行通訊中共有的缺點(diǎn)——各節(jié)點(diǎn)通訊時鐘不同步,CAN-bus采用了一種同步的方式,規(guī)定每隔5個位的時間長度進(jìn)行一次同步,當(dāng)傳輸信號連續(xù)5個位是相同的,就要插入一個點(diǎn)評相反的位(稱為“填充位”),如果電纜上傳輸?shù)男盘柌粷M足這一規(guī)則,則會出現(xiàn)填充位錯誤(Bit Stuff Error);

  CRC錯誤:發(fā)送端發(fā)送的CRC值由發(fā)送器計算得出,接收器采用同樣的CRC算法,計算出接收端CRC值,若接收器計算的CRC值與接收到的CRC值不符,將會產(chǎn)生該類錯誤(CRC Error);

  格式錯誤:當(dāng)傳輸?shù)臄?shù)據(jù)幀格式與任何一種合法的幀格式不符時會發(fā)生該類格式錯誤(Frame Check Error);

  應(yīng)答錯誤:如果在ACK段發(fā)送節(jié)點(diǎn)沒有接收到接收節(jié)點(diǎn)發(fā)出的應(yīng)答(顯性位),將發(fā)生應(yīng)答錯誤(Acknowledgment Error),所以當(dāng)單個節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀時會發(fā)生該類錯誤。

  錯誤幀在總線信號傳輸中起著信號燈的作用,接收和發(fā)送過程中如果檢測到通信出錯,便會發(fā)送錯誤幀,錯誤幀由錯誤標(biāo)識符以及錯誤界定符構(gòu)成。其中錯誤標(biāo)識符分為兩種:“主動錯誤”和“被動錯誤”。

  主動錯誤狀態(tài)下,只要檢查到錯誤,它立即“主動地”發(fā)出錯標(biāo)識。所謂“出錯標(biāo)識“,它本身就是一個“錯誤的位序列”(連續(xù)的6個顯性位,不滿足CAN協(xié)議的“最多5個連續(xù)的同性位”要求),目的是“主動地”告訴大家:即使你們沒有發(fā)現(xiàn)“剛才我已發(fā)現(xiàn)”的錯誤,現(xiàn)在我“以身作則”出錯啦!你們該看到這個錯誤了吧!

  如果處于被動狀態(tài)下,檢查到錯誤,它只能干瞪眼“被動地”等別人(主動報錯站點(diǎn))報錯,等待的時候它可不能去動總線,直到識別出由主動報錯站點(diǎn)發(fā)出 的“錯誤的位序列”,它才松了一口氣:有人正式報錯了!然后他就可以去競爭總線,該干啥干啥。

  為了避免某個設(shè)備因?yàn)樽陨碓颍ɡ缬布p壞)導(dǎo)致無法正常收發(fā)數(shù)據(jù)而不斷地破壞數(shù)據(jù)幀,從而影響其他正常節(jié)點(diǎn)通訊,CAN-bus規(guī)范中規(guī)定每個CAN控制器都有一個發(fā)送錯誤計數(shù)器和一個接收計數(shù)器。根據(jù)計數(shù)值不同CAN節(jié)點(diǎn)會處于不同的設(shè)備狀態(tài),狀態(tài)之間的轉(zhuǎn)換關(guān)系見下圖:

2.png

  圖二


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。