在觀察CAN通信波形時,我們會發現差分電平在ACK段突然增高,這是什么原因導致的呢?本文結合測試實例對ACK電平偏高的原因做簡單分析。
?ACK簡介
ACK的作用:確認一幀報文是否正常接收。
以標準數椐幀為例,從結構上看分成7段,分別為起始段、仲裁段、控制段、數椐段、CRC校驗段、ACK應答段、幀結束段,如圖1所示:
圖1 標準數椐幀結構ACK段長度為2個位,包含應答間隙(ACK SLOT)和應答界定符(ACK DELIMITER)。在應答場里,發送站發送兩個“隱性”位。當接收器正確地接收到有效的報文,接收器就會在應答間隙(ACK SLOT)期間(發送ACK信號)向發送器發送一“顯性”的位以示應答。如圖2(CANScope測試的ACK段波形圖)所示:
圖2 ACK應答位結構
應答間隙:所有接收到匹配CRC序列(CRC SEQUENCE)的節點會在應答間隙(ACK SLOT)期間用一“顯性”的位寫入發送器的“隱性”位來作出回答,由于CAN總線線與的原理,只要總線上有一個節點正確接收到數據,則ACK SLOT就會被填入顯性電平。
ACK界定符:ACK界定符是ACK場的第二個位,并且是一個必須為“隱性”的位。因此,應答間隙(ACK SLOT)被兩個“隱性”的位所包圍,也就是CRC界定符(CRC DELIMITER)和ACK界定符(ACK DELIMITER)。
當一個接收節點接收的幀起始到CRC段之間的內容沒發生錯誤時,它將在ACK段發送一個顯性電平。如圖3所示:
圖3 ACK應答過程分析
?CAN總線ACK電平偏高原因分析
以使用ZLG致遠電子ZPS-CANFD測試某電車CAN網絡為例,20多個CAN節點采用手牽手方式組網,線兩端各接120歐電阻,通訊能夠正常,但差分信號波形應答位電平偏高較多,如圖4所示,從CANScope的波形圖中可以清楚的看到ACK電平突增。
圖4 CAN數椐幀波形分析
CAN總線通信存在異常?ACK應答有問題?——NO.
分析如下:
首先,我們看一款CAN收發器的典型內部結構圖,CANH、CANL連接總線。
圖5 CAN收發器的典型內部結構圖總線顯性時(邏輯為0),收發器內部Q1、Q2導通,CANH、CANL之間產生壓差;隱性時(邏輯為1),Q1、Q2截止,CANH、CANL處于無源狀態,壓差為0。
按照標準,在總線輸出為顯性時,CANH=3.5V,CANL=1.5V,差分分電平:CANH-CANL=2V,總線網絡電阻為60歐,流經終端電阻的電流約為33mA(2V/60歐);
然而,CAN收發器在輸出顯性時,CANH電平并不是標準的3.5V,而是5V(VCC)通過一個二極管降壓得到的,二極管的壓降由負載電流決定。圖6所示的VDH為CANH對應的二極管壓降,VDL為CANL對于的二極管壓降,流過的電流越大,二極管的壓降就越大。可知:
CANH的電壓=5V-VDHCANL的電壓=0V+VDL
圖6 AN收發器等效結構
在CAN總線網絡中,當一幀報文被各個節點接收時,在ACK階段,多個CAN節點同時響應(都發顯性),流過終端電阻的電流被各個CAN節點均分,那么平均到每個節點的電流就減小了,如下圖所示,VDH、VDL的壓降也減小,相應CANH-CANL的差分電壓就增大了,即ACK應答電平偏高。
圖7 CAN網絡等效結構
?ACK的意義
當CAN總線上只有一個節點可收發數據時,總線上因無接收節點在ACK SLOT時間內發送“顯性”位填充,而始終保持隱性,發送者會檢測到這個隱性位而知道發送失敗,此條報文需要重發。因此這個節點會一直重發數據直到發送成功或發送被取消。當總線上有多個CAN節點組網通信時,由于總線電平線與的原理,只要總線上有一個節點正確接收到數據,則ACK SLOT就會被填入顯性電平(此時認為數據幀發送成功),那么,接收錯誤的節點如何來告知發送者此次發送不成功呢?這就要用到CAN的錯誤幀,當一個接收節點收到錯誤數據時,它立即廣播發送一個錯誤幀,其它的節點和發送者也都會收到這個錯誤幀而丟掉此次報文,發送節點重新發送,這才是ACK 的意義。
?總結
作為國內CAN總線系統解決方案供應商,同時也是CIA協會在中國最主要的CAN總線技術傳播的窗口,目前廣州致遠電子的產品覆蓋了從分析診斷設備、接口轉換設備、到協議組網設備等全面系統的CAN總線產品家族,可為用戶提供完整的CAN總線解決方案。?
-
CAN總線
+關注
關注
145文章
1946瀏覽量
130728 -
接收器
+關注
關注
14文章
2468瀏覽量
71875 -
ACK
+關注
關注
0文章
28瀏覽量
11144
發布評論請先 登錄
相關推薦
評論