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

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

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

【Z站推薦】為什么發(fā)送CANFD加速報(bào)文要開(kāi)啟發(fā)送延遲補(bǔ)償(TDC)?

ZLG致遠(yuǎn)電子 ? 2022-07-22 15:13 ? 次閱讀

CANFD協(xié)議中,有個(gè)重要的概念TDC(Transmitter Delay Compensation)即發(fā)送延遲補(bǔ)償。為什么會(huì)存在發(fā)送延遲,又為什么CANFD要對(duì)發(fā)送延遲做補(bǔ)償?

b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg ?為什么存在發(fā)送延遲?

b6cfb520-03ed-11ed-9ade-dac502259ad0.jpg

眾所周知,CAN控制器發(fā)送信號(hào)時(shí),是經(jīng)過(guò)收發(fā)器后發(fā)往CAN總線后,再經(jīng)過(guò)收發(fā)器反饋總線信號(hào)。那么發(fā)送過(guò)程中,控制器發(fā)送位信號(hào)到接收位信號(hào)就不可避免存在環(huán)路延遲。發(fā)送延遲時(shí)間的總和如下:

  • CAN控制器內(nèi)部產(chǎn)生TX信號(hào)到Tx引腳的傳播延遲;
  • Tx引腳到收發(fā)器TxD引腳的傳播延遲;
  • 收發(fā)器環(huán)路延遲TxD到RxD;
  • 收發(fā)器RxD引腳到CAN控制器Rx引腳延遲;

CAN控制器Rx引腳到控制器內(nèi)部收到Rx信號(hào)的延遲。

CAN協(xié)議中規(guī)定:發(fā)送方發(fā)送位時(shí),需檢測(cè)接收到的位與發(fā)送是否一致,若不一致則產(chǎn)生錯(cuò)誤幀(位錯(cuò)誤)。如果發(fā)送延遲過(guò)長(zhǎng),則將直接導(dǎo)致發(fā)送與接收位不一致而產(chǎn)生錯(cuò)誤幀。由于傳統(tǒng)CAN協(xié)議規(guī)定最高波特率為1Mbps,即位寬1us,正常情況下,傳輸延遲不會(huì)超過(guò)位寬的采樣點(diǎn)(當(dāng)然具體延遲取決于收發(fā)器環(huán)路延遲、傳輸距離、傳輸線纜質(zhì)量等),因此不會(huì)因?yàn)榘l(fā)送延遲而產(chǎn)生錯(cuò)誤。


b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg ?為什么CANFD要對(duì)發(fā)送延遲做補(bǔ)償?

在CANFD中,數(shù)據(jù)段的波特率是比CAN更高的(BRS位為隱性時(shí)),此時(shí)波特率越高,位寬越小,在發(fā)送報(bào)文時(shí)發(fā)送延遲影響越大,越容易產(chǎn)生位錯(cuò)誤。由于發(fā)送延遲無(wú)法避免,此時(shí)就需要一種機(jī)制來(lái)保證發(fā)送與接收的位對(duì)應(yīng)上,以避免產(chǎn)生位錯(cuò)誤。這種機(jī)制就是發(fā)送延遲補(bǔ)償了。


b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg ?發(fā)送延遲補(bǔ)償(TDC)

TDC實(shí)際上就是在發(fā)送BRS位為隱性的CANFD報(bào)文時(shí)(BRS隱性即開(kāi)啟數(shù)據(jù)域波特率),在發(fā)送時(shí)延遲一定時(shí)間后,在第二采樣點(diǎn)采樣接收位,以正確采樣到發(fā)送位對(duì)應(yīng)的接收位。

1. 發(fā)送延遲測(cè)量那么延遲采樣的延遲時(shí)間是多久呢?實(shí)際上,開(kāi)啟TDC后,控制器將自動(dòng)測(cè)量Tx信號(hào)線上FDF位到r0位下降沿與Rx信號(hào)線上FDF位到r0位邊沿的之間的延遲時(shí)間,如下圖中所示,TDCV即為延遲時(shí)間。發(fā)送延遲測(cè)量的時(shí)間單位為CAN控制器時(shí)鐘(TDC寄存器中一般對(duì)TDCV的值有限制,若超過(guò)寄存器最大位數(shù),則發(fā)送延遲測(cè)量失?。?。

b6f92e6e-03ed-11ed-9ade-dac502259ad0.png

2.第二采樣點(diǎn)(SSP)

在達(dá)到延遲時(shí)間后,控制器此時(shí)需要采樣接收位,該采樣點(diǎn)我們稱為第二采樣點(diǎn)(SSP=Second Sample Point),以區(qū)別未延遲之前的采樣點(diǎn)(SP),如下圖所示。

b70c1b14-03ed-11ed-9ade-dac502259ad0.png

SSP等于測(cè)量延遲TDCV+發(fā)送延遲補(bǔ)償偏移TDCO(TDC Offset)之和。一般TDCO設(shè)置與第一采樣點(diǎn)一致,即(PROP+TSEG1)* DBRP。主要注意是:實(shí)際填入寄存器的波特率參數(shù)一般為實(shí)際值減一,具體可參考控制器手冊(cè)說(shuō)明。此外,ISO11898-1:2015中還對(duì)TDC做了一些規(guī)定:

  • 開(kāi)啟TDC后,數(shù)據(jù)段波特率的預(yù)分頻值(DBRP)應(yīng)設(shè)置為1或2;

控制器實(shí)現(xiàn)TDC機(jī)制應(yīng)能補(bǔ)償至少兩個(gè)位時(shí)間。


b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg ?TDC配置建議

當(dāng)CANFD數(shù)據(jù)域波特率大于1Mbps時(shí),應(yīng)開(kāi)啟TDC;

數(shù)據(jù)段波特率的預(yù)分頻值(DBRP)建議設(shè)置為1或2;

  • 第二采樣點(diǎn)SSP=發(fā)送延遲測(cè)量值TD + Offset, 其中Offset設(shè)置與第一采樣點(diǎn)一致或早1Tq。

當(dāng)然,USBCANFD-200U系列CANFD卡的TDC也同樣遵循上述配置,用戶使用時(shí),無(wú)需再手動(dòng)配置。

b73668f6-03ed-11ed-9ade-dac502259ad0.png

【版權(quán)聲明】本文為ZLG開(kāi)發(fā)者社區(qū)用戶原創(chuàng)內(nèi)容,未經(jīng)授權(quán)不得轉(zhuǎn)載。歡迎更多用戶到社區(qū)交流互動(dòng)、創(chuàng)作博文,一經(jīng)采用,可獲得百元京東E卡。

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

    關(guān)注

    57

    文章

    2696

    瀏覽量

    463161
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在CANtest上通過(guò)報(bào)文發(fā)送實(shí)現(xiàn)CCP指令的發(fā)送

    如題,我在CANtest上通過(guò)CAN報(bào)文發(fā)送了CCP指令\'CONNECT\'、\'SET-MTA\'和‘Upload’。前兩個(gè)指令的返回均沒(méi)有報(bào)錯(cuò),可\'Upload\'的返回直接
    發(fā)表于 08-13 10:46

    TC3XX can發(fā)送報(bào)文,周期上下波動(dòng)嚴(yán)重怎么解決?

    使用FULL CAN發(fā)送,周期調(diào)用Can_17_McmCan_lWriteMsgObj發(fā)送報(bào)文,查看周期是穩(wěn)定的,但到發(fā)出來(lái)和中斷觸發(fā)的時(shí)間會(huì)上下波動(dòng),而且波動(dòng)越來(lái)越大。
    發(fā)表于 07-11 08:00

    esp32當(dāng)modbus-rtu slave從通訊,主收不到從的響應(yīng)報(bào)文是哪里的問(wèn)題?

    有朋友測(cè)試過(guò)esp32當(dāng) modbus slave從(我拿的esp32當(dāng)從,用的是RTU模式)嗎? 我用modbus poll軟件測(cè)試下來(lái),主這邊一直收不到從的modbus響應(yīng)
    發(fā)表于 06-17 07:39

    esp32-C3如何才能連續(xù)發(fā)送261字節(jié)報(bào)文

    我們使用的芯片是esp32-C3 IDF版本版本:2.8.1 Build id:20230207-1119 我們嘗試連續(xù)發(fā)送261字節(jié)的報(bào)文,發(fā)幾次后mesh_core/transport.c
    發(fā)表于 06-07 07:38

    STM32G474發(fā)送CANFD數(shù)據(jù)出現(xiàn)異常的原因?

    環(huán)境:stm32g474re,加上主板,CAN總線上一共有9個(gè)節(jié)點(diǎn),其中有一個(gè)節(jié)點(diǎn)是CAN擴(kuò)展幀協(xié)議,其他為CANFD BRS開(kāi)啟,標(biāo)準(zhǔn)幀 配置:仲裁域 1M 80%,數(shù)據(jù)域 5M 75%,開(kāi)啟自動(dòng)
    發(fā)表于 05-30 06:44

    CYT2B75 SK Rev03無(wú)法正常發(fā)送CANFD數(shù)據(jù),為什么?

    _TYPE, 0,stcMsg) 發(fā)送測(cè)試數(shù)據(jù),直接return CY_CANFD_BAD_PARAM,經(jīng)調(diào)用函數(shù)Cy_CANFD_GetTxBufferStatus查看發(fā)送狀態(tài),返回
    發(fā)表于 05-24 07:37

    一幀CANFD報(bào)文由多少個(gè)位組成?

    要想知道CANFD報(bào)文由多少個(gè)位組成,那么我們就要了解CANFD幀結(jié)構(gòu),知道每個(gè)段占用位數(shù)從而得出CANFD報(bào)文位數(shù)。
    的頭像 發(fā)表于 04-27 06:08 ?3772次閱讀
    一幀<b class='flag-5'>CANFD</b><b class='flag-5'>報(bào)文</b>由多少個(gè)位組成?

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

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

    CAN的報(bào)文格式和發(fā)送總流程

    在標(biāo)準(zhǔn)格式中,報(bào)文的起始位稱為幀起始(SOF),然后是由11位標(biāo)識(shí)符和遠(yuǎn)程發(fā)送請(qǐng)求位(RTR)組成的仲裁場(chǎng)。RTR位標(biāo)明是數(shù)據(jù)幀還是請(qǐng)求幀,在請(qǐng)求幀中沒(méi)有數(shù)據(jù)字節(jié)。
    發(fā)表于 04-11 10:07 ?8473次閱讀
    CAN的<b class='flag-5'>報(bào)文</b>格式和<b class='flag-5'>發(fā)送</b>總流程

    TSMaster 序列發(fā)送模塊在汽車開(kāi)發(fā)測(cè)試中的應(yīng)用

    眾所周知,序列發(fā)送模塊可以不需要腳本代碼實(shí)現(xiàn)測(cè)試中特定控制報(bào)文序列的發(fā)送,該模塊多用于循環(huán)順序控制的測(cè)試案例中。序列發(fā)送模塊的常用場(chǎng)景,主要是針對(duì)一些新開(kāi)發(fā)的產(chǎn)品需要通過(guò)該模塊來(lái)驗(yàn)證產(chǎn)
    的頭像 發(fā)表于 02-19 14:00 ?609次閱讀
    TSMaster 序列<b class='flag-5'>發(fā)送</b>模塊在汽車開(kāi)發(fā)測(cè)試中的應(yīng)用

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

    現(xiàn)象描述: 在發(fā)送多幀報(bào)文數(shù)據(jù)時(shí),出現(xiàn)了較為嚴(yán)重的報(bào)文丟失現(xiàn)象。編寫測(cè)試程序,在for循環(huán)中循環(huán)發(fā)送id為0-7ff的報(bào)文,對(duì)返回值進(jìn)行了判
    發(fā)表于 02-02 07:48

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

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

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

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

    MCU如何配置固定TDC?

    如附圖所示,在發(fā)送和接收消息期間,控制器開(kāi)始發(fā)送比特的時(shí)間與從接收終端接收到位置的時(shí)間之間存在延遲,即發(fā)送節(jié)點(diǎn)的延遲。 數(shù)據(jù)字段中
    發(fā)表于 01-22 07:29

    TSMaster報(bào)文發(fā)送的信號(hào)生成器操作說(shuō)明

    信號(hào)生成器功能是TSMaster分析中的報(bào)文發(fā)送模塊。信號(hào)生成器用于發(fā)送和配置每個(gè)CAN/LIN信號(hào)的值變化行為,簡(jiǎn)而言之,這是一個(gè)可以控制和調(diào)整CAN/LIN信號(hào)值的功能。我們可選擇的信號(hào)生成器
    的頭像 發(fā)表于 12-23 08:21 ?902次閱讀
    TSMaster<b class='flag-5'>報(bào)文</b><b class='flag-5'>發(fā)送</b>的信號(hào)生成器操作說(shuō)明