0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【教程】CAN報(bào)文自定義協(xié)議轉(zhuǎn)發(fā)

億佰特物聯(lián)網(wǎng)應(yīng)用專家 ? 2023-05-31 17:03 ? 次閱讀

CAN總線通信的應(yīng)用領(lǐng)域中,很多客戶需要將CANID放在CAN報(bào)文中,這樣更方便接入不同的設(shè)備,有利于用戶通過模塊更方便地組建自己的網(wǎng)絡(luò),使用自定的應(yīng)用協(xié)議。但是要實(shí)現(xiàn)這樣的應(yīng)用,用戶往往需要不停地去修改參數(shù)。

我司研發(fā)的ECAN-401所具備的透明帶標(biāo)識(shí)功能則很好地處理這個(gè)問題。該方式把串行幀中的 ID 信息自動(dòng)轉(zhuǎn)換成CAN總線的幀ID。只要在配置中告訴模塊該ID信息在串行幀的起始位置和長(zhǎng)度,模塊在轉(zhuǎn)換時(shí)提取出這個(gè)幀ID填充在CAN報(bào)文的幀ID域里,作為該串行幀的轉(zhuǎn)發(fā)時(shí)的CAN報(bào)文的ID。在CAN報(bào)文轉(zhuǎn)換成串行幀的時(shí)候也把CAN報(bào)文的ID轉(zhuǎn)換在串行幀的相應(yīng)位置。

轉(zhuǎn)換方式

1、串行幀轉(zhuǎn) CAN 報(bào)文

串行幀中所帶有的CAN報(bào)文的“幀 ID”在串行幀中的起始地址和長(zhǎng)度可由配置設(shè)定。起始地址的范圍是0~7,長(zhǎng)度范圍分別是1~2(標(biāo)準(zhǔn)幀)或1~4(擴(kuò)展幀)。轉(zhuǎn)換時(shí)根據(jù)事先的配置將串行幀中的 CAN報(bào)文“幀 ID”對(duì)應(yīng)全部轉(zhuǎn)換到CAN報(bào)文的幀ID域中(如果所帶幀ID個(gè)數(shù)少于CAN報(bào)文的幀 ID 數(shù),那么在CAN報(bào)文中幀ID的高字節(jié)補(bǔ)0。),其它的數(shù)據(jù)依序轉(zhuǎn)換,如果一幀CAN報(bào)文未將串行幀數(shù)據(jù)轉(zhuǎn)換完,則仍然用相同的ID作為CAN報(bào)文的幀ID繼續(xù)轉(zhuǎn)換直到將串行幀轉(zhuǎn)換完成。

注意:如果將ID長(zhǎng)度大于2,設(shè)備發(fā)送的幀類別會(huì)設(shè)置為擴(kuò)展幀。此時(shí)用戶配置的幀ID和幀類別無效,由串行幀里邊的數(shù)據(jù)決定。標(biāo)準(zhǔn)幀的幀ID范圍為:0x000-0x7ff,分別表示為幀 ID1、幀 ID0,其中幀 ID1 為高字節(jié),擴(kuò)展幀的幀 ID 范圍為:0x00000000-0x1fffffff,分別表示為幀 ID3、幀 ID2、幀 ID1、幀 ID0,其中幀 ID3 為高字節(jié)。

a65bd17c-fb5b-11ed-ba01-dac502259ad0.png

串行幀轉(zhuǎn)換成 CAN 報(bào)文(透?jìng)鲙?biāo)識(shí))


轉(zhuǎn)換示例:

串行幀轉(zhuǎn)CAN報(bào)文(透明帶標(biāo)識(shí))。

該示例配置的CAN配置參數(shù)。轉(zhuǎn)換模式:透明帶標(biāo)識(shí)轉(zhuǎn)換,起始地址2,長(zhǎng)度3。幀類型:擴(kuò)展幀,幀ID:無需配置,轉(zhuǎn)換方向:雙向。則轉(zhuǎn)換前后數(shù)據(jù)如下。

a697b5b6-fb5b-11ed-ba01-dac502259ad0.png

串行幀轉(zhuǎn) CAN 報(bào)文示例(透?jìng)鲙?biāo)識(shí)轉(zhuǎn)換)


2、CAN 報(bào)文轉(zhuǎn)串行幀

對(duì)于CAN報(bào)文,收到一幀就立即轉(zhuǎn)發(fā)一幀,每次轉(zhuǎn)發(fā)的時(shí)候也是根據(jù)事先配置的CAN幀ID在串行幀中的位置和長(zhǎng)度把接收到的CAN報(bào)文中的ID做相應(yīng)的轉(zhuǎn)換。其它數(shù)據(jù)依序轉(zhuǎn)發(fā)。值得注意的是,無論是串行幀還是CAN報(bào)文在應(yīng)用的時(shí)候其幀格式(標(biāo)準(zhǔn)幀還是擴(kuò)展幀)應(yīng)該符合事先配置的幀格式要求,否則可能致使通訊不成功。

a6c30b1c-fb5b-11ed-ba01-dac502259ad0.png

CAN報(bào)文轉(zhuǎn)換成串行幀

轉(zhuǎn)換示例:

該示例配置的CAN配置參數(shù)。轉(zhuǎn)換模式:透明帶標(biāo)識(shí)轉(zhuǎn)換,起始地址2,長(zhǎng)度3。幀類型:擴(kuò)展幀,幀類型:數(shù)據(jù)幀。轉(zhuǎn)換方向:雙向。發(fā)送標(biāo)識(shí)符:0x00000123,則轉(zhuǎn)換前后數(shù)據(jù)如下。

a6ef678e-fb5b-11ed-ba01-dac502259ad0.png

CAN 報(bào)文轉(zhuǎn)串行幀示例(透明帶信息轉(zhuǎn)換)

在了解了ECAN-401的透明帶標(biāo)識(shí)功能后,我們可以開始實(shí)際操作。

3、實(shí)際操作

準(zhǔn)備以下設(shè)備:

ECAN-401一臺(tái)

CAN分析儀ECAN-U01一臺(tái)

XCOM串口助手

這里我們使用ECAN-401做數(shù)據(jù)轉(zhuǎn)換工具,ECAN-U01發(fā)送和接收CAN報(bào)文,XCOM串口助手軟件模擬串行設(shè)備發(fā)送串行數(shù)據(jù)。將ECAN-401與ECAN-U01的CAN_L和CAN_H連接,ECAN-401的485接口通過485換USB轉(zhuǎn)換器連接到電腦,如下圖所示:

a70dbcb6-fb5b-11ed-ba01-dac502259ad0.png

通過ECAN-401的上位機(jī),將設(shè)備通訊模式切換為透明帶標(biāo)識(shí)模式,CAN波特率1000K,ID長(zhǎng)度2,ID位置2參數(shù)配置如下圖:

a821b346-fb5b-11ed-ba01-dac502259ad0.png

打開CAN分析儀ECAN-U01以及XCOM軟件,使用XCOM軟件模擬出一串行設(shè)備,通過ECAN-401的485串口發(fā)送串行數(shù)據(jù):首先使用標(biāo)準(zhǔn)幀發(fā)送兩包數(shù)據(jù):11 22 03 44 55 66 77 88 99 00,這里可以看到ECAN-U01設(shè)備已經(jīng)接收到了ECAN-401所轉(zhuǎn)換出來的數(shù)據(jù):

a84e8858-fb5b-11ed-ba01-dac502259ad0.png

這里可以看到ECAN-U01已經(jīng)成功接收到ECAN-401轉(zhuǎn)化出來的數(shù)據(jù),幀ID:03 44,數(shù)據(jù)域:11 22 55 66 77 88 99 00。

再?gòu)腃AN分析儀端發(fā)送數(shù)據(jù)到串行端口,如下圖所示:

a86f04c0-fb5b-11ed-ba01-dac502259ad0.png

串口端也是按照透明帶標(biāo)識(shí)來組包,這樣就成功實(shí)現(xiàn)了CAN協(xié)議按照透明帶標(biāo)識(shí)來收發(fā)數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CAN
    CAN
    +關(guān)注

    關(guān)注

    57

    文章

    2754

    瀏覽量

    463717
  • 協(xié)議
    +關(guān)注

    關(guān)注

    2

    文章

    602

    瀏覽量

    39225
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TPS659xx應(yīng)用程序自定義工具

    電子發(fā)燒友網(wǎng)站提供《TPS659xx應(yīng)用程序自定義工具.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 10:02 ?0次下載
    TPS659xx應(yīng)用程序<b class='flag-5'>自定義</b>工具

    創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL)

    電子發(fā)燒友網(wǎng)站提供《創(chuàng)建自定義的基于閃存的引導(dǎo)加載程序(BSL).pdf》資料免費(fèi)下載
    發(fā)表于 09-19 10:50 ?0次下載
    創(chuàng)建<b class='flag-5'>自定義</b>的基于閃存的引導(dǎo)加載程序(BSL)

    如何創(chuàng)建TestStand自定義步驟

    在之前的課程中簡(jiǎn)單地介紹過TestStand自帶的一些步驟類型,如測(cè)試、消息彈窗、賦值、標(biāo)簽等等,這些簡(jiǎn)單的步驟從TestStand的插入選版中就可以添加到序列中。那么在使用中如果碰到需要實(shí)現(xiàn)更加靈活、復(fù)雜的功能,使用自帶的一些步驟類型可能難以滿足,這時(shí)就需要使用到自定義步驟。
    的頭像 發(fā)表于 09-11 14:46 ?1108次閱讀
    如何創(chuàng)建TestStand<b class='flag-5'>自定義</b>步驟

    請(qǐng)問multisim怎么自定義元器件?

    為什么我在multisim中自定義元器件始終出不了想要的波形效果呢?同一個(gè)pspice模型我同學(xué)之前都定義正確了,現(xiàn)在我想再來試一下結(jié)果一直失敗
    發(fā)表于 09-10 06:16

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃

    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶自定義軌跡規(guī)劃。
    的頭像 發(fā)表于 08-15 11:49 ?637次閱讀
    EtherCAT運(yùn)動(dòng)控制器PT/PVT實(shí)現(xiàn)用戶<b class='flag-5'>自定義</b>軌跡規(guī)劃

    NVIDIA NeMo加速并簡(jiǎn)化自定義模型開發(fā)

    如果企業(yè)希望充分發(fā)揮出 AI 的力量,就需要根據(jù)其行業(yè)需求量身定制的自定義模型。
    的頭像 發(fā)表于 07-26 11:17 ?756次閱讀
    NVIDIA NeMo加速并簡(jiǎn)化<b class='flag-5'>自定義</b>模型開發(fā)

    Chrome移動(dòng)版支持自定義菜單欄功能

    在先前版本中,用戶通過點(diǎn)擊瀏覽器右上角的三個(gè)點(diǎn)按鈕即可調(diào)出包含各類圖標(biāo)與操作的菜單。而此次更新后,Chrome新增了“自定義菜單”選項(xiàng),允許用戶自主控制該區(qū)域的展示內(nèi)容。
    的頭像 發(fā)表于 05-27 15:00 ?818次閱讀

    HarmonyOS開發(fā)案例:【 自定義彈窗】

    基于ArkTS的聲明式開發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗
    的頭像 發(fā)表于 05-16 18:18 ?1372次閱讀
    HarmonyOS開發(fā)案例:【 <b class='flag-5'>自定義</b>彈窗】

    TSMaster 自定義 LIN 調(diào)度表編程指導(dǎo)

    LIN(LocalInterconnectNetwork)協(xié)議調(diào)度表是用于LIN總線通信中的消息調(diào)度的一種機(jī)制,我們收到越來越多來自不同用戶希望能夠通過接口實(shí)現(xiàn)自定義LIN調(diào)度表的需求。所以在
    的頭像 發(fā)表于 05-11 08:21 ?677次閱讀
    TSMaster <b class='flag-5'>自定義</b> LIN 調(diào)度表編程指導(dǎo)

    HarmonyOS開發(fā)案例:【UIAbility和自定義組件生命周期】

    本文檔主要描述了應(yīng)用運(yùn)行過程中UIAbility和自定義組件的生命周期。對(duì)于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對(duì)于頁(yè)面
    的頭像 發(fā)表于 05-10 15:31 ?1250次閱讀
    HarmonyOS開發(fā)案例:【UIAbility和<b class='flag-5'>自定義</b>組件生命周期】

    HarmonyOS實(shí)戰(zhàn)開發(fā)-深度探索與打造個(gè)性化自定義組件

    今天分享一下 什么是自定義組件?及其自定義組件的實(shí)戰(zhàn)。 做過前端或者android開發(fā)的都知道自定義組件,鴻蒙中顯示在界面上的UI都稱為組件,小打一個(gè)按鈕,再到一個(gè)列表。 鴻蒙提供的組件有 基礎(chǔ)組件
    發(fā)表于 05-08 16:30

    微軟Dev Home應(yīng)用提供自定義文件管理支持

    據(jù)悉,Microsoft 近期發(fā)布了 0.13 版 Dev Home 應(yīng)用程序,除修復(fù)多項(xiàng) BUG 外,還新增了自定義文件資源管理器功能。該應(yīng)用支持用戶在應(yīng)用內(nèi)創(chuàng)建虛擬機(jī),利用微軟旗下的 Hyper V 技術(shù)生成本地虛擬機(jī)。
    的頭像 發(fā)表于 04-26 11:15 ?466次閱讀

    HarmonyOS開發(fā)實(shí)例:【自定義Emitter】

    使用[Emitter]實(shí)現(xiàn)事件的訂閱和發(fā)布,使用[自定義彈窗]設(shè)置廣告信息。
    的頭像 發(fā)表于 04-14 11:37 ?1003次閱讀
    HarmonyOS開發(fā)實(shí)例:【<b class='flag-5'>自定義</b>Emitter】

    CAN報(bào)文為什么會(huì)發(fā)送失???

    CAN總線調(diào)試過程中出現(xiàn)報(bào)文發(fā)送失敗。很多工程師都對(duì)此只知其一不知其二,今天我們就以CAN報(bào)文發(fā)送失敗的問題來做一次探討。在了解CAN
    的頭像 發(fā)表于 04-12 08:25 ?2114次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>報(bào)文</b>為什么會(huì)發(fā)送失???

    鴻蒙ArkUI實(shí)例:【自定義組件】

    組件是 OpenHarmony 頁(yè)面最小顯示單元,一個(gè)頁(yè)面可由多個(gè)組件組合而成,也可只由一個(gè)組件組合而成,這些組件可以是ArkUI開發(fā)框架自帶系統(tǒng)組件,比如?`Text`?、?`Button`?等,也可以是自定義組件,本節(jié)筆者簡(jiǎn)單介紹一下自定義組件的語法規(guī)范。
    的頭像 發(fā)表于 04-08 10:17 ?644次閱讀