5.3串行口UART根据CPU与外设之间连线结构和数据发送方式的不同,可将通信分为并行通信和串行通信两种基本方式。bob1停止位起始位1b20n00b30b4b7/b6:b5b4b3b2/b1b0设备B设备Ab50设备A设备Bb60b7GNDGND(a)(b)图5-3-1基本通信方式(a)并行通信;(b)串行通信1.串行通信的种类根据数据传输方式的不同,可将串行通信分为同步通信和异步通信。同步通信是一种数据连续传输的串行通信方式。在这种通信方式中,数据块内各字节数据之间没有间隙,传输效率高,但发送、接收双方必须保持同步(使用同一时钟信号),且数据块的长度越大,对同步的要求就越高。同步通信是一种数据连续传输的串行通信方式。在这种通信方式中,数据块内各字节数据之间没有间隙,传输效率高,但发送、接收双方必须保持同步(使用同一时钟信号),且数据块的长度越大,对同步的要求就越高典型的同步通信数据顿格式如下所示:同步字符1同步字符2n个字节的连续数据校验信息2校验信息1异步通信的特点是每次只传送一个字,每个字由起始位(规定为0电平)、数据位、奇偶校验位和停止位(规定为1电平)组成,典型的异步通信数据顿格式如下所示:
5.3 串行口 UART 根据 CPU 与外设之间连线结构和数据发送方式的不同,可将通信分为并行 通信和串行通信两种基本方式。 图 5-3-1 基本通信方式 (a) 并行通信; (b) 串行通信 1. 串行通信的种类 根据数据传输方式的不同,可将串行通信分为同步通信和异步通信。 同步通信是一种数据连续传输的串行通信方式。在这种通信方式中,数据块 内各字节数据之间没有间隙,传输效率高,但发送、接收双方必须保持同步(使 用同一时钟信号),且数据块的长度越大,对同步的要求就越高。 同步通信是一种数据连续传输的串行通信方式。在这种通信方式中,数据块 内各字节数据之间没有间隙,传输效率高,但发送、接收双方必须保持同步(使 用同一时钟信号),且数据块的长度越大,对同步的要求就越高。 典型的同步通信数据帧格式如下所示: 异步通信的特点是每次只传送一个字,每个字由起始位(规定为 0 电平)、数 据位、奇偶校验位和停止位(规定为 1 电平)组成,典型的异步通信数据帧格式如 下所示:
第n个字符第n+1个字符起起停止始始验止位空闲位位位t8个数据位2数据发送顺序2.波特率在串行通信系统中常用波特率来衡量通信的快慢。波特率的含义是每秒中传送的二进制数码的位数,单位是位/秒(b/s或Kb/s),简称“波特”。3.串行通信数据的传输方向根据串行通信数据的传输方向,可将串行通信系统分为单工方式、半双工方式和全双工方式。一方发送,另一方接收,就构成了“单工”通信方式:分时收、发数据(即发送时,不接收:接收时,不发送),就构成了“半双工”通信方式。同时接收和发送,就构成了“全双工”通信方式。(g)(p)(c)FTTFT蒸长恭尔本描数影保微受喜滨张收N#想拆檬部RB拉EY轻格作BVSB图5-3-2数据传输方式(a)单工方式;(b)半双工方式;(c)全双工方式4.串行通信接口的种类根据串行通信格式及约定(如同步方式、通信速率、信号电平等)的不同,派生出不同的串行通信接口标准,如常见的RS-232、RS-422、RS-485、IEEE1394、I2C、SPI(同步通信)、USB(通用串行总线接口)和CAN总线接口等。5.3.1串行口的组成和特性主要由两个物理上完全独立的串行接收缓冲器和串行发送缓冲器、接收控制器(包括输入移位寄存器)、发送控制器及发送门电路等部件组成,串行数据从TXD(P3.1)引脚输出,从RXD(P3.0)引脚输入,其内部结构如下图所示
2. 波特率 在串行通信系统中常用波特率来衡量通信的快慢。波特率的含义是每秒中传 送的二进制数码的位数,单位是位/秒(b/s 或 Kb/s),简称“波特”。 3. 串行通信数据的传输方向 根据串行通信数据的传输方向,可将串行通信系统分为单工方式、半双工方 式和全双工方式。 一方发送,另一方接收,就构成了“单工”通信方式; 分时收、发数据(即发送时,不接收;接收时,不发送),就构成了“半双工” 通信方式。 同时接收和发送,就构成了“全双工”通信方式。 图 5-3-2 数据传输方式 (a) 单工方式;(b) 半双工方式;(c) 全双工方式 4. 串行通信接口的种类 根据串行通信格式及约定(如同步方式、通信速率、信号电平等)的不同,派 生出不同的串行通信接口标准,如常见的 RS-232、RS-422、RS-485、IEEE1394、 I2C、SPI(同步通信)、USB(通用串行总线接口)和 CAN 总线接口等。 5.3.1 串行口的组成和特性 主要由两个物理上完全独立的串行接收缓冲器和串行发送缓冲器、接收控制 器(包括输入移位寄存器)、发送控制器及发送门电路等部件组成,串行数据从 TXD(P3.1)引脚输出,从 RXD(P3.0)引脚输入,其内部结构如下图所示
串行接口电路发送缓冲器SBUF发送门TXD(P3.1)发送波特率发送控制器串行中断ES累加器或门Acc接收控制器RI接收波特率SBUF移位寄存器RXD(P3.0)接收缓冲器图5-3-3MCS-51串行通信接口内部结构在MCS-51芯片中,串行接收缓冲器和串行发送缓冲器使用同一特殊功能寄存器名SBUF(字节地址为99H),但它们是两个不同的寄存器。由于串行接收缓冲器只能读出,不能写入,因此读SBUF寄存器时,操作对象是串行接收缓冲器;而串行发送缓冲器正好相反,即只能写入,不能读出,因此写SBUF寄存器时,操作对象是串行发送缓冲器。在MCS-51中,与串行通信控制有关的寄存器为串行通信接口控制寄存器SCON选择串行通信接口工作方式)和电源控制寄存器PCON的SMOD1位(发送、接收波特率倍增控制位)。、串行通信接口控制寄存器SCON字节地址98H,可位寻址
图 5-3-3 MCS-51 串行通信接口内部结构 在 MCS-51 芯片中,串行接收缓冲器和串行发送缓冲器使用同一特殊功能寄 存器名 SBUF(字节地址为 99H),但它们是两个不同的寄存器。由于串行接收缓 冲器只能读出,不能写入,因此读 SBUF 寄存器时,操作对象是串行接收缓冲器; 而串行发送缓冲器正好相反,即只能写入,不能读出,因此写 SBUF 寄存器时, 操作对象是串行发送缓冲器。 在 MCS-51 中,与串行通信控制有关的寄存器为串行通信接口控制寄存器 SCON(选择串行通信接口工作方式)和电源控制寄存器 PCON 的 SMOD1 位(发 送、接收波特率倍增控制位)。 一、串行通信接口控制寄存器 SCON 字节地址 98H,可位寻址
位地址9FH9EH9DH9CH9BH9AH99H98HRISCONSMO/FESMISM2RENTB8RB8TI字节地址98H串行接收允许位待发送的第九位数据接收到的第九位数据发送中断标志接收中断标志多选择工作方式机机通信控制位图5-3-4SCON各位含义D7D6D5D4D3D2D1DOSCONSMOSM1SM2RENRB8TIRITB898H位地址9EH98H9FH9DH9CH9BH9AH99H串行口4种工作方式的选择位(1)SM0、SSMISM1方式功能说明SMO000同步移位寄存器方式(用于扩展I/O口)0118位异步收发,波特率可变(由定时器控制)1029位异步收发,波特率为fosc/64或fosc/321139位异步收发,波特率可变(由定时器控制)多机通信控制位(2) SM2用于方式2或方式3中。当串行口以方式2或方式3接收时如果SM2=1,只有当接收到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并置“1”RI,产生中断请求;当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。如果SM2=0,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并置“1”RI,产生中断请求。方式1时,如果SM2=1,则只有收到停止位时才会激活RI。方式0时,SM2必须为0
图 5-3-4 SCON 各位含义 (1)SM0、SM1——串行口 4 种工作方式的选择位 SM0 SM1 方式功 能 说 明 0 0 0 同步移位寄存器方式(用于扩展 I/O 口) 0 1 1 8 位异步收发,波特率可变(由定时器控制) 1 0 2 9 位异步收发,波特率为 fosc/64 或 fosc/32 1 1 3 9 位异步收发,波特率可变(由定时器控制) (2)SM2 ——多机通信控制位 用于方式 2 或方式 3 中。 当串行口以方式 2 或方式 3 接收时, 如果 SM2=1,只有当接收到的第 9 位数据(RB8)为“1”时,才将接收到的 前 8 位数据送入 SBUF,并置“1” RI,产生中断请求;当接收到的第 9 位数据 (RB8)为“0”时,则将接收到的前 8 位数据丢弃。 如果 SM2=0,则不论第 9 位数据是“1”还是“0”,都将前 8 位数据送入 SBUF 中,并置“1” RI,产生中断请求。 方式 1 时,如果 SM2=1,则只有收到停止位时才会激活 RI。 方式 0 时,SM2 必须为 0
(3)REN一一允许串行接收位由软件置“1”或清“0”。REN=1允许串行口接收数据。REN=0禁止串行口接收数据。(4)TB8一一发送的第9位数据方式2和3时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为地址或数据帧的标志。=1为地址顿,=0为数据顿(5)RB8一一接收到的第9位数据方式2和3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。(6)TI—一发送中断标志位方式0时,串行发送第8位数据结束时由硬件置“1”,其它工作方式,串行口发送停止位的开始时置“1”。TI=1,表示一顿数据发送结束,可供软件查询,也可申请中断。CPU响应中断后,向SBUF写入要发送的下一数据。TI必须由软件清0。(7)RI—一接收中断标志位方式0时,接收完第8位数据时,RI由硬件置1。其它工作方式,串行接收到停止位时,该位置“1”。RI=1,表示一顿数据接收完毕,并申请中断。该位状态也可软件查询。RI必须由软件清“0”。二、波特率倍增选择特殊功能寄存器PCON字节地址为87H,没有位寻址功能。SMOD:波特率选择位,也称波特率倍增位。5.3.2串行口的工作方式一、方式0同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口。8位数据为一顿,不设起始位和停止位,先发送或接收最低位。波特率固定为fosc/12。顿格式如下:
(3)REN——允许串行接收位 由软件置“1”或清“0”。 REN=1 允许串行口接收数据。 REN=0 禁止串行口接收数据。 (4)TB8——发送的第 9 位数据 方式 2 和 3 时,TB8 是要发送的第 9 位数据,可作为奇偶校验位使用,也可作为 地址帧或数据帧的标志。 =1 为地址帧, =0 为数据帧 (5)RB8——接收到的第 9 位数据 方式 2 和 3 时,RB8 存放接收到的第 9 位数据。在方式 1,如果 SM2=0,RB8 是接收到的停止位。在方式 0,不使用 RB8。 (6)TI——发送中断标志位 方式 0 时,串行发送第 8 位数据结束时由硬件置“1”, 其它工作方式,串行口发送停止位的开始时置“1”。TI=1,表示一帧数据发送结 束,可供软件查询,也可申请中断。CPU 响应中断后, 向 SBUF 写入要发送的下 一帧数据。TI 必须由软件清 0。 (7)RI——接收中断标志位 方式 0 时,接收完第 8 位数据时,RI 由硬件置 1。 其它工作方式,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完 毕,并申请中断 。该位状态也可软件查询。RI 必须由软件清“0”。 二、波特率倍增选择 特殊功能寄存器 PCON 字节地址为 87H,没有位寻址功能。 SMOD:波特率选择位,也称波特率倍增位。 5.3.2 串行口的工作方式 一、方式 0 同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行 I/O 口。 8 位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率固定为 fosc/12。帧格式如下: