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

邏輯電平輸出是什么意思
CAN總線的報文類型介紹
基于VB6.0 實現 CAN信號收發 Demo

CYT2BL和SDL v8.0.0是否有可能實現以相同ID發送和接收CAN報文(RxID、TxID)的功能?
TC3XX can發送報文,周期上下波動嚴重怎么解決?
試圖從CAN卡向TC375發送報文時,TC375始終收不到,為什么?
TSMaster 中不同總線報文消息過濾的操作方式

評論