本帖最后由 edan_lee 于 2020-5-27 12:06 编辑
公司有款产品用STM8L052R8T6串口(uart3 PF0 PF1)和STM8L051F3(UART1 PA2 PA3)通讯。芯片通过40cm长的导线连接在一起,导线可以拔插。连接线上串联有100R电阻,不加电阻会导致芯片串口甚至整个芯片烧坏。STM8L051F3控制一个电机,堵转时电流可能会有6A。
大部时间两个单片机处理休眠状态,关闭串口,RX脚配置为外部中断下降沿触发,TX配置为推挽输出高。芯片唤醒的时候把中断功能关闭再使能串口。发送数据前先发送几个0x00唤醒对方再发有用数据。通讯速率很低。两个芯片都用了RC16M主频。
产品在终端客户手上使用一段时间后可能会出现通讯不上的问题。出现问题后过一段时间可能会自行恢复。通过对STM8L052R8T6做热复位, 问题犹在,STM8L051F3有每分钟软件复位机制。系统重新后就正常了,经过一段时间后可能还会出现问题。有个客户反馈产品完全异常之前有出现10次操作有3次成功的状态。产品带回公司测试几个月也未能复现通讯异常状态。
除了串口不能通讯外其它功能都可以正常操作。STM8L052R8的另外一个串口也还可以正常操作。STM8L051还可以执行按键检测和电机控制。
咨询了一个熟悉芯片硬件的大哥,大哥说可能是串口硬件问题,STM8串口很弱。至于是什么弱,他没说。
补充一点:用了IAR for stm8 的开发环境。因为空间不足,把代码优化等级调到最高。以前用STVD出现过因为优化等级太高导致结果出错,后换成IAR.
以上问题你有遇到过吗?大概会是什么原因?
|