如何在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,判断可能和回读的偏差有关系。
我们知道CAN控制器会将收发器RX pin 的数据采样接收,用于判断TX pin 的数据是否被成功发送,以便实现仲裁判断和错误处理。从数据手册看TxD-to-RxD 的最大延迟是215ns,数值与 5Mbps传输速率的 bit 传输时间 (200ns) 相当,所以该延迟会导致回读错位。 经过实测,板级的延迟 为176ns。
5. 解决方法
对应的代码配置为: 这段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的修改是有效的。
|