<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò )與存儲 > 設計應用 > CAN為什么會(huì )發(fā)送失敗

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

作者:ZLG致遠電子 時(shí)間:2017-07-20 來(lái)源:電子產(chǎn)品世界 收藏

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

本文引用地址:http://dyxdggzs.com/article/201707/361999.htm

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

    

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

    

  圖 1 標準數據幀格式

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

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

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

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

    

  圖 2 正常ACK段報文

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

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

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

  波特率不匹配或者節點(diǎn)沒(méi)有初始化,導致沒(méi)有ACK;

  總線(xiàn)線(xiàn)纜短路,斷路,接反;

  高速CAN總線(xiàn)上接的節點(diǎn)不是高速CAN,而是容錯低速CAN,導致不匹配。

    

  圖 3 應答界定符錯誤幀

    

  圖 4 沒(méi)有ACK的報文

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

    

  圖 5 CANScope測試項目



關(guān)鍵詞: CAN ACK

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>