【CAN基礎(chǔ)】電平、邏輯、報(bào)文是怎么來的
CAN總線通訊是我們每天都會(huì)使用的工業(yè)通訊總線,工程師更多的是關(guān)注報(bào)文是否能夠正常接收,解析結(jié)果是否正確。卻忽略了CAN總線的報(bào)文是怎么產(chǎn)生以及收發(fā)的,所以遇到通訊異常的問題時(shí)就會(huì)無從下手。那么這篇文章將會(huì)帶您快速了解報(bào)文的傳輸原理。
本文引用地址:http://butianyuan.cn/article/201904/399979.htm一、節(jié)點(diǎn)通訊的原理
圖1 CAN節(jié)點(diǎn)示意圖
如圖1所示是一個(gè)CAN節(jié)點(diǎn)的示意圖,整體包括了CAN收發(fā)器、CAN控制器和MCU。我們以節(jié)點(diǎn)發(fā)送報(bào)文為例,當(dāng)我們使用上位機(jī)軟件發(fā)送一段報(bào)文時(shí),報(bào)文會(huì)通過MCU發(fā)送給CAN控制器。CAN控制器將這段報(bào)文解析成邏輯信號(hào)后,再發(fā)送給CAN收發(fā)器。CAN收發(fā)器根據(jù)CAN-bus標(biāo)準(zhǔn)將接收到的邏輯信號(hào)轉(zhuǎn)換成電信號(hào),再通過CAN_H和CAN_L兩根總線將電信號(hào)傳到總線上的其他節(jié)點(diǎn)上。
簡單說就是MCU將報(bào)文發(fā)送給控制器,控制器將報(bào)文轉(zhuǎn)換成符合規(guī)范的CAN報(bào)文后,通過CAN收發(fā)器以電信號(hào)的形式在總線上進(jìn)行傳輸。
二、電平是如何轉(zhuǎn)換成邏輯?
圖2 CAN-bus信號(hào)電平
如圖2所示,CAN總線使用的是雙線差分信號(hào),所以分為CAN_H和CAN_L兩根總線,根據(jù)兩根總線之間電壓的差值大小來判斷其顯隱性。而線纜上傳輸?shù)碾娖叫盘?hào)只有兩種可能,分別為顯性電平和隱性電平,其中顯性電平代表邏輯 0,隱性電平代表邏輯 1。
當(dāng)接受到報(bào)文時(shí),首先就要通過CAN收發(fā)器將電信號(hào)轉(zhuǎn)換成邏輯信號(hào)。根據(jù)圖3所示的ISO11898高速CAN電平標(biāo)準(zhǔn)進(jìn)行判斷,但是線路上經(jīng)常會(huì)受到各種干擾,為了保證傳輸?shù)姆€(wěn)定性。所以差分電平小于0.5V就是隱性電平代表邏輯1,差分電平大于0.9V就是顯性電平代表邏輯0。
圖3 ISO11898高速CAN電平
三、邏輯信號(hào)如何轉(zhuǎn)換成報(bào)文?
CAN控制器是CAN-bus設(shè)備的核心元件,集成了CAN規(guī)范中數(shù)據(jù)鏈路層的全部功能,能夠自動(dòng)完成CAN-bus協(xié)議的解析。
當(dāng)CAN收發(fā)器將邏輯信號(hào)傳送給CAN控制器后,CAN控制器會(huì)將邏輯信號(hào)轉(zhuǎn)換成符合CAN規(guī)范的CAN幀。而CAN幀的類型包括了數(shù)據(jù)幀、遠(yuǎn)程幀、幀間空間、錯(cuò)誤幀和超載幀。
圖 4 標(biāo)準(zhǔn)幀格式
以最常見的數(shù)據(jù)幀為例,圖4就是標(biāo)準(zhǔn)幀的格式,包括了幀起始、仲裁場、控制場、數(shù)據(jù)場等。
圖5 報(bào)文解析實(shí)例
圖5就是報(bào)文解析的實(shí)例,當(dāng)接受到對應(yīng)的邏輯信號(hào)后,CAN控制器就會(huì)根據(jù)規(guī)定的CAN幀格式進(jìn)行解析,并將報(bào)文發(fā)給MCU。
四、上位機(jī)報(bào)文顯示
圖 6 上位機(jī)報(bào)文顯示
如圖6所示,當(dāng)CAN控制器完成了CAN-bus協(xié)議的解析后,就會(huì)將報(bào)文傳輸?shù)組CU中在上位機(jī)軟件中進(jìn)行顯示。像幀起始、CRC場、ACK場這樣的數(shù)據(jù)不讀取,所以我們上位機(jī)軟件只顯示數(shù)據(jù)幀類型、幀ID和幀數(shù)據(jù)等信息。
總結(jié):
對于CAN總線報(bào)文錯(cuò)誤來說,百分之九十的錯(cuò)誤都來自于物理層,而CANScope總線分析儀可以對CAN 波形與報(bào)文同步發(fā)送和接收,快速對CAN總線進(jìn)行各項(xiàng)測試,幫助工程師們快速完成故障定位和問題排查。
評論