波特率(也称位定时,就是信号位的最小脉宽)是 CAN 总线通讯的最基本要素。如果波特率不匹配或者波特率有所偏差,会导致识别信号的错误,造成无法通讯或者通讯异常。所以任何情况下,对异常的 CAN 总线测试,首先都要测试波特率的准确性。
波特率偏差主要发生在如下情况:使用了非整数值的晶振(比如 11.0592MHZ)、 极端温度导致晶振偏差、CAN 控制器内部波特率发生器偏差。
RoyalScope 具备自动匹配与统计波特率的功能,可以直观地反映总线上的波特率状况。
自动侦测波特率
眼图测量查看波特率
用户可以点击电压测量和时间测量,或者选中自动测量,来对眼图的位宽和位高进行测量,位宽度就是波特率的倒数,这样就可以非常精确获取波特率准确值。
解决位定时异常方法:
-
通过 RoyalScope 眼图反溯功能(见眼图排查故障章节),找到波特率不匹配的节点,对其程序 中的位定时寄存器或者晶振进行修正为正确位时间;
-
将总线上每个节点单独上电,用 RoyalScope的眼图功能单独测试其波特率,找到故障节点,亦对其程序中的位定时寄存器或者晶振进行修正为正确位时间。
-
如果无法修改故障节点的程序,或者已经是同样的波特率还是无法正常通讯。这时需要考虑到可能是采样点不一致导致。所以建议修改正常节点的程序。需要提高正常节点波特率寄存器中的同步跳转宽度 SJW 值(加大到 3 个单位时间),则可以加大位宽度和采样点的容忍度。
-
如果所有节点都无法修改,则建议购买来可电子的 CAN 网桥 CANbridge 串联在故障节点上,由 CAN 网桥来调整两端的波特率寄存器匹配值,保证通讯。