郭天祥2023全新51单片机教程-入门+提高——串口(UART)通信技术5

串口波特率专题

串行通信的传输速率---波特率

串行通信中,数据传送速率有两种名称,即比特率或波特率。

表示每秒传送的二进制数据的位数,单位为bps,即bit per second。

如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的波特率为:

10位×240个/秒 = 2400 bps

国际推荐波特率:600、1200、2400、4800、9600、19200、38400、115200波特等。

串行通信的收发双方必须采用相同的波特率。

传输距离与传输速率的关系

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m(约250英尺)。

经验距离供参考:

TTL电平:1.5米之内

RS232电平:15米之内

长距离传输可以使用RS485方式,可达1000米。

波特率的计算

在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式;

方式0和方式2的波特率是固定的;

方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

串行口的四种工作方式对应输入的移位时钟的来源不同,所以,各种方式的波特率计算公式有三种波特率。

方式0的波特率 = fosc/12

方式2的波特率 =(2SMOD/64)· fosc

方式1的波特率 =(2SMOD/32)·(T1溢出率)

方式3的波特率 =(2SMOD/32)·(T1溢出率)

通信时钟波特率原理

T1溢出脉冲有两种分频路径:16分频或32分频;

SMOD是决定分频路径的逻辑开关。

波特率取决于T1的定时参数(a, n, fosc)和SMOD参数。

当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。

这时溢出率取决于TH1中的计数值。

T1 溢出率 = fosc /{12×[256-(TH1)]}

在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。

查询法实现串口方式1收发数据

串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口工作方式控制和中断控制。具体步骤如下:

  • 确定T1的工作方式(编程TMOD寄存器);

  • 计算T1的初值,装载TH1、TL1;

  • 启动T1(编程TCON中的TR1位);

  • 确定串行口控制(编程SCON寄存器);

  • 串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器);

中断法实现串口方式1收发数据

串口不定长度数据包的处理

双机通信实验

配置寄存器特定位置1和清零的方法

额外补充