串口波特率选择

波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MCS-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。

在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为:

波特率=(1+SMOD)*晶振频率/(384*(256-TH1))

其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;

TH1——定时器的重载值。

在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。

下面举例说明波特率选择过程:

假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则

TH1=256-62500/波特率

根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表:

波特率 计数器重载值 波特率误差
1200 204 0.16%
2400 230 0.16%
4800 243 0.16%
9600 249 6.99%
19200 253 8.51%

因此,在通信中,最好选用波特率为1200,2400,4800中的一个。

时间: 2024-08-11 06:37:49

串口波特率选择的相关文章

3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

第十二章 Openwrt 修改串口波特率 以适应普通51不支持 115200高速率

openwrt默认使用的波特率是115200,单片机或arduino的串口波特率可自行设置.当然,一般都会设置9600,也可以设置为115200.假设现在openwrt波特率为115200,单片机的串口波特率为9600.要进行一个通信,该如何设置呢-? 一般51的单片机设置115200是比较麻烦的—而arduino就比较方便,所以还是改OPENWRT的串口波特率较好. 首先我们需要在openwrt上使用coreutils-stty这个软件更改波特率.安装coreutils-stty很简单,opk

8051单片机串口波特率和定时器1的初值计算

在模式0和模式2下,串口波特率固定,模式0为Fosc/12.模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定. 在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到底为多少呢?波特率由定时器1的溢出率来决定:Baud Rate = (2SMOD/32)*(Timer 1 Overflow Rate)注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位,该位在PCON寄存器中.当使用timer 1作为波

FPGA小白学习之路(6)串口波特率问题的处理

串口波特率问题的处理 此博文一共包含三个方面的内容:(1)异步串口通信的数据格式:(2)为何串口通信中接收端采样时钟频率是传输的波特率的16倍:(3)串口波特率等概念. 1.异步串口通信的数据格式 串口的通信可以通过链接了解:https://wenku.baidu.com/view/7b459e47453610661ed9f4d4.html### 异步串口通信的数据格式如图1所示: 图1 异步串口通信的数据格式 由于在空闲状态时,传送线为逻辑"1"状态,而数据的传送总是以一个起始位&q

8051单片机串口波特率计算方式

STC12C5A60S2单片机兼容80C51单片机,其串口波特率可以由定时器产生,也可以由独立波特率发生器产生.其波特率模式可以是固定的,也可以是可变的. 固定波特率:当 模式0的通信速度设置 位UART_M0x6/AUXR.5 = 0时,其波特率 = SYSclk/12 当 模式0的通信速度设置 位UART_M0x6/AUXR.5 = 1时,其波特率 = SYSclk/2 可变波特率:使用串行通信模式2,即可自定义串口通信波特率,其计算公式为:波特率 = 2^SMODE /64×( SYScl

Qt串口实现921600波特率的方法

环境配置: 主机:XP QT:5.4.0 写在这里的重点并不是告诉人如何在Qt的串口编程中实现921600的Bps. 1.在Qt中使用串口,我们需要一个第三方的串口类:qextserialport.在其qextserialbase.h文件中,提供了如下常用的波特率: enum BaudRateType { BAUD50, //POSIX ONLY BAUD75, //POSIX ONLY BAUD110, BAUD134, //POSIX ONLY BAUD150, //POSIX ONLY B

串口之波特率计算

1.1 波特率结构框图 1.2 波特率寄存器示意图 1.3 波特率计算公式示意图 两图看出,串口波特率寄存器是一个32位,只用低16位,低16位又划分,低4位用来装小数,其他用来装整数. 波特率计算公式:Tx/Rx 波特率  = fCK/(8*(2- OVER8 )* USARTDIV) USARTDIV =  fCK/8*(2- OVER8 )/TxRx 波特率 Tx/Rx 波特率已知值    //就是我们我们平常说设置的115200Hz. fCK是已知值     //串口时钟84MHz OV

Linux 控制台下串口的基本操作

显示串口波特率等信息: stty -F /dev/ttyTHS2 -a  #dev/ttyTHS2为选择的端口号 参数设置: stty -F /dev/ ttyTHS2 ispeed 115200 ospeed 115200 cs8 配置波特率115200数据8bit,一般情况下设置这两个参数就可以了,如果显示数据乱码,可能还需要设置其它参数,使用man查看stty其它设置选项. 发送串口数据: echo 123> /dev/ttyTHS2 读取串口数据: cat /dev/ttyTHS2 读取

【小梅哥FPGA进阶教程】第九章 基于串口猎人软件的串口示波器

九.基于串口猎人软件的串口示波器 1.实验介绍 本实验,为芯航线开发板的综合实验,该实验利用芯航线开发板上的ADC.独立按键.UART等外设,搭建了一个具备丰富功能的数据采集卡,芯航线开发板负责进行数据的采集并将数据通过串口发送到PC机上,PC端,利用强大的串口调试工具--串口猎人,来实现数据的接收分析,并将数据分别以波形.码表.柱状图的形式动态显示出来,以让使用者能够直观的看到ADC采集到的信号细节.同时,用户也可以使用串口猎人通过串口给下位机(FPGA)发送指令,下位机将对接收到的指令进行解