新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 【CAN基礎】電平、邏輯、報文是怎么來的

        【CAN基礎】電平、邏輯、報文是怎么來的

        作者: 時間:2019-04-28 來源:電子產品世界 收藏

        CAN總線通訊是我們每天都會使用的工業通訊總線,工程師更多的是關注報文是否能夠正常接收,解析結果是否正確。卻忽略了CAN總線的報文是怎么產生以及收發的,所以遇到通訊異常的問題時就會無從下手。那么這篇文章將會帶您快速了解報文的傳輸

        本文引用地址:http://www.104case.com/article/201904/399979.htm

        一、節點通訊的

        1556418429586836.jpg

        圖1  CAN節點示意圖

        如圖1所示是一個CAN節點的示意圖,整體包括了CAN收發器、CAN控制器和MCU。我們以節點發送報文為例,當我們使用上位機軟件發送一段報文時,報文會通過MCU發送給CAN控制器。CAN控制器將這段報文解析成邏輯信號后,再發送給CAN收發器。CAN收發器根據CAN-bus標準將接收到的邏輯信號轉換成電信號,再通過CAN_H和CAN_L兩根總線將電信號傳到總線上的其他節點上。

        簡單說就是MCU將報文發送給控制器,控制器將報文轉換成符合規范的CAN報文后,通過CAN收發器以電信號的形式在總線上進行傳輸。

        二、電平是如何轉換成邏輯?

        1.png

        圖2  CAN-bus信號電平

        如圖2所示,CAN總線使用的是雙線差分信號,所以分為CAN_H和CAN_L兩根總線,根據兩根總線之間電壓的差值大小來判斷其顯隱性。而線纜上傳輸的電平信號只有兩種可能,分別為顯性電平和隱性電平,其中顯性電平代表邏輯 0,隱性電平代表邏輯 1。

        當接受到報文時,首先就要通過CAN收發器將電信號轉換成邏輯信號。根據圖3所示的ISO11898高速CAN電平標準進行判斷,但是線路上經常會受到各種干擾,為了保證傳輸的穩定性。所以差分電平小于0.5V就是隱性電平代表邏輯1,差分電平大于0.9V就是顯性電平代表邏輯0。

        1556418465425160.png

        圖3  ISO11898高速CAN電平

        三、邏輯信號如何轉換成報文?

        CAN控制器是CAN-bus設備的核心元件,集成了CAN規范中數據鏈路層的全部功能,能夠自動完成CAN-bus協議的解析。

        當CAN收發器將邏輯信號傳送給CAN控制器后,CAN控制器會將邏輯信號轉換成符合CAN規范的CAN幀。而CAN幀的類型包括了數據幀、遠程幀、幀間空間、錯誤幀和超載幀。

        1556418494363934.png

        圖 4  標準幀格式

        以最常見的數據幀為例,圖4就是標準幀的格式,包括了幀起始、仲裁場、控制場、數據場等。

        1556418512485450.png

        圖5  報文解析實例

        圖5就是報文解析的實例,當接受到對應的邏輯信號后,CAN控制器就會根據規定的CAN幀格式進行解析,并將報文發給MCU。

        四、上位機報文顯示

        1556418529485329.png

        圖 6  上位機報文顯示

        如圖6所示,當CAN控制器完成了CAN-bus協議的解析后,就會將報文傳輸到MCU中在上位機軟件中進行顯示。像幀起始、CRC場、ACK場這樣的數據不讀取,所以我們上位機軟件只顯示數據幀類型、幀ID和幀數據等信息。

        總結:

        對于CAN總線報文錯誤來說,百分之九十的錯誤都來自于物理層,而CANScope總線分析儀可以對CAN 波形與報文同步發送和接收,快速對CAN總線進行各項測試,幫助工程師們快速完成故障定位和問題排查。



        關鍵詞: CAN基礎 原理

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 磐石市| 神池县| 威远县| 翼城县| 玛多县| 广昌县| 平定县| 十堰市| 温泉县| 南皮县| 苍南县| 沂南县| 平南县| 封丘县| 厦门市| 响水县| 虞城县| 洞头县| 镇安县| 甘洛县| 新田县| 交口县| 张家口市| 宜良县| 九寨沟县| 新昌县| 喀什市| 宜章县| 乌鲁木齐市| 突泉县| 稻城县| 常山县| 资源县| 红桥区| 漯河市| 大英县| 麻阳| 扎鲁特旗| 招远市| 安阳市| 衡东县|