基于CAN-FD的诊断通信传输层

网络架构评论字数 1536阅读模式
线束工程师必备资料包

上一篇《基于CAN总线实现的UDS诊断》中介绍了在CAN总线上实现诊断通信的机制。随着汽车功能越来越丰富,对总线传输能力的要求也进一步提高,CAN总线的升级版本CAN-FD逐渐部署到了量产车辆上。

基于CAN-FD和CAN的诊断通信机制基本没差别,但是仍然有一些细节上的变化。本篇文章将简单介绍基于CAN-FD的诊断通信传输层相比于CAN的变化。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

CAN-FD是CAN withFlexible Data-Rate的简称,从名称可以看出,CAN-FD的数据速率是可变的。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

CAN-FD继承了CAN2.0的主要特性,物理层改动较小,仍然具备CAN所拥有的双绞线串行通信、非破坏性仲裁等机制。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

在CAN2.0中,CAN帧的判决域和数据域的波特率是相同且固定的,最高为1M。但是CAN-FD帧的判决域和数据域的波特率不相同,前者仍然是最高为1M,但是后者可以达到8M。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

在CAN2.0中,一个CAN帧的数据域最长为8个字节,但是这一数字在CAN-FD中提高到了64。下图简单展示了CAN-FD相对于CAN的优势。比如,在CAN-FD数据域波特率 = 8M,CAN数据域波特率 = 1M的情况下,同样在数据帧中承载8个字节,CAN-FD数据域时长仅为CAN数据域时长的八分之一;在数据域时长相同的情况下,CAN-FD数据域中承载的字节数量是CAN数据域的8倍。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

一个CAN-FD帧的数据域中可能存在的字节数量为1-8, 12, 16, 20, 24, 32, 48 ,64。数据长度由帧格式中的DLC字段决定。在DLC从0到8时,DL(数据长度)值也是从0到8逐渐加1增长。但是对于DLC大于8的情况,CAN将所有DL都当作8处理,CAN-FD的DL与DLC的对照关系如下表所示。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

DLC与DL的对照表文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

下图展示了CAN与CAN-FD帧上存在的一些不同。文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

文章源自线束工程师之家-https://www.suncve.com/diagnosis-communication-transmission-layer-based-on-can-fd/

与CAN相比,CAN-FD的帧中多出了以下3个字段。

FDF(FD FormatIndicator):Dominant (0) = CAN Frame, Recessive (1) = CAN FD Frame;

BRS(Bit RateSwitch):Dominant (0) = 数据域速率不变,与判决域速率相同;Recessive (1) = 数据域速率提升;

ESI(Error StateIndicator):Dominant (0) = CAN FD 节点处于主动报错状态, Recessive(1)= CAN FD节点处于被动报错状态。

当BRS位为隐性时,从ESI位开始一直到CRC域结束,都采用变化后的速率。

值得注意的是,CANFD 节点可以正常收发传统CAN 节点报文,但是传统 CAN 节点不能正常收发 CANFD 节点的报文。

在《基于CAN总线实现的UDS诊断》一文中提到,基于CAN总线的诊断传输层总共定义了4种帧,即SingleFrame、FirstFrame、ConsecutiveFrame、FlowControl。基于CAN-FD总线的诊断传输层也使用这4种帧,但不同之处在于,因为每帧承载的数据量更大,所以SingleFrame和FirstFrame有两种情况,下图展示了这两种情况。

在CAN-FD中诊断通信传输层的SingleFrame和FirstFrame的变化

因为CAN-FD一帧可以承载的字节数最大为64,所以传统CAN中用4个bit来表示SF_DL就不够用了,当我们构造的单帧长度大于8个字节时,CAN-FD使用Byte1来指示SF_DL。同理,当一个需要分包的数据过大,导致FF_DL需要大于4095时,那么在传统CAN中用于表示FF_DL的12个bit就不够了,在这种情况下FirstFrame的格式要根据上图发生变化。

来源:汽车ECU网络诊断技术,作者:zdybupt

weinxin
我的微信
立即关注公众号线束工程师:
1、免费领取线束设计资料包(资源); 2、进入线束技术交流专家群(进群);3、免费获取发布求职招聘信息。
线束工程师进群
 
电子电气架构设计的取与舍 网络架构

电子电气架构设计的取与舍

我理想中的电子电气架构是什么样子的?这个课题我自己思考过很多次,但是每次都是一些零散的想法,然后因为一些偶然的发现,又自己否定了自己。然后我发现这个事情就跟一千个人眼中就有一千个哈姆雷特一样,没有标准...
线束工程师必备资料包

发表评论