本帖最后由 shuxmpx123 于 2018-1-13 15:28 编辑
我们使用STM8A这个系列芯片,LIN从节点通讯,使用内部时钟,启用了LIN重同步功能。
使用中发现,如果LIN总线上一直有数据通讯的情况下,我们从节点断电后再上电,偶尔会出现芯片一直收不到LIN数据;
后来发现问题出在重同步这个功能上,重同步是指每次同步结束后会重置LIN通讯波特率,收不到数据后发现波特率寄存器被设置了一个跟初始波特率相差很远的一个值,导致后面因波特率不同,一直收不到数据;
后来做了如下测试:
1. 发现收不到数据后重置下初始波特率,通讯恢复;
2.在上电后等待内部时钟稳定,再加一些延时(几十ms)后,开启LIN通讯,这样仍然会出现重同步错误而收不到数据;
3.禁用重同步功能,不会出现收不到数据情况;
那么,根据第2点测试,好像重同步失败不是因为时钟不稳定造成的,
那么可能的原因就是上电后MCU收到了一帧不完整的数据帧,导致误判,在错误的数据域开始重同步,导致跟实际波特率相差甚远, 但是理论上,LIN数据帧由断开符开始, 断开符是连续11个连续的显性位组成,其他数据域不会有连续11个以上的显性位,MCU要收到断开符后才开始重同步,
难道是上电瞬间电压不稳定导致将其他域误判为断开符了?
这应该算是芯片的缺陷吧。。
一周热门 更多>