音频应用

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 18163|回复: 0

[资讯] UART波特率对时钟精度的要求有多高?

[复制链接]

65

积分

2

听众

0

音贝

音频应用

Rank: 1

积分
65
发表于 2008-6-6 | |阅读模式
音频应用公众号资讯免费发布推广
UART波特率对时钟精度的要求有多高?


串口通讯(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、时钟误差
其次,波特率的主要误差还是取决于系统时钟的误差。那么,串口通讯对时钟误差的要求有多高呢?
先看串口通讯时序图:
640 (8).jpg
串口通讯由起始位、数据位、校验位、停止位组成。以常见的8N1为例,即1位起始位,8位数据位,无校验,1位停止位。也就是说传输一个字节需要10bits。每一个字节都有一个起始位做同步,所以误差只会在一个字节内累计。
不难看出,在最后一个位采样时,误差最大,允许极限误差为0.5位。按照每个字节10位计算,最大允许误差为±0.5/10=±0.05,即±5%。考虑到串口通讯涉及收发两端,两端都可能存在误差,所以,每端的误差最好控制在±2.5%以内。
当数据位、校验位等较多时,要求的时钟误差就更高一些。考虑到上面所说的分频误差,一般来说,当时钟误差小于±2%时,串口通信是比较可靠的。
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表