打印
[XMC™]

如何在XMC7200 evaluation kit 运行高速率CAN_FD ?

[复制链接]
407|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如何在XMC7200 evaluation kit 运行高速率CAN_FD(例如5Mbps) ?

1.使用Modus Toolbox 3.0 创建 KIT_XMC72_EVK →CANFD工程。



2.打开 “Device Configurator 4.0”, 选中已使能的 CAN FD0 → Channel1 模块,并按下图配置 Fast Bit rate Setting 各项参数并保存设置。


3. 编译工程并烧录芯片。使用 CAN 分析工具 (Kvaser CanKing) 测试 CAN通信,发现解析数据为ErrorFrame ,结果如下图:

代码中发送数据为:
/* Array to store the data bytes of the CANFD frame */

uint32_t canfd_dataBuffer[] =
{
    [CANFD_DATA_0] = 0x04030201U,
    [CANFD_DATA_1] = 0x08070605U,
};


4.问题分析:
4.1查看KIT_XMC72_EVK XMC7200 evaluation kit原理图中 CAN硬件模块的设计,截图如下。分析问题可能出在XMC7200 controller或者TLE9251VSJ Transceiver。分析数据1Mbps和2Mbps都能正常通信,超过3.6Mbps以上就出现error,判断可能和回读的偏差有关系。

4.2:查看High Speed CAN FD Transceiver TLE9251VSJ datasheet

我们知道CAN控制器会将收发器RX pin 的数据采样接收,用于判断TX pin 的数据是否被成功发送,以便实现仲裁判断和错误处理。从数据手册看TxD-to-RxD 的最大延迟是215ns,数值与 5Mbps传输速率的 bit 传输时间 (200ns) 相当,所以该延迟会导致回读错位。
经过实测,板级的延迟 为176ns。

5. 解决方法
     5.1  在文档 AN234022-CAN FD Usage in XMC 7000 MCU 的 Initialize CAN FD章节中提及,高速率通信需要配置TDCR寄存器,这一部分在CANFD的初始化结构体里面进行配置。

     对应的代码配置为:
这段code snippet是从Device Configurator 4.0中关于CANFD的配置生成的,配置的截图如下:




TDC( Transceiver Delay Compensation Offset)的取值不是一个确定的值,可以按照取中间值的方式进行测试。假设补偿为100ns;
TQ=(BRP+1)/CLKbus=1/40M=25ns
Offset=100/25=4
  5.2 结果分析:
测试结果如下图:
发送数据可以被成功解析,验证enable TDC的修改是有效的。





2138965d464524ef0b.png (333.4 KB )

2138965d464524ef0b.png

使用特权

评论回复
沙发
EmmaTT| | 2024-2-28 19:05 | 只看该作者
回读的偏差怎么减小啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:
简介:关于英飞凌——我们致力于打造一个更加便利、安全和环保的世界,在赢得自身成功发展的同时,积极践行企业社会责任。

105

主题

189

帖子

5

粉丝