上周有同事需要支持CANFD的CAN卡出差,本想试试自己做的CANFD盒子,结果CANoe回采回来错误帧,但明明之前两个同样的CANFD盒子是可以通信的,遂上周六借CANoe回家调试。由于没带逻辑分析仪回来,修改了大量CANFD参数,像SEG1、SEG2、SJW,试过官网例程,换过CAN收发器,换过CAN通道,更改供电电源,一连调了两天,仍无法通信。
今天把逻辑分析仪带回来,采集数据并对比和CANoe的差别,结果发现CRC场不同,如下图所示。
后来查找资料,发现CANFD有两种标准,分别为ISO CANFD和非ISO CANFD,非ISO CANFD就是BOSCH制定的规范,目前主流推ISO CANFD。经过查找手册,发现CANFD寄存器默认是ISO CANFD,因此与CANoe通信时总是会报错误帧(CRC错误)。修改寄存器后对比波形,发现与CANoe的波形一致,应该可以通信了。
至此,折腾了四天的事终于搞定了,由于逻辑分析仪没有针对CANFD的解析,今天早上早早起床编写CANFD的解析协议,看来也没有浪费。以后调试硬件前,需要补充扩展相关背景知识。
上传几张采集的CANFD波形,供以后参考。
波特率:500K,CANFD格式,BRS = 0;
ID=0x455,DLC=8,DATA=55 01