关于CAN和CANFD物理层和数据链路层的对比分析

关于CAN和CANFD物理层和数据链路层的对比分析

物理层:CAN和CANFD的物理层相同,只是进行了协议升级。所以硬件方面并未发生改变。需要一个CAN收发器、CAN控制器。其中CAN控制器是CAN局域网控制器的简称,主要作用是解决不同设备之间数据交换的问题;CAN收发器的作用是将二进制数据流转化成差分信号输出,或者将差分信号转化成二进制数据流输出。在CAN总线上,需要在总线远端配备120Ω的终端电阻,作用类似于485、232等通信一样,等同传输线阻抗,减少信号的反射。但是如果是长距、低速传输并不需要配备120Ω的终端电阻。
数据链路层:
(1) 速率:CAN:数据最大传输速率为1Mbps,并且不可变。
CANFD:数据最大传输速率为8Mbps,仲裁比特率最高为1Mbps(和CAN相同)。 在这里插入图片描述
对于CANFD的可变速率来讲, BRS位为比特率加速过度阶段,前半阶段会采用最高位1M的传输速率,后半段会采用高比特传输,在CRC界定符位的传输情况和BRS位的传输情况相同,但是速率的过度正好相反。在BRS位中,CANFD数据段以BRS采样点作为起始点,显性位表示转换速率不可变,隐性位表示转换速率可变。CRC界定符位中,CANFD数据以CAC界定符的采样点为结束点。
(2) 数据长度:CAN:一帧数据长8个字节。
CANFD:一帧数据最长64个字节。
(3) 帧格式:CANFD新增了FDF、BRS、ESI位。
FDF:隐性电平为CANFD报文;显性为CAN报文。
BRS:隐性为转换可变速率;显性为不可转变可变速率。
ESI:处于被动错误状态的节点时为隐性电平发送处于被动错误状态标识;处于主动错误状态的节点时为显性电平发送处于主动状态错误标识。发送错误标识的同时可正常通信,节点仍然可以从总线上获取其他报文,也可以在总线竞争获胜之后发送报文。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在初始化完成时,系统处于错误主动状态,当接收错误计数器或者发送错误计数器的值在127之上的时候,变为错误被动状态;当接收错误计数器和发送错误计数器的值都在128之下的时候,变为错误被动状态,当发送错误计数器的值在255之上的时候,总线关闭。当复位后或检测到128个连续的隐性位则再次进入错误主动状态。
(4) CRC校验:以填充位流进行计算,在校验和部分,为避免有再有连续的位超过6个,就在第一位以及每后四位添加一个填充位加以分割,这个填充位是上一位的反码,如果填充的不是上一位的反码,就做错误处理。针对不一样的CAN发送数据字节数,对应不同的CRC位数。
在这里插入图片描述
(5) 应答位:CANFD接收一个两位的ACK,也用作网络中所有节点的再同步。
(6) 同步:考虑到总线上的各个节点延迟,主机发送报文到从机接收到报文和从机发送报文到主机接收到报文时存在时间差,所以要进行时间补偿提高通信的成功率。
CAN和CANFD的同步方式分为重同步和硬同步
重同步:会对每一位的下降沿和配置的波特率进行比对,如果没有匹配,则进行同步。
硬同步:在每个帧起始的下降沿进行强制同步。
(7) 仲裁:在总线竞争中,ID数越小,优先级越高。在两个设备ID相同的情况下,显性位的优先级高于隐性位的优先级。
CAN的ID:11位(标准帧)
在这里插入图片描述
CANFD的ID:11位(标准帧)+18(扩展ID)
在这里插入图片描述
如果涉及到标准帧和扩展帧的仲裁,标准帧会和扩展帧的b28-b18进行竞争,如果和扩展帧的b28-b18具有相同的ID,由于标准帧的扩展ID为0 ,则标准帧赢得竞争。
总结:CANFD具有更高的可调传输速率,更精准的CRC校验公式,是CAN通信协议的升级版,在物理层并未发生变化,只是在数据链路层发生变化。

(以上为个人学习总结,转载注明出处。另推荐一个pdf文档,对比CAN和CANFD的报文结构,本文出处大多数来自于该文档。如有理解偏差,请私信交流,在本人文章列表,如有需要请下载。)

猜你喜欢

转载自blog.csdn.net/qq_42395639/article/details/106332096