资源描述
第18章 串行通信和可编程串行接口8251
18.1. 串行通信概述
1. 并行通信与串行通信
(1) 并行通信
(2) 串行通信
(3) 并行传送和串行传送的比较
l 从距离上看
l 从速度上看
l 从设备费用上看
2. 异步通信
字符格式
异步串行码传输字符格式
3. 同步通信
字符格式
4. 串行通信的传送方向
(1).单工(Simplex)
(2).半双工(Half-Duplex)
(3).全双工(Full-Duplex)
5. 信号的调制和解调
基带信号传输
调制方式传输
FSK调制法原理图
6. 串行接口原理
(1)组成
UART中发送和接收部分功能图
(2)功能
l UART的功能
外部时钟和接受部位起始位的同步
l 外部时钟的周期Tc和每个数据位的周期Td的关系:
Tc=Td/K ƒc=ƒdxK 其中K=16或64(K为波特率因子)
(3)奇偶校验
发送时的奇偶校验产生电路
接收时奇偶校验电路
18.2. 串行接口
18.3. RS232C串行通信总线
D25
D9
RS-232C 标准:
RS-232C 提出了数据终端设备(DTE)和数据通信设备(DCE)之间串行传输数据的接口规范,对接口的机械特性、电器特性、功能特性做了规定。
• 机械特性:标准规定了使用一个25针标准连接器(插头座),并对连接器的尺寸, 每个针的排列位置做了明确规定。
• 电气特性:标准规定,逻辑“1”信号,电平在 –3V ~ -15V 之间; 逻辑“0”信号,电平在 +3V ~ +15V 之间; 因此,使用RS-232C与微机接口时,需要将TTL电平(0 ~ 5V)与RS-232C电平进行转换。可用现成的转换芯片(如MC1488、MC1489等)转换。 标准规定了RS-232C能连接的最大距离为 15.24 m(实际可达30 m )。最大传输速率为 20k bps。
l DTE与DCE之间的连接
DTE与DCE之间的连接信号
l DTE与DTE之间的连接(零调制解调器连接)
(a)无握手信号
(b)握手信号自环
(c)握手信号连接
(d)握手信号标准连接
(e)握手信号自环(本人用过的连接方式)
18.4. 可编程串行通信接口8251A
1. 8251A的基本性能
(1)同步方式(波特率0~64K)、异步方式(0~19.2K)
(2)同步方式,5、6、7、8位来代表字符,内部自动检测同步字符。
(3)异步方式,5、6、7、8位来代表字符。
(4)TTL电平
(5)全双工双缓冲的接收/发送器。
2. 8251A内部结构
8251内部结构
(1) 与CPU的连接信号
l D7~0、/RD、/WR、/CS
l RESET: 复位线
l CLK: 8251A的内部时钟。同步方式时CLK >30x(/RXC和/TXC);异步方式时CLK>4.5x(/RXC和/TXC)。
l : 控制/数据端。
操作
1
写控制字
写同步字符
读状态字
0
写数据到发送缓冲器
读数据从接收缓冲器
l TxRDY脚: 发送器准备好状态(发送缓冲器为空, 准备好从CPU接收数据),高电平有效,用于通知CPU给8251A发数据,此时发送缓冲器为空。CPU写入数据后,发送缓冲器满,TxRDY复位(0)。
TxRDY脚变为有效的条件:
TxRDY脚 = TxRDY位 & TxEN位 & (脚=0)
其中 TxRDY位、TxEN位为状态字中的对应位。
l TxEMPTY脚:发送器空状态(发送移位寄存器空)。
8251A发送部分内部逻辑结构
l : 发送时钟。用于控制发送数据的速度。异步方式时,波特率因子k=1、16、64;同步方式时,波特率因子k=1。
l : 接收时钟。用于控制接收数据的速度。异步方式时,波特率因子k=1、16、64;同步方式时,波特率因子k=1。
l RxRDY脚: 接收准备好状态(接收缓冲器满),高电平有效,用于通知CPU,8251A已经有接收到的数据,此时接收缓冲器满状态。CPU读出数据后,接收缓冲器空,RxRDY复位。
RxRDY脚变为有效的条件:
RxRDY脚 = RxRDY位
其中 RxRDY位为状态字中的对应位。
l SYNDET/BRKDET: 内同步方式时,输出,检测到SYN字符时,输出SYNDET有效;外同步方式时,输入,用BRKDET来触发开始接收第一个RxD数据。
(2) 与modem的连接信号
与RS232C规定相同,是8251A与modem之间的握手信号。
l 脚: 数据终端(DTE)准备好。输出,低电位有效。有效时,表示8251A准备好,用于通知modem。控制字中有一个DTR位,DTR位置1时,会使脚变0(有效); DTR位置0时,会使脚变1(无效)。
l 脚: 请求发送。输出,低电位有效。有效时,表示8251A要发送数据,用于通知modem。控制字中有一个RTS位,RTS位置1时,会使脚变0(有效); RTS位置0时,会使脚变1(无效)。
l 脚: 数传设备准备好。输入,低电位有效。有效时,表示mode已经准备好,用于通知8251A。状态字中有一个DSR位可用于CPU来查询,DSR位为1时,表示检测到脚为低(有效); DSR位为0时,表示检测到脚为高(无效)。是对的应答。
l 脚: 清除请求发送(允许发送)。输入,低电位有效。有效时,表示允许8251A发送数据。是对的应答。状态位中没有对应位。用硬件控制8251A中的发送器,只有脚有效时,发送器才能发送数据。
3. 8251A编程
(1) 控制字(CPU写入)
l 工作方式选择控制字(CPU写入)
l 操作命令控制字(CPU写入)
(2) 状态字(CPU读出)
l 只TxRDY脚与TxRDY位可能不同,其它与相应引脚有的信号同步变化。
l 没有脚对应的状态位,由硬件控制;
l 在CPU读接收数据缓冲器时,RxRDY复位(=0);
l CPU写发送数据缓冲器时,TxRDY复位(=0);
l TxRDY脚变为有效的条件:
TxRDY脚 = TxRDY位 & TxEN位 & (脚=0)
l 操作命令控制字中的ER有效会使状态字的的三个错误标志(FE,OE,PE)清0,当接收有错误时,相应位会置1。
(3) 写同步字符
l 用于同步工作方式。
(4) 读接收数据缓冲器/写发送数据缓冲器
l 接收数据缓冲器,发送数据缓冲器占同一个地址,数据方向不同。
(5) 初始化过程
4. 8251A应用实例
例1. 8251A工作于异步工作方式,传送7位字符,1位偶校验,2位停止位,波特率因子为16。地址为0F0H, 0F1H。
mov al, 11111010B
out 0f1h, al
mov al, 00110011B
out 0f1h, al
例2. 将8251A初始化为同步工作方式。
Mov al , 00111000B
Out 0f1h, al
Mov al, 16h
Out 0f1h, al ; syn1
Out 0f1h, al ;syn2
Mov al, 10010100B
Out 0f1h,al
例3. 8251A工作于异步工作方式,传送7位字符,1位偶校验,2位停止位,波特率因子为16。地址为0F0H, 0F1H。从8251A接收80个字符。
MOV AL, 0FAH; 设置工作方式
OUT 0F1H, AL
NOT
NOP
NOP
MOV AL, 35H ;使能发送和接收,并清错误标志。
OUT 0F1H, AL
MOV DI, 0
MOV CX, 80
BEGIN: IN AL, 0F1H
TEST AL, 02H ;查询RxRDY位
JZ BEGIN
IN AL, 0F0H ;读接收缓冲器
MOV [DI+LINE], AL ;保存在以Line为首地址单元
INC DI
IN AL, 0F1H; ;读状态字,看三个错误标志,是否有错。
TEST AL, 38H ;
JNZ ERROR
LOOP BEGIN
JMP SHORT EXIT
ERROR: CALL NEAR PTR EER_ROUT
EXIT: ….
18.5. 通用串行总线USB(略)
15
展开阅读全文