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就不会有问题。这是什么原因,有什么办法可以解决?看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率 jackten 发表于 2017-1-13 19:26
看看stop模式下的晶振频率选择多大的,,一般来说睡眠都会降低速度,从而影响波特率 ...
LPUART采用外部32.768kHz晶振(LSE) 应该是晶振频率误差所致。 32.768kHz晶振分频9600应该很准,估计是你选的晶振不好。 晶振频率有误差,换晶振试试? 后边的对的,晶振频率应该没有问题,如果总是头几个字节有错,可以延时试试 贴UART处理部分的代码出来看看吧,应该是接收处理部分的时序没控制好。 晶振选型 你的波特率分频系数设置是多少?
32768/9600 = 3.413333~;
如果设置分频系数是3的话,那么波特率偏差是,1 - 3/3.413333 = 0.121;
16倍过采样,1/16 = 0.0625;理论上存在可能出现采错的情况。
's'的码值是0x73,而采成了0xf3,最高位被误采多了个1,而串口发送是低位在前,高位在后,误采1的位置正好是停止位(或校验位)的位置。
但具体你这里是怎么回事,还是建议加上示波器看看,第一个字节到底发生了什么。