0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【Z站推荐】为什么发送CANFD加速报文要开启发送延迟补偿(TDC)?

ZLG致远电子 2022-07-22 15:13 次阅读

CANFD协议中,有个重要的概念TDC(Transmitter Delay Compensation)即发送延迟补偿。为什么会存在发送延迟,又为什么CANFD要对发送延迟做补偿?

b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg  为什么存在发送延迟?

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

众所周知,CAN控制器发送信号时,是经过收发器后发往CAN总线后,再经过收发器反馈总线信号。那么发送过程中,控制器发送位信号到接收位信号就不可避免存在环路延迟。发送延迟时间的总和如下:

  • CAN控制器内部产生TX信号到Tx引脚的传播延迟;
  • Tx引脚到收发器TxD引脚的传播延迟;
  • 收发器环路延迟TxD到RxD;
  • 收发器RxD引脚到CAN控制器Rx引脚延迟;

CAN控制器Rx引脚到控制器内部收到Rx信号的延迟。

CAN协议中规定:发送方发送位时,需检测接收到的位与发送是否一致,若不一致则产生错误帧(位错误)。如果发送延迟过长,则将直接导致发送与接收位不一致而产生错误帧。由于传统CAN协议规定最高波特率为1Mbps,即位宽1us,正常情况下,传输延迟不会超过位宽的采样点(当然具体延迟取决于收发器环路延迟、传输距离、传输线缆质量等),因此不会因为发送延迟而产生错误。


b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg  为什么CANFD要对发送延迟做补偿?

在CANFD中,数据段的波特率是比CAN更高的(BRS位为隐性时),此时波特率越高,位宽越小,在发送报文时发送延迟影响越大,越容易产生位错误。由于发送延迟无法避免,此时就需要一种机制来保证发送与接收的位对应上,以避免产生位错误。这种机制就是发送延迟补偿了。


b6bdbe6a-03ed-11ed-9ade-dac502259ad0.jpg  发送延迟补偿(TDC)

TDC实际上就是在发送BRS位为隐性的CANFD报文时(BRS隐性即开启数据域波特率),在发送时延迟一定时间后,在第二采样点采样接收位,以正确采样到发送位对应的接收位。

1. 发送延迟测量那么延迟采样的延迟时间是多久呢?实际上,开启TDC后,控制器将自动测量Tx信号线上FDF位到r0位下降沿与Rx信号线上FDF位到r0位边沿的之间的延迟时间,如下图中所示,TDCV即为延迟时间。发送延迟测量的时间单位为CAN控制器时钟(TDC寄存器中一般对TDCV的值有限制,若超过寄存器最大位数,则发送延迟测量失败)。

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

2.第二采样点(SSP)

在达到延迟时间后,控制器此时需要采样接收位,该采样点我们称为第二采样点(SSP=Second Sample Point),以区别未延迟之前的采样点(SP),如下图所示。

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

SSP等于测量延迟TDCV+发送延迟补偿偏移TDCO(TDC Offset)之和。一般TDCO设置与第一采样点一致,即(PROP+TSEG1)* DBRP。主要注意是:实际填入寄存器的波特率参数一般为实际值减一,具体可参考控制器手册说明。此外,ISO11898-1:2015中还对TDC做了一些规定:

  • 开启TDC后,数据段波特率的预分频值(DBRP)应设置为1或2;

控制器实现TDC机制应能补偿至少两个位时间。


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

当CANFD数据域波特率大于1Mbps时,应开启TDC;

数据段波特率的预分频值(DBRP)建议设置为1或2;

  • 第二采样点SSP=发送延迟测量值TD + Offset, 其中Offset设置与第一采样点一致或早1Tq。

当然,USBCANFD-200U系列CANFD卡的TDC也同样遵循上述配置,用户使用时,无需再手动配置。

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

【版权声明】本文为ZLG开发者社区用户原创内容,未经授权不得转载。欢迎更多用户到社区交流互动、创作博文,一经采用,可获得百元京东E卡。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2467

    浏览量

    459197
收藏 人收藏

    评论

    相关推荐

    CAN报文为什么会发送失败?

    CAN总线调试过程中出现报文发送失败。很多工程师都对此只知其一不知其二,今天我们就以CAN报文发送失败的问题来做一次探讨。在了解CAN报文
    的头像 发表于 04-12 08:25 184次阅读
    CAN<b class='flag-5'>报文</b>为什么会<b class='flag-5'>发送</b>失败?

    CAN的报文格式和发送总流程

    在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
    发表于 04-11 10:07 312次阅读
    CAN的<b class='flag-5'>报文</b>格式和<b class='flag-5'>发送</b>总流程

    TSMaster 序列发送模块在汽车开发测试中的应用

    众所周知,序列发送模块可以不需要脚本代码实现测试中特定控制报文序列的发送,该模块多用于循环顺序控制的测试案例中。序列发送模块的常用场景,主要是针对一些新开发的产品需要通过该模块来验证产
    的头像 发表于 02-19 14:00 166次阅读
    TSMaster 序列<b class='flag-5'>发送</b>模块在汽车开发测试中的应用

    CAN FD在发送报文时会有发不出去的现象怎么解决?

    现象描述: 在发送多帧报文数据时,出现了较为严重的报文丢失现象。编写测试程序,在for循环中循环发送id为0-7ff的报文,对返回值进行了判
    发表于 02-02 07:48

    在同一路CAN上配置经典CAN时能正常发送数据 ,按规格书配置为CANFD时,未能发送成功的原因?

    你好,我在同一路CAN上配置经典CAN时能正常发送数据 ,但是按规格书配置为CANFD时,未能发送成功,想请问我以下配置是否正确。 cy_stc_canfd_config_t canC
    发表于 02-02 07:33

    使用CYT2B75芯片CANFD模块无法发送消息是什么原因导致的呢?

    你好,我使用SDL的example中的CANFD代码测试CYT2B75芯片CANFD模块,对部分代码进行了硬件适配修改,详见附件,配置为每秒发送一次CAN报文。 问题:消息
    发表于 02-02 06:57

    MCU如何配置固定TDC

    如附图所示,在发送和接收消息期间,控制器开始发送比特的时间与从接收终端接收到位置的时间之间存在延迟,即发送节点的延迟。 数据字段中
    发表于 01-22 07:29

    TSMaster报文发送的信号生成器操作说明

    信号生成器功能是TSMaster分析中的报文发送模块。信号生成器用于发送和配置每个CAN/LIN信号的值变化行为,简而言之,这是一个可以控制和调整CAN/LIN信号值的功能。我们可选择的信号生成器
    的头像 发表于 12-23 08:21 319次阅读
    TSMaster<b class='flag-5'>报文</b><b class='flag-5'>发送</b>的信号生成器操作说明

    求助,关于M0516的uart外接485芯片时发送和接受切换的问题

    发送状态,发送一串报文给从,经过监测,发送报文没有问题,然后由io口切换成接收状态,按理说
    发表于 08-23 08:28

    CAN FD报文时间计算

    可以根据波特率算出不同类型报文时间,计算公式如下: 报文时间 = 仲裁域位时间 * 仲裁域位数 + 数据域位时间 * 数据域位数 以位数最少的CANFD报文为例,在仲裁域波特率为1Mb
    的头像 发表于 07-18 10:49 1508次阅读
    CAN FD<b class='flag-5'>报文</b>时间计算

    为什么CAN FD通讯要开启发送延时补偿TDC?如何在TCAN4550配置TDC和SSP?

    随着汽车电子和工业的蓬勃发展, CAN总线上的设备数量和数据吞吐量都大大提升。为了满足更高带宽和数据的吞吐量,CAN FD应运而生。CANFD延迟时间更短,具有更好的实时性能和更高的带宽,可以显著提升数据传输的效率。
    的头像 发表于 07-04 10:16 5077次阅读
    为什么CAN FD通讯要<b class='flag-5'>开启</b>收<b class='flag-5'>发送</b>延时<b class='flag-5'>补偿</b><b class='flag-5'>TDC</b>?如何在TCAN4550配置<b class='flag-5'>TDC</b>和SSP?

    关于M0516的uart外接485芯片时发送和接受切换的问题求解

    发送状态,发送一串报文给从,经过监测,发送报文没有问题,然后由io口切换成接收状态,按理说
    发表于 06-26 07:51

    M453单片机的CAN中断接力发送发送报文数量丢失怎么解决?

    1、我使用新唐M453单片机,使用CAN1进行实验,将CAN1的后4个报文缓存RAM做为发送缓冲区来使用。通过线程启动报文发送,在中断中通过查询
    发表于 06-15 07:26

    CANFD每秒最多可以发送多少帧报文

    我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。
    的头像 发表于 05-25 09:21 945次阅读
    <b class='flag-5'>CANFD</b>每秒最多可以<b class='flag-5'>发送</b>多少帧<b class='flag-5'>报文</b>?

    干货分享 | TSMaster小功能之如何在图形中监控某一条DBC报文发送周期?

    今天给大家介绍TSMaster小功能之如何在图形中监控某一条DBC报文发送周期,想要实现这个功能,需要借助TSMaster的小程序功能来实现。步骤一1.创建一个用户变量Cycle,用于在图形中显示
    的头像 发表于 05-09 15:48 813次阅读
    干货分享 | TSMaster小功能之如何在图形中监控某一条DBC<b class='flag-5'>报文</b><b class='flag-5'>发送</b>周期?