CAN總線通訊是我們每天都會使用的工業通訊總線,工程師更多的是關注報文是否能夠正常接收,解析結果是否正確。卻忽略了CAN總線的報文是怎么產生以及收發的,所以遇到通訊異常的問題時就會無從下手。那么這篇文章將會帶您快速了解報文的傳輸原理。
一、節點通訊的原理
圖1CAN節點示意圖
如圖1所示是一個CAN節點的示意圖,整體包括了CAN收發器、CAN控制器和MCU。我們以節點發送報文為例,當我們使用上位機軟件發送一段報文時,報文會通過MCU發送給CAN控制器。CAN控制器將這段報文解析成邏輯信號后,再發送給CAN收發器。CAN收發器根據CAN-bus標準將接收到的邏輯信號轉換成電信號,再通過CAN_H和CAN_L兩根總線將電信號傳到總線上的其他節點上。
簡單說就是MCU將報文發送給控制器,控制器將報文轉換成符合規范的CAN報文后,通過CAN收發器以電信號的形式在總線上進行傳輸。
二、電平是如何轉換成邏輯?
圖2CAN-bus信號電平
如圖2所示,CAN總線使用的是雙線差分信號,所以分為CAN_H和CAN_L兩根總線,根據兩根總線之間電壓的差值大小來判斷其顯隱性。而線纜上傳輸的電平信號只有兩種可能,分別為顯性電平和隱性電平,其中顯性電平代表邏輯 0,隱性電平代表邏輯 1。
當接受到報文時,首先就要通過CAN收發器將電信號轉換成邏輯信號。根據圖3所示的ISO11898高速CAN電平標準進行判斷,但是線路上經常會受到各種干擾,為了保證傳輸的穩定性。所以差分電平小于0.5V就是隱性電平代表邏輯1,差分電平大于0.9V就是顯性電平代表邏輯0。
圖3ISO11898高速CAN電平
三、邏輯信號如何轉換成報文?
CAN控制器是CAN-bus設備的核心元件,集成了CAN規范中數據鏈路層的全部功能,能夠自動完成CAN-bus協議的解析。
當CAN收發器將邏輯信號傳送給CAN控制器后,CAN控制器會將邏輯信號轉換成符合CAN規范的CAN幀。而CAN幀的類型包括了數據幀、遠程幀、幀間空間、錯誤幀和超載幀。
圖 4標準幀格式
以最常見的數據幀為例,圖4就是標準幀的格式,包括了幀起始、仲裁場、控制場、數據場等。
圖5報文解析實例
圖5就是報文解析的實例,當接受到對應的邏輯信號后,CAN控制器就會根據規定的CAN幀格式進行解析,并將報文發給MCU。
四、上位機報文顯示
圖 6上位機報文顯示
如圖6所示,當CAN控制器完成了CAN-bus協議的解析后,就會將報文傳輸到MCU中在上位機軟件中進行顯示。像幀起始、CRC場、ACK場這樣的數據不讀取,所以我們上位機軟件只顯示數據幀類型、幀ID和幀數據等信息。
總結:
對于CAN總線報文錯誤來說,百分之九十的錯誤都來自于物理層,而CANScope總線分析儀可以對CAN 波形與報文同步發送和接收,快速對CAN總線進行各項測試,幫助工程師們快速完成故障定位和問題排查。
-
電平
+關注
關注
5文章
360瀏覽量
39883 -
總線
+關注
關注
10文章
2878瀏覽量
88051
發布評論請先 登錄
相關推薦
評論