打印
[STM8]

STM8串口工作一段时间后出现通讯异常的问题

[复制链接]
354|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2022-6-9 20:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
公司有款产品用STM8L052R8T6串口(uart3 PF0 PF1)和STM8L051F3(UART1 PA2 PA3)通讯。芯片通过40cm长的导线连接在一起,导线可以拔插。连接线上串联有100R电阻,不加电阻会导致芯片串口甚至整个芯片烧坏。STM8L051F3控制一个电机,堵转时电流可能会有6A。
    大部时间两个单片机处理休眠状态,关闭串口,RX脚配置为外部中断下降沿触发,TX配置为推挽输出高。芯片唤醒的时候把中断功能关闭再使能串口。发送数据前先发送几个0x00唤醒对方再发有用数据。通讯速率很低。两个芯片都用了RC16M主频。

    产品在终端客户手上使用一段时间后可能会出现通讯不上的问题。出现问题后过一段时间可能会自行恢复。通过对STM8L052R8T6做热复位, 问题犹在,STM8L051F3有每分钟软件复位机制。系统重新后就正常了,经过一段时间后可能还会出现问题。有个客户反馈产品完全异常之前有出现10次操作有3次成功的状态。产品带回公司测试几个月也未能复现通讯异常状态。

    除了串口不能通讯外其它功能都可以正常操作。STM8L052R8的另外一个串口也还可以正常操作。STM8L051还可以执行按键检测和电机控制。

使用特权

评论回复
沙发
heweibig| | 2022-6-9 20:47 | 只看该作者
可能是串口硬件问题

使用特权

评论回复
板凳
yszong| | 2022-6-9 20:50 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
地板
liliang9554|  楼主 | 2022-6-9 20:52 | 只看该作者
用了IAR for stm8 的开发环境。因为空间不足,把代码优化等级调到最高。

使用特权

评论回复
5
tian111| | 2022-6-9 20:56 | 只看该作者
以前用STVD出现过因为优化等级太高导致结果出错,后换成IAR.

使用特权

评论回复
6
zhanghqi| | 2022-6-9 20:58 | 只看该作者
没听过stm串口很弱,好用的很。

使用特权

评论回复
7
zwll| | 2022-6-9 21:04 | 只看该作者
客户处有大功率的电器运行,硬件干扰,代码写的不够健壮,没看门狗

使用特权

评论回复
8
liliang9554|  楼主 | 2022-6-9 21:06 | 只看该作者
我也是一直在用ST的芯片,32F,8S,8L的都在用。串口也是一直在用。从来没有遇到过这样的问题。关于STM串口弱的问题,写在这里也是想求证一下。可以确定的时这个产品是家用的,不会有大功率电器干扰,静电测试15K没有问题。软件方面和另外一个串口的相似,反复验证过代码上。

使用特权

评论回复
9
huangchui| | 2022-6-9 21:09 | 只看该作者
软件问题,硬件问题一般重启后仍然有问题的。可能是通信过程中出现数据错了,导致一直丢帧

使用特权

评论回复
10
dengdc| | 2022-6-9 21:11 | 只看该作者
如果你有富裕的管脚,建议你使用独立的管脚用于唤醒,如果**用这种方法,唤醒时要考虑单字节发送,然后串口停止发送超过一个字节(10bits)的时间

使用特权

评论回复
11
wuhany| | 2022-6-9 21:14 | 只看该作者
嗯,因为受限于连线的粗细关系,所以用串口做了复用。在系统唤醒之后串口就是专用的了,发送唤醒字节后还加了10mS延时,远大于11bits的时间。

使用特权

评论回复
12
liliang9554|  楼主 | 2022-6-9 21:16 | 只看该作者
看现象应是电机大负载突变干扰,建议 电源加大抗干扰措施。主要看客户负载突变时,监视主控板电源变化纹波即可

使用特权

评论回复
13
zhanghqi| | 2022-6-9 21:19 | 只看该作者
在MCU的LDO输入端加好二极管和大电容。用示波器看过MCU的VCC,即使是在电机电流大到5A时,VCC的波动几乎是没有的。电机驱动芯片的逻辑电源和MCU共用。驱动芯片的地加了0.1R的采样电阻用于给单片机判断电机堵转。

使用特权

评论回复
14
juventus9554| | 2022-6-9 21:22 | 只看该作者
改成用0xFF唤醒试试,唤醒时间太长可能导致起始位错位。

使用特权

评论回复
15
liliang9554|  楼主 | 2022-6-9 21:25 | 只看该作者
嗯,我在发送唤醒字节之后加了10ms延时,应该是足以避开错位的问题。

使用特权

评论回复
16
zhanghqi| | 2022-6-9 21:27 | 只看该作者
这个通讯频率很低,还涉及低功耗唤醒, 在客户那能复现,实验室无法复现,热复位还有问题,感觉应该还是客户那环境干扰严重。

使用特权

评论回复
17
pengf| | 2022-6-9 21:30 | 只看该作者
建议软件包 通讯字节 尾 加 CRC 校验,CRC不通过的,丢掉重发

使用特权

评论回复
18
huangchui| | 2022-6-9 21:32 | 只看该作者
主电源是3.3 v吗还是5 v, 要不改成 RS 485 对 RS 485 这样通讯温定性就很强悍了,实质上大距离,都是用485 来提高通讯可靠性。

使用特权

评论回复
19
liliang9554|  楼主 | 2022-6-9 21:40 | 只看该作者
谢谢!主电源3.3V 要低功耗,没有几uA的485方案吧?而且通讯要求全双功。

使用特权

评论回复
20
liliang9554|  楼主 | 2022-6-9 21:43 | 只看该作者
预料中的结果,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝