图3 波形差异
根据以上分析,干扰信号的存在使得后续的CAN波形解码会出现与报文解码不同的情况。我们继续往下深究:是否有干扰信号就一定会导致波形解码与报文解码不同呢?其实也不然,这还得从CAN总线的采样规则说起。
二、CAN总线采样规则
CAN控制器先将高频时钟进行预分频,生成较低频率的时钟信号,这个时钟信号的周期定义为1个时间份额,1位CAN信号的码元宽度包含有数倍的时间份额,如控制器时钟频率为16MHz,预分频为8MHz的时钟,则1个时间份额为125ns,对于1M波特率的CAN信号,1位CAN信号的码元宽度即为8个时间份额。
以1个时间份额为最小单位,将1位CAN信号码元分为3段:同步段、相位段1、相位段2。同步段固定为1个时间份额,相位段1和相位段2可设置成不同参数,控制器在相位段1和相位段2之间对CAN总线进行采样。
图4 采样点位置
当干扰信号出现的位置不在采样点位置时,解码是不会因为被干扰而出现错误的,只有当干扰信号刚好位于采样位置时,解码才会因为干扰而出现错误。
图5 干扰位置
CAN总线通常工作在比较恶劣的环境中,常常有干扰信号的存在,CAN总线组网时为了保证解码的一致性,要求所有节点的采样点位置设置应该一致。CANScope中的报文处理和波形处理两部分电路可看成2个CAN节点,CANScope的波形解码的采样点位置设置是跟报文解码的采样点位置保持一致的,然而,当高频干扰信号出现在采样点位置时,即使是在相同采样点位置进行采样,因为波形处理和报文处理电路的带宽差异,还是有较大概率出现波形解码和报文解码不一致的现象。
三、软件逻辑滤波
CANScope采用软件滤波的方式,即对采集到的CAN总线模拟波形信号经过软件差分和逻辑化后的数字信号进行软件滤波,滤波后允许通过的信号带宽随着波特率的不同而不同,波特率越小,滤波后允许的信号带宽越小;通过这样的滤波处理,最大程度提高了对干扰信号的容忍度,甚至在报文解码出现错误的情况下仍然能对波形做出正确的解码。这样,在干扰很严重的情况下就可能会出现文章开头所说的报文解码正确而波形解码错误或者报文解码错误而波形解码正确的现象。