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

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

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

【技術(shù)分享】不懂CAN協(xié)議?如何避免總線仲裁失???

ZLG致遠電子 ? 2023-02-02 10:52 ? 次閱讀

CAN總線是可以掛載多個控制單元,每個單元均可以發(fā)送和接收數(shù)據(jù),為了避免發(fā)生沖突,協(xié)議規(guī)定只有等信道空閑時刻優(yōu)先級高的單元才能占有總線并發(fā)送數(shù)據(jù),那么CAN單元是如何判斷優(yōu)先級的呢?c6161c16-a278-11ed-ad0d-dac502259ad0.jpg CAN仲裁的實現(xiàn)方式1. CANID在CAN報文中的位置每一個CAN報文的CANID有唯一標識的11bit/29bit構(gòu)成,以標準CAN幀為例,11bitCANID在CAN幀中的位置如圖1所示。SOF之后是Identifier,各個節(jié)點要外發(fā)的CANID通過CANID仲裁,優(yōu)先級高的報文被優(yōu)先發(fā)送。同時,對應節(jié)點優(yōu)先獲得CAN總線的使用權(quán),而仲裁失敗的節(jié)點則停止數(shù)據(jù)的發(fā)送,轉(zhuǎn)而進行數(shù)據(jù)的接收,只能等待下一個SOF時刻再去仲裁。

c624c5c2-a278-11ed-ad0d-dac502259ad0.jpg

圖1標準CAN數(shù)據(jù)幀格式

2. CAN總線仲裁機制的實現(xiàn)

那么CANID的優(yōu)先等級是如何判斷的呢?其實CAN總線ID仲裁方式相當于一個“線與”的結(jié)構(gòu),顯性(邏輯0)與隱形(邏輯1)相與變?yōu)轱@性即0&1=0,硬件電路簡圖可參考圖2。標準CAN幀格式的總線仲裁方式如圖3所示。因為高位在前,低位在后,故CAN標識符組成的數(shù)值越小優(yōu)先級越高。

c642e8fe-a278-11ed-ad0d-dac502259ad0.jpg

圖2線與電路簡圖c652d318-a278-11ed-ad0d-dac502259ad0.jpg

圖3總線仲裁方式圖


c6161c16-a278-11ed-ad0d-dac502259ad0.jpg CANID沖突發(fā)生的條件及現(xiàn)象1.CANID沖突的條件

本文以我司協(xié)議轉(zhuǎn)換模塊CSM300為例進行介紹,CSM300是集成微處理器、CAN-bus控制器、CAN-bus收發(fā)器、DC-DC轉(zhuǎn)換、高速數(shù)字隔離于一體的嵌入式CAN與UART/SPI雙向轉(zhuǎn)換模塊。如果我們將兩個ID均為00000000的CSM300模塊組成一個CAN總線網(wǎng)絡(luò)系統(tǒng),當這兩個ID相同的模塊同時往CAN總線端發(fā)送數(shù)據(jù)時將會造成仲裁失敗。

2. CANID沖突的現(xiàn)象

以CSM300為例進行說明,電路硬件簡易連接圖如圖4所示,用兩個上位機通過兩路串口同時給兩個相同配置的模塊發(fā)送一組數(shù)據(jù),此時兩模塊會同時將RXD腳接收到的數(shù)據(jù)轉(zhuǎn)換至CAN總線端。因為兩個CAN節(jié)點的ID一樣,CAN總線仲裁失敗,兩發(fā)送節(jié)點收不到反饋信號,將一直發(fā)送最后一幀數(shù)據(jù),此時CAN總線端的波形如圖5所示。c67308f4-a278-11ed-ad0d-dac502259ad0.jpg圖4CSM300電路連接圖c6814aea-a278-11ed-ad0d-dac502259ad0.png

圖5CAN總線波形圖


c6161c16-a278-11ed-ad0d-dac502259ad0.jpg CSM系列如何避免CANID沖突為滿足不同環(huán)境的應用,CSM300系列和CSM100系列均有透明轉(zhuǎn)換、透明帶標識轉(zhuǎn)換、自定義協(xié)議轉(zhuǎn)換三種轉(zhuǎn)換方式供用戶選配,如圖6所示。c6b218c8-a278-11ed-ad0d-dac502259ad0.png

圖6轉(zhuǎn)換方式選配圖

透明轉(zhuǎn)換方式下用戶可通過MCU或上位機將模塊配置為不同的ID避免發(fā)生仲裁失敗的情況,透明轉(zhuǎn)換方式下,模塊無需對數(shù)據(jù)進行額外處理,最大限度地提高了數(shù)據(jù)轉(zhuǎn)換速度,也提高了緩沖區(qū)的利用率。不過此模式下每個模塊的CANID在配置完成后不能更改除非用戶再次配置,此外該模式下可能將兩組時間間隔接近的UART幀識別為一組數(shù)據(jù)進行轉(zhuǎn)換,造成數(shù)據(jù)轉(zhuǎn)換錯誤。

透明帶標識轉(zhuǎn)換方式下,用戶可以在配置時固定CANID在串行幀的位置和長度如圖7所示,通過改變串行幀數(shù)據(jù)來控制所發(fā)數(shù)據(jù)的CAN幀ID,方便用戶在同一節(jié)點發(fā)送不同ID的CAN數(shù)據(jù)。但是此模式下需要確保串行幀的時間間隔足夠大,避免模塊不能正確識別每組串行幀的結(jié)束造成數(shù)據(jù)轉(zhuǎn)換錯誤。透明帶標識模式下串行幀最小間隔具體要求可參考CSM100和CSM300的用戶手冊。

c6c3110a-a278-11ed-ad0d-dac502259ad0.png

圖7透明帶標識轉(zhuǎn)換配置圖

有效的自定義協(xié)議轉(zhuǎn)換串行幀包括了幀頭、幀尾、幀ID和幀長度等,用戶可通過改變串行幀數(shù)據(jù)來控制CAN幀ID,方便用戶在同一節(jié)點發(fā)送不同ID的CAN數(shù)據(jù)。同時用戶將在配置時固定幀頭和幀尾如圖8所示,此模式下用戶通過串行幀數(shù)據(jù)告知模塊串行幀的幀頭、幀尾和數(shù)據(jù)長度,故此轉(zhuǎn)換方式下可有效避免因串行幀間隔時間短造成的數(shù)據(jù)轉(zhuǎn)換錯誤的情況。

c6d3182a-a278-11ed-ad0d-dac502259ad0.png圖8自定義轉(zhuǎn)換配置圖

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

    關(guān)注

    57

    文章

    2663

    瀏覽量

    462432
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87697
收藏 人收藏

    評論

    相關(guān)推薦

    CAN總線協(xié)議的數(shù)據(jù)鏈路層有哪些部分

    CAN(Controller Area Network)總線協(xié)議的數(shù)據(jù)鏈路層是CAN通信中至關(guān)重要的一部分,它負責在物理層之上實現(xiàn)數(shù)據(jù)的可靠傳輸。數(shù)據(jù)鏈路層不僅管理著幀的同步、差錯控制
    的頭像 發(fā)表于 09-03 14:14 ?206次閱讀

    CAN/CAN FD/CAN XL三大總線協(xié)議解讀,是逐步替代關(guān)系嗎?

    電子發(fā)燒友網(wǎng)報道(文/吳子鵬)在軟件定義汽車逐漸成為主流的當下,數(shù)據(jù)傳輸?shù)乃俣群托食蔀榇蛟熘悄芷嚨钠款i,在這種大背景下,傳統(tǒng)CAN總線應對一些需求已經(jīng)相當吃力,因此CAN FD和CAN
    的頭像 發(fā)表于 08-12 01:12 ?3478次閱讀

    CAN總線和EtherCAT的區(qū)別

    CAN總線和EtherCAT是兩種在工業(yè)自動化和控制領(lǐng)域廣泛應用的通信總線協(xié)議,它們各自具有獨特的技術(shù)特點和應用場景。以下是對
    的頭像 發(fā)表于 08-05 15:43 ?1208次閱讀

    協(xié)議can總線隔離中繼器接多會怎樣

    協(xié)議CAN總線隔離中繼器是一種用于CAN總線系統(tǒng)中的設(shè)備,其主要功能是實現(xiàn)CAN
    的頭像 發(fā)表于 06-16 10:31 ?461次閱讀

    CAN總線的特點、原理及應用

    CAN總線(Controller Area Network)是一種用于汽車和工業(yè)自動化領(lǐng)域的局域網(wǎng)技術(shù),具有實時性、可靠性、靈活性和成本效益等優(yōu)點。本文將詳細介紹CAN
    的頭像 發(fā)表于 06-16 10:19 ?1446次閱讀

    can總線的數(shù)據(jù)傳輸過程是什么

    過程,包括其基本原理、通信機制、數(shù)據(jù)幀結(jié)構(gòu)、錯誤處理和仲裁機制等方面。 CAN總線基本原理 CAN總線是一種基于時間分割的通信
    的頭像 發(fā)表于 06-16 10:18 ?1218次閱讀

    什么是CAN總線協(xié)議?它有哪些特性和應用?

    CAN總線協(xié)議(Controller Area Network,簡稱CAN),是一種在汽車和工業(yè)自動化領(lǐng)域廣泛應用的串行通信協(xié)議。自1986
    的頭像 發(fā)表于 05-27 16:32 ?822次閱讀

    CAN報文為什么會發(fā)送失敗?

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

    高速CAN總線和低速CAN總線的特性

    總線的特性。 首先,高速CAN總線是指數(shù)據(jù)傳輸速率較高的CAN總線,其中包括CAN 2.0A和
    的頭像 發(fā)表于 01-31 14:09 ?2123次閱讀

    CAN總線協(xié)議簡介及其常見的應用領(lǐng)域

    CAN總線協(xié)議是一種串行通訊協(xié)議,主要用于汽車和工業(yè)自動化領(lǐng)域,實現(xiàn)了實時應用的需求。 首先,CAN總線
    的頭像 發(fā)表于 01-19 17:47 ?995次閱讀

    CAN總線的發(fā)展歷程 CAN XL總線的典型應用

    CAN總線通訊協(xié)議由德國博世于上世紀80年代發(fā)明,第一個使用CAN總線通訊協(xié)議的量產(chǎn)車型是199
    的頭像 發(fā)表于 12-21 14:03 ?2323次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的發(fā)展歷程 <b class='flag-5'>CAN</b> XL<b class='flag-5'>總線</b>的典型應用

    CAN協(xié)議棧與LIN協(xié)議棧介紹

    CAN協(xié)議棧 汽車CAN協(xié)議棧是一種軟件組件,用于實現(xiàn)汽車電子系統(tǒng)中的CAN總線通信功能。它包含
    的頭像 發(fā)表于 10-27 16:16 ?2572次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>協(xié)議</b>棧與LIN<b class='flag-5'>協(xié)議</b>棧介紹

    CAN總線訪問與仲裁機制#汽車CAN總線?

    CAN總線
    北匯信息POLELINK
    發(fā)布于 :2023年10月20日 15:33:02

    RS-232總線CAN-Modbus網(wǎng)絡(luò)的連接技術(shù)

    YC-CAN-RTU是一款用于CAN-Modbus現(xiàn)場總線與RS-232總線或RS-485總線之間數(shù)據(jù)轉(zhuǎn)換的
    發(fā)表于 10-15 10:30 ?1397次閱讀
    RS-232<b class='flag-5'>總線</b>與<b class='flag-5'>CAN</b>-Modbus網(wǎng)絡(luò)的連接<b class='flag-5'>技術(shù)</b>

    虹科CiA演講回顧 | CAN(FD)總線協(xié)議轉(zhuǎn)換原理及其在汽車行業(yè)的應用

    9月14日,虹科首席工程師陳皓受邀在CiA中國技術(shù)日發(fā)表“CANCAN FD總線協(xié)議轉(zhuǎn)換”為主題的演講,內(nèi)容包括
    的頭像 發(fā)表于 09-21 09:30 ?699次閱讀
    虹科CiA演講回顧 | <b class='flag-5'>CAN</b>(FD)<b class='flag-5'>總線</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換原理及其在汽車行業(yè)的應用