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

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

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

CAN和CANFD協(xié)議簡介(下)

瑞薩MCU小百科 ? 來源:未知 ? 2023-08-02 12:15 ? 次閱讀
cbed4df8-30e9-11ee-9e74-dac502259ad0.gif

前篇內(nèi)容請點(diǎn)擊查看:

RA MCU CAN和CANFD IP介紹

CAN和CANFD協(xié)議簡介(上)

2. CAN協(xié)議

2.2 協(xié)議層

前文講述了CAN的物理層標(biāo)準(zhǔn),約定了電氣特性,以下介紹的協(xié)議層則規(guī)定了通訊邏輯。

2.2.1 幀的種類

通信是通過以下5種類型的幀進(jìn)行的。

? 數(shù)據(jù)幀

? 遙控幀

? 錯誤幀

? 過載幀

? 幀間隔

在這些幀當(dāng)中,數(shù)據(jù)幀和遙控幀由用戶設(shè)定,其他的幀由CAN的硬件部分完成。

另外,數(shù)據(jù)幀和遙控幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種格式。標(biāo)準(zhǔn)格式有11位的ID,擴(kuò)展格式具有29位ID。

各種幀的用途如下表所示。

cbf99090-30e9-11ee-9e74-dac502259ad0.png

2.2.2 數(shù)據(jù)幀

數(shù)據(jù)幀把消息從發(fā)送單元傳到接收單元,是用戶使用的最基本的幀。數(shù)據(jù)幀由7個段構(gòu)成。

(1) 幀起始:表示數(shù)據(jù)幀開始。

(2) 仲裁段:表示該幀優(yōu)先級的段。

(3) 控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留位。

(4) 數(shù)據(jù)段:數(shù)據(jù)本身,可傳送0~8個字節(jié)。

(5) CRC段:檢查幀的傳送錯誤的段。

(6) ACK段:正常接收確認(rèn)段。

(7) 幀結(jié)束:表示數(shù)據(jù)幀結(jié)束。

cc23f4ca-30e9-11ee-9e74-dac502259ad0.png

2.2.3 遙控幀

接收單元向發(fā)送單元請求消息所用的幀。遙控幀由6 個段組成,也可以說是沒有數(shù)據(jù)段的數(shù)據(jù)幀。

(1) 幀起始(SOF):表示幀的開始。

(2) 仲裁段:表示該幀優(yōu)先級的段。請求具有同樣ID的數(shù)據(jù)幀。

(3) 控制段:表示所請求數(shù)據(jù)的字節(jié)數(shù)及保留位。

(4) CRC段:檢查幀的傳送錯誤的段。

(5) ACK段:正常接收確認(rèn)段。

(6) 幀結(jié)束:表示遙控幀結(jié)束。

cc5cdd26-30e9-11ee-9e74-dac502259ad0.png

關(guān)于遙控幀和數(shù)據(jù)幀:

? 數(shù)據(jù)幀和遙控幀有何不同

遙控幀沒有數(shù)據(jù)段,仲裁段的RTR位為隱性電平。

沒有數(shù)據(jù)段的數(shù)據(jù)幀和遙控幀可通過RTR位區(qū)別開來。

? 遙控幀沒有數(shù)據(jù)段,數(shù)據(jù)長度碼該如何表示?

遙控幀的數(shù)據(jù)長度碼以所請求數(shù)據(jù)幀的數(shù)據(jù)長度碼表示。

? 沒有數(shù)據(jù)段的數(shù)據(jù)幀有何用途?

可用于各單元的定期連接確認(rèn)/應(yīng)答、或仲裁段本身帶有實(shí)質(zhì)性信息的情況下。

2.2.4 錯誤幀

在收發(fā)信中發(fā)現(xiàn)錯誤時用于通知錯誤的幀。錯誤幀由錯誤標(biāo)志和錯誤間隔符構(gòu)成,錯誤幀的發(fā)送是由CAN的硬件部分來完成的。

(1) 錯誤標(biāo)志:錯誤標(biāo)志包括有效錯誤標(biāo)志和無效錯誤標(biāo)志兩種。

? 有效錯誤標(biāo)志:6位顯性電平。

? 無效錯誤標(biāo)志:6位隱性電平。

(2) 錯誤間隔符:錯誤間隔符由8位隱性電平構(gòu)成。

cc821726-30e9-11ee-9e74-dac502259ad0.png

1. 有效錯誤標(biāo)志:處于錯誤有效態(tài)的單元檢出錯誤時傳送的錯誤標(biāo)志。

2. 無效錯誤標(biāo)志:處于錯誤無效態(tài)的單元檢出錯誤時傳送的錯誤標(biāo)志。

3. 錯誤標(biāo)志的重合:由連接到總線上的各單元的錯誤檢出時間不同,錯誤標(biāo)志會發(fā)生重合,最長可延續(xù)到12位。

2.2.5 過載幀

過載幀是用于接收單元通知其尚未完成準(zhǔn)備所用的幀。過載幀由過載標(biāo)志和過載間隔符構(gòu)成。

(1) 過載標(biāo)志:6位顯性電平。過載標(biāo)志的構(gòu)成與有效錯誤標(biāo)志的構(gòu)成相同。

(2) 過載間隔符:8個隱性位。過載間隔符的構(gòu)成與錯誤間隔符的構(gòu)成相同。

cca0a31c-30e9-11ee-9e74-dac502259ad0.png

1. 過載幀的重合:與錯誤標(biāo)志一樣依據(jù)發(fā)生時序不同過載標(biāo)志也會發(fā)生重合,最長可延遲到12位。

2.2.6 幀間隔

幀間隔用于分隔數(shù)據(jù)幀或遙控幀。數(shù)據(jù)幀或遙控幀前插入幀間隔可將本幀與前面發(fā)送的任何幀(數(shù)據(jù)幀、遙控幀、錯誤幀、過載幀)分開。但是,過載幀和錯誤幀前不能插入幀間隔。

(1) 間隔:3位隱性電平。在“間隔”期檢測到顯性電平時,一定要發(fā)送過載幀。然而,在間隔期的第3位出現(xiàn)的顯性電平被認(rèn)為是SOF,此時不發(fā)送過載幀。

(2) 總線空閑:隱性電平,無長度限制(0位亦可)。本狀態(tài)為總線處于空閑中,要發(fā)送的單元可開始發(fā)送消息。

(3) 延遲傳送(發(fā)送暫時停止):8個隱性電平。處于錯誤無效態(tài)的單元在發(fā)送完一個消息后的幀間隔中必須包含的段。

ccd1f9da-30e9-11ee-9e74-dac502259ad0.png

2.2.7 優(yōu)先級的仲裁

在總線空閑態(tài),最先開始發(fā)送消息的單元獲得通信權(quán)。

多個單元同時開始傳送時,各發(fā)送單元從仲裁段的第一位開始進(jìn)行仲裁。位電平第一次出現(xiàn)不同而且位電平為顯性的單元獲得通信權(quán)發(fā)送。仲裁失敗的單元在下一個位開始進(jìn)入接收狀態(tài)。

仲裁的過程如下圖所示:

ccee17e6-30e9-11ee-9e74-dac502259ad0.png

(1) 數(shù)據(jù)幀和遙控幀的優(yōu)先級

具有同樣ID的數(shù)據(jù)幀和遙控幀在總線上競爭時,仲裁段的最后一位(RTR)為顯性電平的數(shù)據(jù)幀具有優(yōu)先權(quán),可繼續(xù)通信。

(2) 標(biāo)準(zhǔn)格式和擴(kuò)展格式的優(yōu)先級

具有相同基本ID的標(biāo)準(zhǔn)格式與擴(kuò)展格式的數(shù)據(jù)幀或遙控幀在總線上競爭時,由于標(biāo)準(zhǔn)格式的RTR位為顯性電平,具有更高的優(yōu)先權(quán),可進(jìn)行發(fā)送。

2.2.8 錯誤的種類

錯誤共有5種。有時數(shù)種錯誤同時發(fā)生。

? 位錯誤

? 填充錯誤

? CRC錯誤

? 格式錯誤

? ACK錯誤

錯誤的種類、錯誤的內(nèi)容、出錯的幀和檢出錯誤的單元如下表所示。

ccfee490-30e9-11ee-9e74-dac502259ad0.png

2.2.9 位時序

一個位可分為4段。

? 同步段(SS: Synchronization Segment)

? 傳播時間段(PTS: Propagation Time Segment)

? 相位緩沖段1(PBS1: Phase Buffer Segment 1)

? 相位緩沖段2(PBS2: Phase Buffer Segment 2)

這些段由最小時間單位Tq(Time Quantum)構(gòu)成。

消息中的1位被分為4個段,每個段又由若干個Tq構(gòu)成,這稱為位時序。

消息中的1位由多少個Tq構(gòu)成、每個段又由多少個Tq構(gòu)成、這些是可以任意設(shè)定的。通過設(shè)定位時序,總線上數(shù)個單元可以以相同的時序?qū)ο⒉蓸?,可以設(shè)定采樣點(diǎn)。采樣點(diǎn)設(shè)置在PBS1的結(jié)束處,以此時檢測到的總線上的電平值作為該位的電平值。

各段的用途和Tq數(shù)如下表所示。

cd396962-30e9-11ee-9e74-dac502259ad0.png

1位的構(gòu)成如下圖所示。

cd7f9298-30e9-11ee-9e74-dac502259ad0.png

2.2.10 取得同步的方法

CAN 協(xié)議的通信方法為非歸零NRZ(Non-Return to Zero)方式。每個位上沒有開始或終了的同步信號。發(fā)送單元以與位時序同步的方式開始發(fā)送數(shù)據(jù)。接收單元根據(jù)總線上電平的變化進(jìn)行同步接收信號。

但是,發(fā)送單元和接收單元存在的時鐘頻率誤差及傳送路徑上的(電纜、驅(qū)動器等)相位延遲會引起同步偏差。因此接收單元通過強(qiáng)制同步、再同步的方法調(diào)整時序進(jìn)行接收。

2.2.11 強(qiáng)制同步

接收單元在總線空閑狀態(tài)檢出幀起始時進(jìn)行的同步調(diào)整。檢出從隱性電平到顯性電平的邊沿時被認(rèn)為是SS段,與SJW無關(guān)。

cdab53c4-30e9-11ee-9e74-dac502259ad0.png

2.2.12 再同步

在接收過程中根據(jù)總線上的電平變化進(jìn)行的同步。

檢出邊沿(總線上的電平跳變)時,對照誤差值并且根據(jù)SJW值延長PBS1段,或縮短PBS2段,以配合同步。但如果發(fā)生了超出SJW值的誤差,按照SJW值作修正。

cdc377a6-30e9-11ee-9e74-dac502259ad0.png

2.2.13 同步規(guī)則

強(qiáng)制同步和再同步遵從如下規(guī)則。

(1) 1 位中只進(jìn)行一次同步調(diào)整(兩次采樣點(diǎn)間)。

(2) 只有當(dāng)邊沿后的總線電平與邊沿前一個總線采樣值不同時,該沿才能用于同步。

(3) 一旦檢測到隱性電平到顯性電平的邊沿,如果滿足條件(1)、(2)須進(jìn)行同步。

(4) 幀間隔(“間隔”的第1位除去)中檢測到隱性電平到顯性電平的邊沿時,須進(jìn)行強(qiáng)制同步。

(5) 其他所有的隱性電平到顯性電平的邊沿,須進(jìn)行再同步。

(6) 發(fā)送單元觀測到自身輸出的顯性電平有延遲時不進(jìn)行再同步。

2.3 CANFD框架

CAN FD可以理解成CAN協(xié)議的升級版,只升級了協(xié)議,物理層未改變。

CAN FD協(xié)議引入了經(jīng)過調(diào)整的CAN數(shù)據(jù)幀,以實(shí)現(xiàn)額外的數(shù)據(jù)字節(jié)和靈活的比特率。

下面我們比較一個11位的傳統(tǒng)CAN幀與一個11位的CAN FD幀(同時也支持29位):

cde6de44-30e9-11ee-9e74-dac502259ad0.png

下面我們一步一步地討論這些差異:

RTR與r1(RRS):傳統(tǒng)CAN中使用了遠(yuǎn)程傳輸請求Remote Transmission Request(RTR)來識別數(shù)據(jù)幀和相應(yīng)的遠(yuǎn)程幀。但在CAN FD中,不支持遠(yuǎn)程幀,遠(yuǎn)程請求替換(r1)始終是顯性(0)。

在CAN-FD幀中,在控制字段中添加了三個新位(FDF、BRS、ESI位):

? 擴(kuò)展數(shù)據(jù)長度 Extended Data Length (EDL):隱性表示幀為CAN-FD,否則該位為顯性(稱為R0)在CAN 2.0幀中。在傳統(tǒng)CAN格式的幀中,所對應(yīng)傳輸?shù)氖俏籖0而不是EDL。

? 比特率切換 Bit Rate Switch(BRS):指示是否啟用兩個比特率。如果是隱性,則比特率從仲裁階段的標(biāo)準(zhǔn)比特率切換到數(shù)據(jù)階段的預(yù)配置交替比特率。如果是顯性,則不切換比特率。

? 錯誤狀態(tài)指示器 Error State Indicator(ESI):表示發(fā)送節(jié)點(diǎn)狀態(tài),指示節(jié)點(diǎn)處于錯誤活動模式還是錯誤被動模式。

DLC:像在傳統(tǒng)CAN中一樣,CAN FD DLC是4位,表示幀中數(shù)據(jù)字節(jié)的數(shù)量。下表顯示了這兩種協(xié)議如何始終使用多達(dá)8個數(shù)據(jù)字節(jié)的DLC。為了維持4位DLC,CAN FD使用從9到15的其余7個值來表示所使用的數(shù)據(jù)字節(jié)數(shù)(12、16、20、24、32、48、64)。

ce0d0a42-30e9-11ee-9e74-dac502259ad0.png

CRC:傳統(tǒng)CAN中的循環(huán)冗余校驗(yàn)(CRC)為15位,而在CAN FD中為17位(最多16個數(shù)據(jù)字節(jié))或21位(20-64個數(shù)據(jù)字節(jié))。在傳統(tǒng)CAN中,CRC中可以包含0到3個填充位,而在CAN FD中,總是有四個固定填充位以提高通信可靠性。

ce35ad12-30e9-11ee-9e74-dac502259ad0.png

總結(jié)起來,CAN和CANFD協(xié)議是一種常用于汽車和工業(yè)領(lǐng)域的通信協(xié)議。CAN協(xié)議是一種高效可靠的串行通信協(xié)議,而CANFD協(xié)議在保持CAN協(xié)議基本特性的基礎(chǔ)上增強(qiáng)了數(shù)據(jù)傳輸速率和數(shù)據(jù)長度。這兩種協(xié)議都在車輛電子系統(tǒng)中扮演著重要的角色,實(shí)現(xiàn)了車內(nèi)各個電子設(shè)備之間的可靠通信。

更多內(nèi)容,您可復(fù)制下方網(wǎng)址到瀏覽器中打開進(jìn)入瑞薩中文論壇查看:

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

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

    關(guān)注

    146

    文章

    16665

    瀏覽量

    347751
  • 瑞薩
    +關(guān)注

    關(guān)注

    33

    文章

    22274

    瀏覽量

    85508

原文標(biāo)題:CAN和CANFD協(xié)議簡介(下)

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【龍芯2K0300蜂鳥板試用】CAN接口驅(qū)動板設(shè)計(jì)、CANFD測試、CAN C++程序驅(qū)動測試

    :ProProject_loongson-CANFD-ext_2024-08-25.epro.7z 測試 先用短接線把兩路CAN短接起來,測試一互相收發(fā): 測試CAN通信
    發(fā)表于 08-25 21:09

    canfd標(biāo)準(zhǔn)幀的id段及相關(guān)特性

    。 1. CAN協(xié)議簡介 在深入了解CAN FD之前,讓我們先回顧一CAN
    的頭像 發(fā)表于 07-24 15:22 ?677次閱讀

    CANFD_TopFIFO無法正常工作的原因?

    我閃爍了 CANFD_TopFIFO 示例代碼,但沒有得到預(yù)期的輸出。 在 FIFO 模式測試 CAN Rx 時,即使接收多個報(bào)文,F(xiàn)IFO 編號也始終顯示為 0。 雖然我能正確接收
    發(fā)表于 07-03 08:06

    詳解TSMaster CANCANFD 的 CRC E2E 校驗(yàn)方法

    面對切換工具鏈的用戶來說,在TSMaster上完成總線通訊中的CRC/E2E校驗(yàn)處理不是特別熟悉,該文章可以協(xié)助客戶快速使用TSMaster完成CAN/CANFD總線通訊的CRC/E2E校驗(yàn)。本文
    的頭像 發(fā)表于 05-25 08:21 ?1191次閱讀
    詳解TSMaster <b class='flag-5'>CAN</b> 與 <b class='flag-5'>CANFD</b> 的 CRC E2E 校驗(yàn)方法

    canfd協(xié)議是什么?canfd協(xié)議的應(yīng)用場景

    CAN FD(CAN with Flexible Data rate)協(xié)議是一種串行通訊協(xié)議,繼承了CAN總線的主要特性,如雙線串行通訊、非
    的頭像 發(fā)表于 04-17 14:55 ?1694次閱讀

    CANCANFD協(xié)議簡介

    CANCANFD協(xié)議簡介
    的頭像 發(fā)表于 02-19 12:08 ?345次閱讀
    <b class='flag-5'>CAN</b>和<b class='flag-5'>CANFD</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>簡介</b>(<b class='flag-5'>下</b>)

    在同一路CAN上配置經(jīng)典CAN時能正常發(fā)送數(shù)據(jù) ,按規(guī)格書配置為CANFD時,未能發(fā)送成功的原因?

    你好,我在同一路CAN上配置經(jīng)典CAN時能正常發(fā)送數(shù)據(jù) ,但是按規(guī)格書配置為CANFD時,未能發(fā)送成功,想請問我以下配置是否正確。 cy_stc_canfd_config_t canC
    發(fā)表于 02-02 07:33

    使用CYT2B75芯片CANFD模塊無法發(fā)送消息是什么原因?qū)е碌哪兀?/a>

    你好,我使用SDL的example中的CANFD代碼測試CYT2B75芯片CANFD模塊,對部分代碼進(jìn)行了硬件適配修改,詳見附件,配置為每秒發(fā)送一次CAN報(bào)文。 問題:消息發(fā)送失敗,且電腦上位機(jī)無法
    發(fā)表于 02-02 06:57

    CAN總線最大能夠帶多少節(jié)點(diǎn)?CANFD相對于CAN2.0有哪些差異呢?

    CAN總線最大能夠帶多少節(jié)點(diǎn)?CANFD相對于CAN2.0有哪些差異呢? CAN總線最大能夠帶多少節(jié)點(diǎn)? CAN總線是一種廣泛應(yīng)用于汽車領(lǐng)域
    的頭像 發(fā)表于 01-31 14:08 ?2496次閱讀

    CANCANFD協(xié)議簡介(上)

    CANCANFD協(xié)議簡介(上)
    的頭像 發(fā)表于 01-26 08:06 ?533次閱讀
    <b class='flag-5'>CAN</b>和<b class='flag-5'>CANFD</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>簡介</b>(上)

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

    CAN總線協(xié)議是一種串行通訊協(xié)議,主要用于汽車和工業(yè)自動化領(lǐng)域,實(shí)現(xiàn)了實(shí)時應(yīng)用的需求。 首先,CAN總線協(xié)議的基本概念包括報(bào)文、信息路由和位
    的頭像 發(fā)表于 01-19 17:47 ?997次閱讀

    cancanfd的區(qū)別

    cancanfd的區(qū)別? CAN(Controller Area Network)和CAN-FD(CAN with Flexible Da
    的頭像 發(fā)表于 12-07 15:37 ?3610次閱讀

    CANCANFD的區(qū)別 CANCANFD如何轉(zhuǎn)換

    CANCANFD的區(qū)別 CANCANFD如何轉(zhuǎn)換? CAN(Controller Area Network)是一種廣泛應(yīng)用于汽車和工業(yè)控
    的頭像 發(fā)表于 11-22 16:37 ?4926次閱讀

    CAN/CANFD通信協(xié)議簡介

    CAN遵循ISO制定的OSI(Open System Interconnection)七層模型,其結(jié)構(gòu)體現(xiàn)了兩層:數(shù)據(jù)鏈路層、物理層。
    的頭像 發(fā)表于 10-31 12:48 ?4149次閱讀
    <b class='flag-5'>CAN</b>/<b class='flag-5'>CANFD</b>通信<b class='flag-5'>協(xié)議</b><b class='flag-5'>簡介</b>

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

    CAN協(xié)議棧 汽車CAN協(xié)議棧是一種軟件組件,用于實(shí)現(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>棧介紹