<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ú)線(xiàn)通信 > 設計應用 > CAN為什么會(huì )發(fā)送失敗?

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

作者: 時(shí)間:2018-07-27 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/201807/384317.htm

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

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

圖 1 標準數據幀格式

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

一幀CAN報文中ACK段長(cháng)度為2個(gè)位,包含應答間隙(ACK 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 總線(xiàn)調試 報文

評論


相關(guān)推薦

技術(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>