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

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

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

CAN基礎(chǔ):電平、邏輯、報文是怎么來的

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-26 02:46 ? 次閱讀

CAN總線的報文是怎么產(chǎn)生以及收發(fā)的,遇到通訊異常的問題時從什么角度分析?這篇文章將會帶您快速了解報文的傳輸原理。

1、節(jié)點通訊的原理

圖1 CAN節(jié)點示意圖

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

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

2、電平是如何轉(zhuǎn)換成邏輯?

圖2 CAN-bus信號電平

如圖2所示,CAN總線使用的是雙線差分信號,所以分為CAN_H和CAN_L兩根總線,根據(jù)兩根總線之間電壓的差值大小來判斷其顯隱性。而線纜上傳輸?shù)碾娖叫盘栔挥袃煞N可能,分別為顯性電平和隱性電平,其中顯性電平代表邏輯0,隱性電平代表邏輯1。

當(dāng)接受到報文時,首先就要通過CAN收發(fā)器將電信號轉(zhuǎn)換成邏輯信號。根據(jù)圖3所示的ISO11898高速CAN電平標(biāo)準(zhǔn)進行判斷,但是線路上經(jīng)常會受到各種干擾,為了保證傳輸?shù)姆€(wěn)定性。所以差分電平小于0.5V就是隱性電平代表邏輯1,差分電平大于0.9V就是顯性電平代表邏輯0。

圖3 ISO11898高速CAN電平

3、邏輯信號如何轉(zhuǎn)換成報文?

CAN控制器是CAN-bus設(shè)備的核心元件,集成了CAN規(guī)范中數(shù)據(jù)鏈路層的全部功能,能夠自動完成CAN-bus協(xié)議的解析。

當(dāng)CAN收發(fā)器將邏輯信號傳送給CAN控制器后,CAN控制器會將邏輯信號轉(zhuǎn)換成符合CAN規(guī)范的CAN幀。而CAN幀的類型包括了數(shù)據(jù)幀、遠(yuǎn)程幀、幀間空間、錯誤幀和超載幀。

圖4 標(biāo)準(zhǔn)幀格式

以最常見的數(shù)據(jù)幀為例,圖4就是標(biāo)準(zhǔn)幀的格式,包括了幀起始、仲裁場、控制場、數(shù)據(jù)場等。

圖5 報文解析實例

圖5就是報文解析的實例,當(dāng)接受到對應(yīng)的邏輯信號后,CAN控制器就會根據(jù)規(guī)定的CAN幀格式進行解析,并將報文發(fā)給MCU。

4、上位機報文顯示

圖6 上位機報文顯示

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

5、總結(jié)

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

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

    關(guān)注

    57

    文章

    2754

    瀏覽量

    463697
  • 電平
    +關(guān)注

    關(guān)注

    5

    文章

    360

    瀏覽量

    39897
  • 邏輯
    +關(guān)注

    關(guān)注

    2

    文章

    833

    瀏覽量

    29469
收藏 人收藏

    評論

    相關(guān)推薦

    邏輯電平輸出是什么意思

    信號。 邏輯電平輸出的定義 邏輯電平輸出是指數(shù)字電路中的輸出端能夠產(chǎn)生的電壓水平,這些電壓水平用于表示邏輯狀態(tài)。在數(shù)字電路中,通常使用兩個不
    的頭像 發(fā)表于 09-20 17:32 ?635次閱讀

    CAN總線的報文類型介紹

    CAN(Controller Area Network)總線是一種廣泛使用的串行通信協(xié)議,特別適用于汽車和工業(yè)自動化領(lǐng)域。CAN總線上的報文類型主要可以分為以下幾種,每種類型都有其特定的用途和格式。
    的頭像 發(fā)表于 09-03 14:20 ?1563次閱讀

    CAN SIC收發(fā)器助力復(fù)雜CAN網(wǎng)絡(luò)高效可靠通信(2)

    SIC的作用機理在CAN總線上,通過CAN_H和CAN_L兩根線上的電位差表示CAN信號。CAN
    的頭像 發(fā)表于 08-09 08:37 ?1762次閱讀
    <b class='flag-5'>CAN</b> SIC收發(fā)器助力復(fù)雜<b class='flag-5'>CAN</b>網(wǎng)絡(luò)高效可靠通信(2)

    CYT2BL和SDL v8.0.0是否有可能實現(xiàn)以相同ID發(fā)送和接收CAN報文(RxID、TxID)的功能?

    我使用的是 CYT2BL 和 SDL v8.0.0。 我想發(fā)送和接收具有相同 ID 的 CAN 報文。 1.是否有可能實現(xiàn)以相同 ID 發(fā)送和接收 CAN 報文(RxID、TxID)
    發(fā)表于 07-23 06:12

    TSMaster 中不同總線報文消息過濾的操作方式

    TSMaster軟件平臺支持對不同總線(CAN、LIN、FlexRay)報文和信號的過濾,包括全局接收過濾、數(shù)據(jù)流過濾、窗口過濾、字符串過濾、可編程過濾,針對不同的總線信號過濾器的使用方法基本相
    的頭像 發(fā)表于 06-22 08:21 ?1535次閱讀
    TSMaster 中不同總線<b class='flag-5'>報文</b>消息過濾的操作方式

    如何通過CAN報文TC375傳輸數(shù)據(jù)?

    從示例 MCMCAN_1_KIT_TC375_LK 和 ADC_Single_Channel_1_TC375_LK 開始,我必須用 CAN 報文發(fā)送從模擬通道獲取的數(shù)值。 我就是這么做的: void
    發(fā)表于 05-28 08:30

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

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

    CAN總線波形中為什么ACK電平偏高?

    在觀察CAN通信波形時,我們會發(fā)現(xiàn)差分電平在ACK段突然增高,這是什么原因?qū)е碌哪??本文結(jié)合測試實例對ACK電平偏高的原因做簡單分析。ACK簡介ACK的作用:確認(rèn)一幀報文是否正常接收。
    的頭像 發(fā)表于 03-28 08:23 ?1193次閱讀
    <b class='flag-5'>CAN</b>總線波形中為什么ACK<b class='flag-5'>電平</b>偏高?

    TC275多路CAN節(jié)點,報文接收時需要開啟多路的CAN接收中斷嗎?

    TC275配置使用一路CAN0時,收發(fā)都可以,收報文是開啟的CAN0接收中斷,然后接收報文;現(xiàn)在使用兩路CAN
    發(fā)表于 02-20 08:27

    雙向邏輯電平轉(zhuǎn)換器電路圖分享

    雙向邏輯電平轉(zhuǎn)換器是一種電子器件,用于在不同電壓邏輯電平之間進行轉(zhuǎn)換。它可以將一個邏輯電平轉(zhuǎn)換為
    的頭像 發(fā)表于 02-19 16:54 ?3404次閱讀
    雙向<b class='flag-5'>邏輯</b><b class='flag-5'>電平</b>轉(zhuǎn)換器電路圖分享

    TC387模塊CAN0的節(jié)點2作為CANA使用,CANA既收不到報文也發(fā)不出報文如何解決?

    TC387模塊CAN0的節(jié)點2作為CANA使用,CAN1的節(jié)點0作為CANB使用,配置基本相同。但CANB的通信正常,而在TJA1145正常情形下,CANA既收不到報文,也發(fā)不出報文,
    發(fā)表于 02-19 06:43

    TC39x的can報文過濾規(guī)則怎么設(shè)置?

    TC39x的can報文過濾規(guī)則怎么設(shè)置
    發(fā)表于 02-19 06:12

    CAN FD在發(fā)送報文時會有發(fā)不出去的現(xiàn)象怎么解決?

    現(xiàn)象描述: 在發(fā)送多幀報文數(shù)據(jù)時,出現(xiàn)了較為嚴(yán)重的報文丟失現(xiàn)象。編寫測試程序,在for循環(huán)中循環(huán)發(fā)送id為0-7ff的報文,對返回值進行了判斷。期待收到的報文id為連續(xù)的,且步長為1。
    發(fā)表于 02-02 07:48

    請問TC297如何配置接收多個id的CAN報文?

    例程中使用了IfxMultican_Can_MsgObj_initConfig這個函數(shù),里面設(shè)置了int型的messageId ,只能接收messageId的報文。我看到有
    發(fā)表于 02-02 07:45

    CAN總線報文數(shù)據(jù)一致性校驗

    比如ECU1接收ECU2發(fā)出的一幀0x100報文,協(xié)議層是不會區(qū)分是ECU1發(fā)的,還是非法接入OBD的CAN盒發(fā)的?如果ECU1接收到非ECU2發(fā)出的0x100報文豈不是很危險?
    的頭像 發(fā)表于 01-24 10:03 ?1805次閱讀
    <b class='flag-5'>CAN</b>總線<b class='flag-5'>報文</b>數(shù)據(jù)一致性校驗