1
第 10章 串行通信与 8250,8251A
第 10章 串行通信接口教学重点
串行通信基础 ( 异步通信协议和 RS232C
接口)
8250的内部结构和编程
异步通信程序
8251A的应用
3
10.1 串行通信基础
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式
串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本
串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送
PC系列机上有两个串行异步通信接口,键盘,鼠标器与主机间采用串行数据传送
4
1,异步通信
串行通信时的数据,控制和状态信息都使用同一根信号线传送
收发双方必须遵守共同的通信协议 ( 通信规程 ),才能解决传送速率,信息格式,
位同步,字符同步,数据校验等问题
串行异步通信以字符为单位进行传输,其通信协议是 起止式异步通信协议
5
起止式异步通信协议起始位 —— 每个字符开始传送的标志,
起始位采用逻辑 0电平起始位 校验位 停止位 空闲位数据位低位 高位字符
0/1 0/1 0/10/1 101 1 1…
数据位 —— 数据位紧跟着起始位传送 。
由 5~ 8个二进制位组成,低位先传送校验位 —— 用于校验是否传送正确;可选择奇检验,偶校验或不传送校验位停止位 —— 表示该字符传送结束 。 停止位采用逻辑 1电平,可选择 1,1.5或 2位空闲位 —— 传送字符之间的逻辑 1电平,表示没有进行传送
6
数据传输速率
数据传输速率也称比特率 ( Bit Rate)
每秒传输的二进制位数 bps
字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数
当进行二进制数码传输,且每位时间长度相等时,
比特率还等于波特率 ( Baud Rate)
过去,串行异步通信的数据传输速率限制在 50
bps到 9600 bps之间 。 现在,可以达到 115200 bps
或更高
7
字符速率与波特率两者关系字符速率:每秒钟传输的字符数。
波特率:指单位时间内传送二进制数据的位数。单位为,b/s
例1,异步传输过程设每个字符对应 1个起始位,7个信息位,1个奇偶校验位和 1个停止位,如果波特率为 1200bps,
那么,每秒钟能传输的最大字符数为 1200/10=
120个
8
( 2) 发送 /接收时钟发送 /接收时钟频率与 波特率之间的关系为:
发送 /接收时钟频率 =n?发送 /接收 波特率例:要求传输速率为 1200 bps
当选择 n=16时,表明一位数字信号中有 16个时钟脉冲,故发送 /接收时钟频率为:
1200?16=19.2kHz
其中 n称为波特因子,一般 n=1,16,32,64
9
2,同步通信
以一个数据块 ( 帧 ) 为传输单位,每个数据块附加 1个或 2个同步字符,最后以校验字符结束
同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂
串行同步通信主要应用在网络当中
最常使用高级数据链路控制协议 HDLC
~
~ ~
~同步字符 数据 数据 数据 校验字符
10
3,传输制式全双工站 A 站 B
站 A 站 B
站 A 站 B
半双工单工
11
4,调制解调器
调制 ( Modulating)
把数字信号转换为电话线路传送的模拟信号
解调 ( Demodulating)
将电话线路的模拟信号转换为数字信号
调制解调器 MODEM
具有调制和解调功能的器件合制在一个装置
12
10.2 串行接口标准 RS-232C(补充)
美国电子工业协会 EIA制定的 通用标准串行接口
1962年公布,1969年修订
1987年 1月正式改名为 EIA-232D
设计目的是用于连接调制解调器
现已成为 数据终端设备 DTE( 例如计算机 ) 与 数据通信设备 DCE( 例如调制解调器 ) 的标准接口
可实现远距离通信,也可近距离连接两台微机
属于网络层次结构中的最低层:物理层
13
10.2.1 RS-232C的引脚定义
232C接口标准使用一个 25针连接器
绝大多数设备只使用其中 9个信号,所以就有了 9针连接器
232C包括两个信道:主信道和次信道
次信道为辅助串行通道提供数据控制和通道,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用
14
RS-232C的引脚( 1)
TxD,发送数据
串行数据的发送端
RxD,接收数据
串行数据的接收端
15
RS-232C的引脚( 2)
RTS:请求发送 (出 )
当数据终端设备 (PC)准备好送出数据时,就发出有效的 RTS信号,用于通知数据通信设备 (MODERM)准备接收数据
CTS:清除发送 ( 允许发送 ) (入 )
当数据通信设备 (MODERM)已准备好接收数据终端设备 (PC)的传送数据时,发出 CTS有效信号来响应
RTS信号
RTS和 CTS是数据终端设备与数据通信设备间一对用于 数据发送 的联络信号
16
RS-232C的引脚( 3)
DTR,数据终端 PC准备好
通常当数据终端设备一加电,该信号就有效,表明数据终端设备准备就绪
DSR,数据装置准备好
通常表示数据通信设备 ( 即数据装置 ) 已接通电源连到通信线路上,并处在数据传输方式
DTR和 DSR也可用做数据终端设备与数据通信设备间的联络信号,例如 应答数据接收
17
RS-232C的引脚( 4)
GND,信号地
为所有的信号提供一个公共的参考电平
CD,载波检测 ( DCD)
当本地调制解调器接收到来自对方的载波信号时,该引脚向数据终端设备提供有效信号
RI,振铃指示
当调制解调器接收到对方的拨号信号期间,该引脚信号作为电话铃响的指示,保持有效
18
RS-232C的引脚( 5)
保护地 ( 机壳地 )
起屏蔽保护作用的接地端,一般应参照设备的使用规定,连接到设备的外壳或大地
TxC:发送器时钟
控制数据终端发送串行数据的时钟信号
RxC:接收器时钟
控制数据终端接收串行数据的时钟信号
19
10.2.2 RS-232C的连接
微机利用 232C接口 连接调制解调器,用于实现通过电话线路的远距离通信
微机利用 232C接口 直接连接 进行短距离通信 。 这种连接不使用调制解调器,所以被称为零调制解调器 ( Null Modem) 连接
20
连接调制解调器电话线
MODEM微机
2
3
4
5
6
7
8
20
22
2
3
4
5
6
7
8
20
22
MODEM
2
3
4
5
6
7
8
20
22
数据装置准备好 DSR
数据终端准备好 DTR
发送数据 TxD
接收数据 RxD
请求发送 RTS
允许发送 CTS
信号地 GND
载波检测 CD
振铃指示 RI
微机
2
3
4
5
6
7
8
20
22
21
不使用联络信号的 3线相连方式微机
TxD
RxD
GND
微机为了交换信息,TxD和 RxD应当交叉连接程序中不必使 RTS和 DTR有效也不应检测 CTS和 DSR是否有效
22
“伪,使用联络信号的 3线相连方式
RTS和 CTS各自互接,DTR和 DSR各自互接表明请求传送总是允许、数据装置总准备好微机
DSR
DTR
TxD
RxD
RTS
CTS
GND
微机
23
使用联络信号的多线相连方式通信比较可靠所用连线较多,不如前者经济微机
DSR
DTR
TxD
RxD
RTS
CTS
GND
微机
24
10.2.3 RS-232C的电气特性
232C接口采用 EIA电平
高电平为+ 3V~+ 15V
低电平为- 3V~- 15V
实际常用 ± 12V或 ± 15V
标准 TTL电平
高电平:+ 2.4V~+ 5V
低电平,0V~ 0.4V
相互转换
25
10.3 可编程串行异步通信接口芯片 8250原理与使用
串行传输,需要并行到串行和串行到并行的转换,并按照传输协议发送和接收每个字符 ( 或数据块 )
这些工作可由软件实现,也可用硬件实现
通用异步接收发送器 UART是串行异步通信的接口电路芯片
IBM PC/XT机的 UART芯片是 INS 8250
后来使用 NS16550
26
2,8250的内部结构
27
3,8250芯片引脚定义与功能
28
10.3.1 8250的内部结构
8250实现了起止式串行异步通信协议,支持全双工通信
通信字符可选择数据位为 5~ 8位
停止位 1,1.5或 2位
可进行奇偶校验
具有奇偶,帧和溢出错误检测电路
8250支持的数据传输速率为 50~ 9600bps
29
1,串行数据的发送并行数据加入起始位、
校验位、停止位串行数据
CPU
发送保持寄存器发送移位寄存器同步控制
8250
SOUT 0/10/1 0/10/1
双缓冲寄存器结构保证数据的连续发送
30
2,起始位的检测起始检测 确定已检测到起始位 采样数据起 始 位时钟
( RCLK)
数据线
( SIN) T
16 T
16 T8 T
数据接收时钟频率是数据传输频率的 16倍正确识别起始位,防止因干扰引起的误识别
31
3,串行数据的接收并行数据检测接收错误删除起始位、
校验位、停止位串行数据
CPU
接收缓冲寄存器接收移位寄存器同步控制
8250
SIN 0/10/1 0/10/1
双缓冲寄存器结构保证数据的连续接收
32
4,接收错误的处理
奇偶错误 PE( Parity Error)
若接收到的字符的,1”的个数不符合奇偶校验要求
帧错误 FE( Frame Error)
若接收到的字符格式不符合规定 ( 如缺少停止位 )
溢出错误 OE( Overrun Error)
若接收移位寄存器接收到一个数据,并送至输入缓冲器时,CPU还未取走前一个数据,就会出现数据溢出
若接收缓冲器的级数多,则溢出错误的几率就少
33
10.3.2 8250的引脚
分成连接 CPU的部分和连接外设的部分
注意,8250不是 Intel公司的产品,所以该芯片引脚名称与前面学习的 8253、
8255等 Intel产品有所不同,但是引脚功能却是类似的
34
3,8250芯片引脚定义与功能
35
1,处理器接口引脚( 1)
数据线 D0~ D7:在 CPU与 8250之间交换信息
地址线 A0~ A2:寻址 8250内部寄存器
片选线,8250设计了 3个片选输入信号 CS0、
CS1,CS2*和一个片选输出信号 CSOUT。 3个片选输入都有效时,才选中 8250 芯片,同时
CSOUT输出高电平有效 。
地址选通信号 ADS*:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定
36
1,处理器接口引脚( 2)
读控制线
数据输入选通 DISTR( 高有效 ) 和 DISTR*( 低有效 )
有一个信号有效,CPU从 8250内部寄存器读出数据
相当于 I/O读信号
写控制线
数据输出选通 DOSTR( 高有效 ) 和 DOSTR*( 低有效 ) 有一个有效,CPU就将数据写入 8250内部寄存器
相当于 I/O写信号
8250读写控制信号有两对,每对信号作用完全相同,只不过有效电平不同而己
37
1,处理器接口引脚( 3)
驱动器禁止信号 DDIS,CPU从 8250读取数据时,DDIS引脚输出低电平,用来禁止外部收发器对系统总线的驱动;其他时间,
DDIS为高电平
主复位线 MR:硬件复位信号 RESET
中断请求线 INTRPT,8250有 4级共 10个中断源,当任一个未被屏蔽的中断源有请求时,INTRPT输出高电平向 CPU请求中断
38
2,时钟信号
时钟输入引脚 XTAL1,8250的基准工作时钟
(1.8432MHz)
时钟输出引脚 XTAL2,基准时钟信号的输出端
波特率输出引脚 BAUDOUT*:基准时钟经 8250
内部波特率发生器分频后产生发送时钟
接收时钟引脚 RCLK,接收外部提供的接收时钟信号;若采用发送时钟作为接收时钟,则只要将
RCLK引脚和 BAUDOUT*引脚直接相连
39
3,串行异步接口引脚
8250
数据装置准备好 DSR*
数据终端准备好 DTR*
发送数据 SOUT
接收数据 SIN
请求发送 RTS*
允许发送 CTS*
信号地 GND
载波检测 RLSD*
振铃指示 RI*
40
4,输出线
OUT1*和 OUT2*:
两个一般用途的输出信号
由调制解调器控制寄存器的 D2和 D3使其输出低电平有效信号
复位使其恢复为高
41
10.3.3 8250的寄存器
8250内部有 9种可访问的寄存器,除数寄存器是 16位的,占用两个连续的 8位端口
内部寄存器用引脚 A0~ A2来寻址;同时还要利用通信线路控制寄存器的最高位,即除数寄存器访问位 DLAB,来区别共用两个端口地址的不同寄存器
42
8250内部寄存器端口地址适配器地址 DLAB A2A1A0 访问寄存器名称
3F8H 0 0 0 0 接收数据寄存器 ( 读 )发送保持寄存器 ( 写 )
3F9H 0 0 0 1 中断允许寄存器
3F8H 1 0 0 0 波特率除数锁存寄存器 ( 低字节 )
3F9H 1 0 0 1 波特率除数锁存寄存器 ( 高字节 )
3FAH? 0 1 0 中断识别寄存器
3FBH? 0 1 1 线路控制寄存器
3FCH? 1 0 0 MODEM控制寄存器
3FDH? 1 0 1 线路状态寄存器
3FEH? 1 1 0 MODEM状态寄存器
43
1,接收缓冲寄存器 RBR
存放串行接收后转换成并行的数据
CPU
接收缓冲寄存器接收移位寄存器同步控制
8250
SIN
44
2,发送保持寄存器 THR
包含将要串行发送的并行数据
CPU
发送保持寄存器发送移位寄存器同步控制
8250
SOUT
45
3,除数寄存器除数寄存器保存设定的分频系数分频系数=基准时钟频率 ÷ ( 16× 比特率)
起 始 位时钟
( RCLK)
数据线
( SIN) T
16 T
16 T8 T
46
4,通信线路控制寄存器 LCR
DLAB D6 D5 D4 D3 D2 D1 D0
寄存器选择
0 正常值
1 除数寄存器中止字符
0 无作用
1 发送中止字符校验位设置
×× 0 无校验位
001 设置奇校验
011 设置偶校验
101 校验位为 1
111 校验位为 0
停止位个数
0 1位
1 1.5位 ( 数据位为 5位时 )
1 2位 ( 数据位为 6~ 8位时 )
数据位个数
00 5位
01 6位
10 7位
11 8位指定串行异步通信的字符格式
47
5,通信线路状态寄存器 LSR
0 D6 D5 D4 D3 D2 D1 D0
为 1,表示发送移位寄存器空;
当数据由发送保持寄存器移入发送移位寄存器时,该位为 0
提供串行异步通信的当前状态供 CPU读取和处理为 1,表示发送保持寄存器空,
当 CPU将字符写入发送保持寄存器后,该位为 0
为 1,表示正在传输中止字符为 1,表示出现帧错误为 1,表示出现奇偶错为 1,表示出现溢出错为 1,表示接收数据缓冲器收到一个数据,既接收数据准备好;
当 CPU读走数据后,该位为 0
48
为 1使 DTR*引脚为低否则为高
6,调制解调器控制寄存器 MCR
设置 8250与数据通信设备之间联络应答的输出信号
0 0 0 LOOP OUT2 OUT1 RTS DTR
为 1使 RTS*引脚为低否则为高为 1使 OUT1*引脚为低否则为高为 1使 OUT2*引脚为低否则为高为 1使 8250为 循环工作方式否则为正常工作方式
49
自测试循环工作方式
8250
数据终端准备好 DTR*
数据装置准备好 DSR*
发送数据 SOUT
接收数据 SIN
请求发送 RTS*
允许发送 CTS*
输出 OUT2
载波检测 RLSD*
振铃指示 RI*
输出 OUT1
4个控制输入信号和系统分离,并在芯片内部与 4个控制输出信号相连
发送的串行数据立即在内部被接收
可用来检测 8250发送和接收功能正确与否,而不必外连线
50
7,调制解调器状态寄存器 MSR
反映 4个控制输入信号的当前状态及其变化
MSR高 4位中某位为 1,说明相应输入信号当前为低有效,否则为高电平
MSR低 4位中某位为 1,则说明从上次 CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之
MCR低 4位任一位置 1,均产生调制解调器状态中断,当 CPU读取该寄存器或复位后,低 4位被清零
51
4级中断
接收线路状态中断
奇偶错,溢出错,帧错和中止字符
接收器数据准备好中断
发送保持寄存器空中断
调制解调器状态中断
清除发送状态改变
数据终端准备好状态改变
振铃接通变成断开
接收线路信号检测状态改变优先权高优先权低
52
8,中断允许寄存器 IER
8250设计有 2个中断寄存器和 4级中断
4级中断的优先权,是按照串行通信过程中事件的紧迫程度安排的,是固定不变的
用户可利用中断允许或禁止进行控制
中断允许寄存器的低 4位控制 8250这 4级中断是否被允许
某位为 1,则对应的中断被允许
否则,被禁止
53
10,中断识别 IIR
保存正在请求中断的优先权最高的中断级别编码
0 0 0 0 0 ID1 ID0 IP 0 有中断
1 无中断
ID1ID0 优先权 中断类型
1 1
1 0
0 1
0 0
1
2
3
4
接收线路状态接收数据准备好发送保持寄存器空调制解调器状态
54
10.4 异步通信适配器(补充)
IBM PC/XT机的串行异步通信适配器
以 8250为核心
完成发送时的并转串和接收时的串转并以及相应的控制工作
配置了 TTL电平与 EIA电平转换电路等
展开异步通信适配器的
硬件电路
软件编程
55
RCLK
BAUDOUT
IRQ4
IRQ3
RESET
+5V
A8
AEN
A3~ A7A9
IOR
IOW
A0~ A2
MR
XTAL1
OUT1
OUT2
INTRPT
DISTR
DOSTR
A0~ A2
CS2
8250LS245 D0~ D7D0~ D7
J9
J10
J11
J12
DIR
1.8432MHz
CS0
CS1
ADS
DISTR
DOSTR
+ 5V
10.4.1 异步通信适配器的接口电路
56
10.4.2 异步通信适配器的初始化编程
对 8250的内部控制寄存器进行编程写入
⑴ 写入除数寄存器
设置传输率
⑵ 写入通信线路控制寄存器
设置字符格式
⑶ 写入调制解调器控制寄存器
设置工作方式
⑷ 写入中断允许寄存器
设置中断允许或屏蔽位
57
3,8250应用举例写通信控制字 D7=1
写除数低 8位写通信控制字写除数高 8位写 MODE控制字写中断允许字结束
8250的初始化过程例 【 8-17】 8250端口地址为 3F8H~ 3FFH,若 8250以波特率
9600bps,进行异步通信,每字符 8位,1位停止位,采用奇校验,允许所有中断,试编程初始化 。
解,MOV DX,3FBH ; 8250控制寄存器地址送 DX
MOV AL,80H ;置 DLAB=1,设置除数寄存器
OUT DX,AL
MOV DX,3F8H ;除数寄存器地址送 DX
MOV AL,0CH ;波特率为 9600bps;1843200/(9600*16)=12
OUT DX,AL ;送除数低 8位
INC DX
MOV AL,00H ;送除数高 8位
OUT DX,AL
MOV DX,3FBH ; 8250控制寄存器地址送 DX
MOV AL,0BH ; 8位数据,奇校验,1位停止位
OUT DX,AL
MOV DX,3F9H ;中断允许寄存器地址送 DX
MOV AL,0FH ;设置中断允许控制字,允许所有中断
OUT DX,AL
MOV DX,3FCH ;设置 MODEM控制字
MOV AL,0FH
OUT DX,AL ; OUT1*,OUT2*均为 0
60
10.4.3 异步通信程序
程序循环读取辅助串口 8250的通信状态寄存器 ( 2FDH)
数据传输错误就显示一个问号,?,
接收到数据就显示出来
可以发送数据就从键盘输入发送字符 ( 用户没有输入字符就不发送 )
如果按下 ESC键返回 DOS
查询通信线路状态
statue,mov dx,2fdh;读通信线路状态寄存器
in al,dx
test al,1eh ;接收有错误否?
jnz error ;有错,则转错误处理
test al,01h ;接收到数据吗?
jnz receive ;是,转接收处理
test al,20h ;保持寄存器空吗?
jz statue ;不空,循环查询异步通信程序
62
5,通信线路状态寄存器 LSR
0 D6 D5 D4 D3 D2 D1 D0
为 1,表示发送移位寄存器空;
当数据由发送保持寄存器移入发送移位寄存器时,该位为 0
提供串行异步通信的当前状态供 CPU读取和处理为 1,表示发送保持寄存器空,
当 CPU将字符写入发送保持寄存器后,该位为 0
为 1,表示正在传输中止字符为 1,表示出现帧错误为 1,表示出现奇偶错为 1,表示出现溢出错为 1,表示接收数据缓冲器收到一个数据,既接收数据准备好;
当 CPU读走数据后,该位为 0
检测键盘输入
mov ah,0bh ;检测键盘有无输入字符
int 21h ; P91
cmp al,0
jz statue ;无输入字符,循环等待
mov ah,0 ;有输入字符,读取字符
int 16h ;P93;采用 01号 DOS功能调用,则有回显
cmp al,1bh
jz done ;是 ESC键,程序返回 DOS
异步通信程序发送数据
mov dx,2f8h;将字符输出给发送保持寄存器
out dx,al ;串行发送数据
jmp statue ;继续查询异步通信程序接收数据
receive,mov dx,2f8h;从输入缓冲寄存器读取字符
in al,dx
and al,7fh;传送标准 ASCII码 ( 7个数据位 );所以仅取低 7位
push ax ;保存数据异步通信程序显示数据
mov dl,al ;屏幕显示该数据
mov ah,2
int 21h
pop ax ;恢复数据
cmp al,0dh ;数据是回车符吗?
jnz statue ;不是,则循环
mov dl,0ah ;是,再进行换行
mov ah,2
int 21h
jmp statue ;继续查询异步通信程序接收错误处理
error,mov dx,2f8h;读出接收有误的数据,丢掉
in al,dx
mov dl,’?’ ;显示问号
mov ah,2
int 21h
jmp statue ;继续查询异步通信程序第 10章 总结
1,掌握起止式通信协议,RS-232C引脚定义和连接
2,理解串行数据的发送,起始位检测,
数据接受和错误标志
3,了解 8250的引脚和内部寄存器功能及其在 IBM PC系列机上的应用情况
4,掌握异步通信适配器的初始化编程和通信程序第 10章 总 结