STM32/STM8技术论坛
直播中

彭玉林

7年用户 192经验值
私信 关注
[问答]

STOP模式串口通讯误码率高

STM32nucleo开发板,mcu是STM32L053R8,LPUART采用外部32.768kHz晶振(LSE),波特率9600。在STOP模式下接收数据第一个字节误码率很高(30%~40%)。比如PC发送一个字符串“sleep”(73 6C 65 65 70 0D 0A),而MCU接收到的是eep”(F3 6C 65 65 70 0D 0A).波特率改为4800就不会有问题。这是什么原因,有什么办法可以解决?

回帖(22)

尹聪

2018-11-26 09:02:12
看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率
举报

彭玉林

2018-11-26 09:19:12
引用: andyseu 发表于 2018-11-26 10:20
看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率

LPUART采用外部32.768kHz晶振(LSE)
举报

何秀珍

2018-11-26 09:25:00
应该是晶振频率误差所致。
举报

张辉

2018-11-26 09:41:38
32.768kHz晶振分频9600应该很准,估计是你选的晶振不好。
举报

张志诚

2018-11-26 09:50:53
晶振频率有误差,换晶振试试?
举报

李蕊

2018-11-26 10:07:43
后边的对的,晶振频率应该没有问题,如果总是头几个字节有错,可以延时试试
举报

李杰

2018-11-26 10:16:48
贴UART处理部分的代码出来看看吧,应该是接收处理部分的时序没控制好。
举报

李晓欢

2018-11-26 10:32:35
晶振选型
举报

李维嘉

2018-11-26 10:42:32
你的波特率分频系数设置是多少?
32768/9600 = 3.413333~;
如果设置分频系数是3的话,那么波特率偏差是,1 - 3/3.413333 = 0.121;
16倍过采样,1/16 = 0.0625;理论上存在可能出现采错的情况。
's'的码值是0x73,而采成了0xf3,最高位被误采多了个1,而串口发送是低位在前,高位在后,误采1的位置正好是停止位(或校验位)的位置。
但具体你这里是怎么回事,还是建议加上示波器看看,第一个字节到底发生了什么。
举报

李兆水

2018-11-26 10:57:30
感觉和晶振关系不大吧。
举报

李富贵

2018-11-26 11:08:47
明显是延时不够导致的。
建议增加延时。
举报

康大争

2018-11-26 11:22:54
晶振选型
举报

张桂芝

2018-11-26 11:41:14
后边的对的,晶振频率应该没有问题,如果总是头几个字节有错,可以延时试试
举报

钟晶

2018-11-26 12:01:01
:)
举报

钟晶

2018-11-26 12:17:03
:P
举报

钟晶

2018-11-26 12:22:43
举报

钟晶

2018-11-26 12:35:34
举报

钟晶

2018-11-26 12:51:52
举报

李衍安

2018-11-26 13:07:22
延时一下看看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分