CAN-bus的可靠性很高,但是在某些情況下還是發(fā)生錯誤,為了使數(shù)據能夠在總線上可靠傳輸,CAN-bus規(guī)范對各類幀的格式、用途及發(fā)送時機都進行了詳細的規(guī)定。并實現(xiàn)在CAN控制器中自動完成幀格式處理及校驗等工作,一旦錯誤被檢測,正在傳送的數(shù)據幀將會立即停止而待總線空閑時再次重發(fā)直至發(fā)送成功,該過程并不需要CPU的干涉除非錯誤累計該發(fā)送器退隱(Bus off)。
CAN-bus的可靠性很高,但是在某些情況下還是發(fā)生錯誤,為了使數(shù)據能夠在總線上可靠傳輸,CAN-bus規(guī)范對各類幀的格式、用途及發(fā)送時機都進行了詳細的規(guī)定。下面我們來總結下在CAN通訊中會出現(xiàn)哪些錯誤。
圖一
位錯誤:發(fā)送節(jié)點在發(fā)送數(shù)據的同時也會對發(fā)出的比特流采樣回收,如果監(jiān)測到總線電平與正在發(fā)送的電平不符,將會發(fā)生位錯誤(Bit Check Error);
位填充錯誤:為解決異步串行通訊中共有的缺點——各節(jié)點通訊時鐘不同步,CAN-bus采用了一種同步的方式,規(guī)定每隔5個位的時間長度進行一次同步,當傳輸信號連續(xù)5個位是相同的,就要插入一個點評相反的位(稱為“填充位”),如果電纜上傳輸?shù)男盘柌粷M足這一規(guī)則,則會出現(xiàn)填充位錯誤(Bit Stuff Error);
CRC錯誤:發(fā)送端發(fā)送的CRC值由發(fā)送器計算得出,接收器采用同樣的CRC算法,計算出接收端CRC值,若接收器計算的CRC值與接收到的CRC值不符,將會產生該類錯誤(CRC Error);
格式錯誤:當傳輸?shù)臄?shù)據幀格式與任何一種合法的幀格式不符時會發(fā)生該類格式錯誤(frame Check Error);