Blen 发表于 2017-1-13 16:20:48

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就不会有问题。这是什么原因,有什么办法可以解决?

jackten 发表于 2017-1-13 19:26:38

看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率

Blen 发表于 2017-1-16 16:39:20

jackten 发表于 2017-1-13 19:26
看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率 ...

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

wenyangzeng 发表于 2017-2-7 07:25:10

应该是晶振频率误差所致。

wtliu 发表于 2017-2-7 08:23:03

32.768kHz晶振分频9600应该很准,估计是你选的晶振不好。

ts2000 发表于 2017-2-7 08:36:08

晶振频率有误差,换晶振试试?

zhjb1 发表于 2017-2-7 09:03:05

后边的对的,晶振频率应该没有问题,如果总是头几个字节有错,可以延时试试

hjl2832 发表于 2017-2-7 10:23:46

贴UART处理部分的代码出来看看吧,应该是接收处理部分的时序没控制好。

boboo-23776 发表于 2017-2-7 10:46:34

晶振选型

toofree 发表于 2017-2-7 10:56:09

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