首页 > 其他分享 >UART波特率对时钟精度的要求有多高?

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

时间:2022-10-17 11:04:33浏览次数:43  
标签:误差 通讯 分频 UART 串口 波特率 时钟

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.时钟误差

其次,波特率的主要误差还是取决于系统时钟的误差。那串口通讯对时钟误差的要求有多高呢?

先看串口通讯时序图:

UART波特率对时钟精度的要求有多高?_系统时钟_02

串口通讯由起始位、数据位、校验位、停止位组成。以常见的8N1为例,即1位起始位,8位数据位,无校验,1位停止位。也就是说传输一个字节需要10bits。每一个字节都有一个起始位做同步,所以误差只会在一个字节内累计。

不难看出,在最后一个位采样时,误差最大,允许极限误差为0.5位。按照每个字节10位计算,最大允许误差为±0.5/10=±0.05,即±5%。考虑到串口通讯涉及收发两端,两端都可能存在误差,所以,每端的误差最好控制在±2.5%以内。

当数据位、校验位等较多时,要求的时钟误差就更高一些。考虑到上面所说的分频误差,一般来说,当时钟误差小于±2%时,串口通信是比较可靠的。



   欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。




标签:误差,通讯,分频,UART,串口,波特率,时钟
From: https://blog.51cto.com/u_15830484/5761492

相关文章

  • 时钟树配置
    1.RCC时钟树结构2.============================================================== 使用HSE时,设置系统时钟的步骤 1、开启HSE,并等待HSE稳定 2、设置AHB、APB2、......
  • 1490_TC275_UART_shell例程测试
    前面我已经测试了UART的简单例子,并且还修改了PIN脚通过Arduino来读取了串口信息。这是一个比较简单的监控方式,只需要一个PIN就能够给我提供printf打印功能。而这样的工具对......
  • i2c 时钟
    I2C一般指I2C总线。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据......
  • 关闭VirtualBox虚拟机的时钟同步
    在VirtualBox的虚拟机上默认虚拟机的时间是会和物理机同步的,但可以通过下面的命令来关闭1.首先查看虚拟机列表VBoxManagelistvms2.使用下面的命令来关闭虚拟机的时......
  • UART学习笔记
    UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信......
  • GD32固件库学习(二)—时钟配置
    1.背景利用stm32编程的时候,会涉及到时钟树的配置,根据硬件设计中使用的外部晶振频率来配置,GD32的时钟配置只能通过配置代码实现。2.GD32F4时钟树其中红圈部分是需要关注......
  • 实战技能分享,各种数据类型的SPI, UART, I2C,FDCAN等方式的通信传输以及存储到EEPROM, F
    背景知识:各种类型的数据传输和存储就涉及到大小端的问题,所以我们在开头把这个知识点做个说明。 首先要简单说下芯片的大小端问题,我们这里主要讨论Cortex-M内核。权威指南......
  • Linux系统NTP配置同步修改硬件时钟
    前言:  硬件时钟:即BIOS时间,就是CMOS设置时看到的时间,存储在主板BIOS里,关机及断电后由主板电池供电维持时间的守时。  系统时钟:linux系统Kernel时间,由CPU守时,关机及......
  • OpenCV时钟
    #NoEnv#Includeopencv_ahk_lib.ahkSendModeInputSetWorkingDir%A_ScriptDir%hOpencv:=DllCall("LoadLibrary","str","opencv_world455.dll","ptr")hOpencvCo......
  • quartz顺序执行任务
    //创建计划链表JobChainingJobListenerlistener=newJobChainingJobListener("JobLink");IJobDetailj1=JobBu......