张丁:基于CAN总线实现的UDS诊断(DoCAN)zhuanlan.zhihu.com
![ec41bdef2d87593677143efe50cdca18.png](https://i-blog.csdnimg.cn/blog_migrate/a70aa42f446510b9f6b852468f6d5980.jpeg)
我曾经写过一篇《基于CAN总线实现的UDS诊断》,那篇文章中介绍了在CAN总线上实现诊断通信的机制。随着汽车功能越来越丰富,对总线传输能力的要求也进一步提高,CAN总线的升级版本CAN-FD逐渐部署到了量产车辆上。基于CAN-FD和CAN的诊断通信机制基本没差别,但是仍然有一些细节上的变化。本篇文章将简单介绍基于CAN-FD的诊断通信传输层相比于CAN的变化。
CAN-FD是CAN with Flexible Data-Rate的简称,从名称可以看出,CAN-FD的数据速率是可变的。CAN-FD继承了CAN2.0的主要特性,物理层改动较小,仍然具备CAN所拥有的双绞线串行通信、非破坏性仲裁等机制。在CAN2.0中,CAN帧的判决域和数据域的波特率是相同且固定的,最高为1M。但是CAN-FD帧的判决域和数据域的波特率不相同,前者仍然是最高为1M,但是后者可以达到8M。在CAN2.0中,一个CAN帧的数据域最长为8个字节,但是这一数字在CAN-FD中提高到了64。下图简单展示了CAN-FD相对于CAN的优势。比如,在CAN-FD数据域波特率 = 8M,CAN数据域波特率 = 1M的情况下,同样在数据帧中承载8个字节,CAN-FD数据域时长仅为CAN数据域时长的八分之一;在数据域时长相同的情况下,CAN-FD数据域中承载的字节数量是CAN数据域的8