<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何構建專(zhuān)屬自己的CAN-bus應用層協(xié)議

如何構建專(zhuān)屬自己的CAN-bus應用層協(xié)議

作者:ZLG致遠電子 時(shí)間:2017-05-04 來(lái)源:電子產(chǎn)品世界 收藏

  隨著(zhù)相關(guān)芯片價(jià)格的下降,內置CAN控制器的增多,當前已經(jīng)進(jìn)入了眾多早期由于成本問(wèn)題無(wú)法使用的領(lǐng)域,成為極具生命力的現場(chǎng)總線(xiàn),今天我們就來(lái)探討如何構建專(zhuān)屬自己的應用層協(xié)議。

本文引用地址:http://dyxdggzs.com/article/201705/358773.htm

  在CAN-bus網(wǎng)絡(luò )上,CAN報文以廣播的形式發(fā)送,CAN報文不包含地址信息,是否處理接收到的CAN報文由接收點(diǎn)的軟件確定。CAN-bus只提供可靠的報文傳輸服務(wù),CAN報文的使用由應用者定義, 所以CAN網(wǎng)絡(luò )中的節點(diǎn)要相互通信就必須制定一個(gè)統一的規則。CAN應用層協(xié)議就是這樣一個(gè)規則。

  這個(gè)規則,定義了CAN報文中幀ID及幀數據的使用方式,如將幀ID定義為需要處理該幀數據的CAN節點(diǎn)地址等。根據應用場(chǎng)合的不同,國際上出現了多種CAN應用層協(xié)議,常見(jiàn)的CAN-bus應用層協(xié)議如下:

    

  圖1

  接下來(lái),我們看一下如何構建CAN-bus應用層協(xié)議

  構建一個(gè)現場(chǎng)總線(xiàn)網(wǎng)絡(luò ),需要解決的關(guān)鍵技術(shù)問(wèn)題有:

  總線(xiàn)傳輸信息的速度、容量、優(yōu)先等級、節點(diǎn)容量等;

  高電磁干擾環(huán)境下的可靠數據傳輸;

  最大傳輸距離時(shí)延時(shí)大小的確定;

  網(wǎng)絡(luò )的容錯技術(shù);

  網(wǎng)絡(luò )的監控和故障診斷功能。

  要解決以上問(wèn)題,需要充分考慮現場(chǎng)總線(xiàn)網(wǎng)絡(luò )所采用的總線(xiàn)類(lèi)型,因為以上問(wèn)題和總線(xiàn)的性能特點(diǎn)是密切相關(guān)的,那么我們就看一下CAN-bus總線(xiàn)的上述特性:

  CAN-bus網(wǎng)絡(luò )傳輸速度最高可達1Mbps,并采用無(wú)損仲裁,通過(guò)報文標識符指示報文優(yōu)先級;

  CAN-bus采用差分信號傳輸,并采用可靠的數據校驗和錯誤檢測機制;

  CAN-bus采用幀傳輸,每個(gè)報文允許傳輸最多8個(gè)字節,幀結構有嚴格規定,能夠確定最大傳輸延時(shí);

  CAN-bus具有可靠的錯誤機制和檢測機制,發(fā)送的信息遭到破壞后可以重新發(fā)送;節點(diǎn)在錯誤嚴重的情況下,具有自動(dòng)退出總線(xiàn)的功能;

  可以通過(guò)制定嚴禁的CAN-bus應用層協(xié)議解決網(wǎng)絡(luò )監控和診斷。

  CAN報文的分配

  包含報文標識符的分配和報文數據的分配,報文格式的定義,實(shí)質(zhì)是將CAN報文的分配規則進(jìn)行詳細的描述。

  報文ID的定義:

  CAN2.0A幀:11位ID

  CAN2.0B幀,29位ID

  報文數據的定義:每幀報文最多包含8字節數據

  CAN網(wǎng)絡(luò )數據通信的實(shí)現

  在CAN網(wǎng)絡(luò )中,通過(guò)報文的標識符進(jìn)行信息的區分,因此通過(guò)報文的各種標識符分配來(lái)達到建立信息鏈接的目的。

    

  圖2 命令/響應模式通信

  CAN應用層協(xié)議:面向節點(diǎn)和面向報文的協(xié)議

  數據通信協(xié)議基本上可以劃分為“面向節點(diǎn)的協(xié)議”和“面向報文的協(xié)議”兩種類(lèi)型,如下圖:

    

  圖3:面向節點(diǎn)和面向報文的數據通信

  制定一個(gè)CAN應用層協(xié)議

  為了給讀者演示CAN應用層協(xié)議的開(kāi)發(fā)和使用方法,下面定義一個(gè)簡(jiǎn)單的CAN應用協(xié)議棧,該協(xié)議棧中只用到CAN標準幀中的數據幀,幀ID中的11個(gè)位的分配和使用方法如下表所列,協(xié)議中另外還定義了功能參數長(cháng)度變量FunDataLen的功能參數數組FunData,該數組在需要時(shí)可以為某些特定功能函數提供足夠的控制參數。

    

  圖4

 

 

 



關(guān)鍵詞: CAN-bus MCU

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>