[嵌入式] 串口通讯与时钟误差的影响

1. 系统环境

  • 硬件环境
    • stm8s003
    • 8M 外部晶振
  • 软件环境
    • IAR
    • 官方库

2. 问题描述

  • 在9600 可以正常收发,但是改成115200 就出现了大面积的异常,是不是和时钟精度有关系?

  • 串口通讯 允许的误码率是多少

3. 分析问题

  • 串口接收 采样方式

        对一个信号进行 进行16分频采样, 即将信号分成16等分后,一般是取中间的采样值

  • 115200 波特率的由来

        最初是由 11.0592MHz 的晶振 通过6分频, 然后在16分频后,得到的

  • 采样数据的误差

            在最后一个Bit位采样时,允许极限偏移为50%,假如用1个起始位+9个数据位+1个奇偶;校验位+1个停止位来计算,那么每位偏差最高为:

±50% / 12 = ±4.16%

        因此,对于串口通信来说,可以粗略认为,当时钟误差小于±2%时,通信是比较可靠的。对于客户实际的应用系统,考虑到UART是一个异步通讯,通讯的稳定性取决于双方的时钟精度,不是说只有一方的精度满足要求,系统就能正常工作,所以需要系统去考虑。

  • 常见的误差
    • 官方
    • 我补充的    

4. 解决方法

        暂时还没找到, 先留一个眼,后面再来补充

5. 参考链接

串口通讯到底有没有累积误差?对时钟精度到底有何要求?_9600波特率允许误差多大-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值