《電子技術應用》
您所在的位置:首頁 > 測試測量 > 業(yè)界動態(tài) > CAN為什么會發(fā)送失敗

CAN為什么會發(fā)送失敗

2017-07-21
來源:ZLG致遠電子

  CAN總線調試過程中出現報文發(fā)送失敗,,很多工程師都對此只知其一不知其二,,這里就CAN報文發(fā)送失敗的問題我們來做一次探討,。

  在了解CAN報文為什么會發(fā)送失敗之前我們先看看一條正確的CAN報文到底應該是怎么樣的,表1是一個正常標準數據幀的報文組成,。

  表 1  標準數據幀報文格式組成

1.png

2.png

  圖 1  標準數據幀格式

  CAN總線是一種基于廣播的通訊方式,,為了保證總線上的每一個正常節(jié)點都能正確的接收到報文,報文的發(fā)送者要求每一個接收節(jié)點在報文發(fā)送結束前要作出應答,,這也是報文里ACK存在的原因,。

  一幀CAN報文中ACK段長度為2個位,包含應答間隙(ACK Slot)和應答界定符(ACK Delimter),。在應答場里,,發(fā)送站發(fā)送兩個隱性位。當接收器正確地接收到有效的報文,,接收器就會在應答間隙(ACK Slot)期間(發(fā)送ACK信號)向發(fā)送器發(fā)送一“顯性”的位以示應答,。

  應答間隙:所有接收到匹配CRC序列(CRC SEQUENCE)的站會在應答間隙(ACK Slot)期間用一顯性的位寫入發(fā)送器的隱性位來作出回答。

  應答界定符:ACK界定符是ACK場的第二個位,,并且是一個必須為隱性的位,。因此,應答間隙(ACK Slot)被兩個隱性的位所包圍,,也就是CRC界定符(CRC Delimter)和ACK界定符(ACK Delimter),。

3.png

  圖 2  正常ACK段報文

  而如果總線上沒有ACK應答(即應答間隙為隱性),發(fā)送器就會發(fā)送一個錯誤標志,,并且發(fā)送錯誤計數器值加8,,節(jié)點就會對報文進行自動重發(fā),若自動重發(fā)依然收不到ACK,,則在發(fā)送錯誤計數器計數滿128后(即出現16幀錯誤幀),,由錯誤主動轉為錯誤被動狀態(tài),如圖3所示,。

  那導致ACK段出錯的原因有哪些呢,?

  l總線上只有一個有效節(jié)點:發(fā)送報文的節(jié)點在發(fā)送出一幀報文后會檢測總線上應答間隙的狀態(tài),如果檢測到應答間隙為隱性位,則表示該幀報文沒有得到ACK,,發(fā)送失敗,需要重發(fā),,而由于發(fā)送錯誤計數器會在發(fā)送失敗后累加,,直到該節(jié)點關閉。所以,,當總線上只有一個有效節(jié)點時,,這個節(jié)點是發(fā)不出去數據的,因為它所發(fā)出的數據幀中的ACK Slot沒有另外一個節(jié)點來填充,,將永遠是隱性位,,這個節(jié)點會一直重發(fā)數據直到發(fā)送成功或發(fā)送被取消。

  l波特率不匹配或者節(jié)點沒有初始化,,導致沒有ACK,;

  l總線線纜短路,斷路,,接反,;

  l高速CAN總線上接的節(jié)點不是高速CAN,而是容錯低速CAN,,導致不匹配,。

4.png

  圖 3  應答界定符錯誤幀

5.png

  圖 4  沒有ACK的報文

  當你在調試CAN總線時出現節(jié)點發(fā)送報文失敗的情況時,一定要檢查是不是以上幾點疏漏導致你的總線上ACK異常,。而借助恰當的儀器,,可以在查找CAN總線錯誤時事半功倍。圖4即采用致遠電子的CANScope來對錯誤幀進行標記,,同時找到錯誤幀對應的波形來查找出錯誤情況,。CANScope還可以對CAN總線物理層、數據鏈路層,、應用層做一系列的測試,,為CAN工程師解決測試難題。

6.png

  圖 5  CANScope測試項目


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