当前位置:网站首页>UART波特率对时钟精度的要求有多高?
UART波特率对时钟精度的要求有多高?
2022-06-25 16:56:00 【天外飞仙CUG】

串口通讯(UART)是一种异步通讯,收发双方需要按照约定的波特率进行通讯。当波特率出现误差时,会导致通讯出错。那导致波特率出现误差的因素都有哪些呢,今天就来分析一下。
1.分频误差
首先,波特率是根据系统时钟分频产生的,而系统时钟和波特率可能不是整数倍的关系,所以分频时也会产生误差。但是目前大部分MCU的系统时钟比较高,一般都在几十MHz,远远大于串口通讯波特率,所以这个误差影响很小。假设MCU时钟为48MHz,波特率为115200,48MHz/115200=416.67,按照417分频,实际波特率为48M/417=115108,误差为(115200-115108)/115200,约为0.08%,这个误差很小,对串口通讯没什么影响。
但是,当系统时钟较低,或者波特率较高时,也就是两者相差倍率较小时,这个误差就不可忽视。
对于一些较早的51内核的MCU,由于运行频率低,采用非整数的晶振(比如11.0592M等)就是为了使用常见波特率时(比如9600、115200),分频的误差尽量小。
2.时钟误差
其次,波特率的主要误差还是取决于系统时钟的误差。那串口通讯对时钟误差的要求有多高呢?
先看串口通讯时序图:

串口通讯由起始位、数据位、校验位、停止位组成。以常见的8N1为例,即1位起始位,8位数据位,无校验,1位停止位。也就是说传输一个字节需要10bits。每一个字节都有一个起始位做同步,所以误差只会在一个字节内累计。
不难看出,在最后一个位采样时,误差最大,允许极限误差为0.5位。按照每个字节10位计算,最大允许误差为±0.5/10=±0.05,即±5%。考虑到串口通讯涉及收发两端,两端都可能存在误差,所以,每端的误差最好控制在±2.5%以内。
当数据位、校验位等较多时,要求的时钟误差就更高一些。考虑到上面所说的分频误差,一般来说,当时钟误差小于±2%时,串口通信是比较可靠的。
推荐阅读:
欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。
边栏推荐
- A complete collection of APP testing tools. It's enough to collect this one
- Automatic submission for the next education day
- 六大专题全方位优化,阿里巴巴性能优化小册终开源,带你直抵性能极致
- 剑指 Offer II 014. 字符串中的变位词 滑动窗口
- try with resource
- Tensorflow old version
- Difference between app test and web test
- How smart PLC constructs ALT instruction
- Learn Tai Chi Maker - mqtt (III) connect to mqtt server
- Create a new ar fashion experience with cheese and sugar beans
猜你喜欢

Using pywebio testing, novice testers can also make their own testing tools

Tensorflow old version

How to talk about salary correctly in software testing interview

Uncover ges super large scale graph computing engine hyg: Graph Segmentation

这些老系统代码,是猪写的么?

单例模式应用

剑指 Offer 50. 第一个只出现一次的字符

Why does MySQL limit affect performance?

数学建模——非线性规划

mysql使用过程中遇到的问题
随机推荐
Redis series - overview day1-1
批量--07---断点重提
Wireshark network card cannot be found or does not display the problem
代码注释的艺术,优秀代码真的不需要注释吗?
六大专题全方位优化,阿里巴巴性能优化小册终开源,带你直抵性能极致
Why are there few embedded system designers in the soft test?
XShell连接VMWare虚拟机
FreeRTOS内核时钟不对的问题解决
Batch --07--- breakpoint lifting
Best practices for data relocation: using CDM to relocate offline Mysql to DWS
Sword finger offer II 010 Subarray prefix sum difference with sum K
mood
Wechat official account server configuration
剑指 Offer II 035. 最小时间差
居家办公让我绩效拿了C | 社区征文
Next. JS hot update markdown file change
Solution to the problem of incorrect clock in FreeRTOS kernel
[Jianzhi offer II 091. painting the house]
Structure de la mémoire JVM
How do components communicate