博客專欄

        EEPW首頁 > 博客 > 基于SAEJ1939無線通信數傳協議的CAN(控制器局域網絡)總線批量數據傳輸

        基于SAEJ1939無線通信數傳協議的CAN(控制器局域網絡)總線批量數據傳輸

        發布人:成都億佰特 時間:2022-05-07 來源:工程師 發布文章

        CAN總線

        CAN(控制器局域網絡)總線以其高實時性、高可靠性、功能完善、高性價比、開發周期短、等諸多優點,被大量應用于車輛通信及控制,幾乎所汽車生產商及其供應商都選則CAN總線做為通信介質。

        SAEJ1939協議

        SAEJ1939協議是CAN2.0B的基礎之上做了進一步封裝,相較于七層OSI模型更加簡單、易于上手,該協議主要面向客車和大中型載重貨車。SAEJ1939數據幀結構如下:

        can總線模組

        從上圖可知,一幀CAN數據幀最大可攜帶8 Byte(64bit)數據。而在日常車輛控制中往往需要傳輸的內容遠大于此數量。在SAEJ1939-21中專門規定了傳輸協議功能。

        無線傳輸協議功能主要分為兩個部分:消息的拆裝與重組,連接管理。

        消息拆裝與重組:

        大于8個字節的數據不能通過用一個單獨的CAN 數據幀來傳輸。它們需要被拆分多個小的數據包,使用單獨的數據幀依次傳送。接收則負責按編號將這個單獨的數據包重組長數據,并傳給應用程序。

        連接管理:

        連接管理包含三個過程:建立連接、數據傳輸、連接關閉。

        1.建立連接:當某個節點要傳送一組大于8字節的數據時,就會發起請求連接,請求中包含整個數據包的大小,要傳送消息的幀數,以及它設定的參數群編號。然后等待接收方做出相應的響應或者超時。

        2.數據傳輸:當建立連接之后,當發送者接收到允許發送的信號后,發送者將按順序將拆裝好的數據依次發送到CAN網絡上。數據幀的第一個字節用于表示當前數據包的編號因此,一次批量傳輸最大數據量為:255 * 7 = 1785字節。

        3.連接關閉:當數據被正確發送后,接收方會回傳一個數據包,數據包內容包括:結束應答標號、整個消息的大小、接收的幀數以及參數群編號。

        整個傳輸過程如下圖

        can模組無線通信模塊


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)



        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 团风县| 内江市| 偏关县| 商城县| 阳山县| 社会| 襄汾县| 如东县| 宝山区| 闻喜县| 高安市| 昆山市| 周宁县| 林西县| 英超| 密山市| 汽车| 高雄市| 万源市| 永康市| 平陆县| 简阳市| 定南县| 灵台县| 平潭县| 兴隆县| 石家庄市| 新乐市| 许昌市| 财经| 临颍县| 隆德县| 滁州市| 平远县| 彭山县| 改则县| 庆阳市| 越西县| 宜宾市| 白朗县| 水城县|