串行通信协议

Download Report

Transcript 串行通信协议

第六章
串行接口
6.1串行通信的概述
6.2串接口的一般结构
6.3串行接口INTEL8251及应用
6.4IBM PC机的异步串行通信接口
课题11
教学内容
一、串行通信特征
二、串行通信协议
三、波特率和发送接收时钟
四、传输距离
五、 8251A的内部结构和引脚功能
六、 2个端口、2个控制字和1个状态字
七、初始化编程举例
可编程串行通信接口芯片8251A
信息交换就是通信。微机与微机之间、微机与外部设备
之间都存在如何通信的问题。通信方法有并行和串行两种,
如图6-17所示。
¡-
΢» ú
(a)
΢» ú» ò
I/OÉ豸
΢» ú» ò
I/OÉ豸
΢» ú
(b)
图6-17 通信方法
(a) 并行通信;(b) 串行通信
6.1 串行通信特征和传输协议
1.串行通信特征
按数据传送方向划分,串行通信可划分成单工、半双工和
全双工等3种不同的形式,如图6-18所示。
¼×»ú
ÒÒ»ú
(a)
¼×»ú
ÒÒ»ú
(b)
¼×»ú
(c)
图6-18 通信方式
(a) 单工;(b) 半双工;(c) 全双工
ÒÒ»ú
2.串行通信协议
1) 异步通信
异步通信中的1帧是一个由4部分组成的字符数据,
先有一个起始位“0”表示数据开始;随后是5~8位二进
制数表示数据自身,且低位在前,高位在后;接着是可
省略的奇偶校验位1位;最后是一个停止位“1”。图619给出了字符数据的11位帧格式和字符Q的10位帧格式,
图中所画就是字符Q的波形。
´«ËÍ·½Ïò
µÚn¸ö×Ö·û
Êý¾ÝλD
¡«D7
0
УÑéλP
P 1 0 D0 D1 D2 D3 D4 D5 D6 D7 P 1 0 D0
Æðʼλ0
½áÊøλ1
(a)
Æð D D D D D D D ÆæУͣ
ʼ 0 1 2 3 4 5 6
0 1 0 0 0 1 0 1 0 1
(b)
图6-19 异步通信的1帧字符
(a) 11位帧格式;(b) 字符Q的10位帧格式
2) 同步通信
同步通信中的1帧由若干个字符组成。1帧数据格式如
图6-20所示。由于数据块传送时每个字符数据无起始和停
止标志,1帧可以传送多个数据,因此同步通信的速度高于
异步通信,但因需要确定同步字符(使用2个同步字符的称
为双同步,使用一个字符的称为单同步),相应硬件电路也
复杂一些。
ͬ²½ ͬ²½
×Ö·û1 ×Ö·û2
Êý¾Ý¿é
ָʾÐÅÏ¢± êÌâ
¿éÕýÎÄ ½áÊø
图6-20 同步通信的1帧数据
¿é
У Ñé
3.波特率和发送接收时钟
串行通信数据传输速率指每秒传送的二进制数位数
(bit/s),又称为波特率,1波特(Baud)=1位/秒(1 bit/s)。
例如异步传输速率为每秒100字符,每字符由1个起始位、
8位ASCII数据位和一个停止位组成,则传输波特率为
100字符/s×10位/每字符=1000波特
4.传输距离
串行通信的有效距离(波形不发生畸变)与传输速率和
传输线电气特性有关。传输距离随传输速率的增大而减
小。不同的传输距离,需要不同的传输通道配置。图6-
21画出了3种不同距离时的通道配置。
TXD
TXD
TXD
RXD
RXD
RXD
GND
GND
GND
µçƽ
ת»»
TXD
TXD
RXD
RXD
GND
GND
(a)
GND
RXD
GND
(b)
TXD
RXD
µçƽ
ת»»
TXD
I/O
½Ó¿Ú
µ÷ÖÆ µç»°Ïß µç»°
½âµ÷Æ÷
´«Êä
µç»°Ïß
µ÷ÖÆ
½âµ÷Æ÷
I/O
½Ó¿Ú
TXD
RXD
GND
(c)
图6-21 传输通道配置
(a) 近距离传输;(b) 中距离传输;(c) 远距离传输
5.RS-232C串行通信接口标准
RS-232接口标准是美国EIA(电子工业联合会)与BELL
等公司于1969年一起开发的通信协议,它适合于传输速
率为0~20 000波特的通信范围,使用电缆传输能连接的
最大物理距离为15 m(50英尺)。该标准规定了信号线、连
接器的功能以及电气特性。
1) RS-232C接口信号
EIA RS-232C标准规定了数据终端和通信设备之间的
接口信号。所谓“发送”和“接收”都是从数据终端设
备角度定义的。该标准有25线插件和9线插件两种,如图
5-22所示,实用中以9线插件为多。
Òý½Å
¹¦ÄÜ
񅧏
1
Òý½Å
¹¦ÄÜ
񅧏
±£»¤µØ ÆÁ±Î6 DSR
2
TXD
7
GND
3
RXD
8
DCD
4
RTS
9
5
CTS
10
Ô¤Áô
Ô¤Áô
Òý½Å
¹¦ÄÜ
񅧏
Òý½Å
¹¦ÄÜ
񅧏
Òý½Å
¹¦ÄÜ
񅧏
11 䶨Òå
Òý½Å
¹¦ÄÜ
񅧏
Òý½Å
¹¦ÄÜ
񅧏
16 µÚ¶þ½ÓÊÕÊý¾Ý21 ÐźÅÖÊÁ¿¼ì²â
12 µÚ¶þ½ÓÊÕ¼ì²â 17 ½ÓÊÕÐźŶ¨Ê± 22 RI
1
DCD
6
DSR
2
RXD
7
RTS
13 µÚ¶þÔÊÐí·¢ËÍ 18 䶨Òå
23 Êý¾ÝËÙÂʼì²â
14 µÚ¶þ·¢ËÍÊý¾Ý 19 µÚ¶þÇëÇó·¢ËÍ 24 ·¢ËÍÐźŶ¨Ê±
·¢ËÍÐźŶ¨Ê±
DTR
15
20
25 䶨Òå
3
TXD
8
CTS
4
DTR
9
RI
5
GND
(a)
图6-22 RS-232 C接口
(a) 25线插件;(b) 9线插件
( b)
TXD 2
2
RXD
3
3
RTS
4
4
CTS 5
΢ 5
»ú 6 DSR 6
SG
7
7
DCD
8
8
DTR
20
20
RI
22
22
(a)
M
O
D
E
M µç»°Íø
2
3
4
TXD TXD
RXD RXD
2
3
4
CTS CTS
5
5
DSR
DSR
΢ 6
6 ΢
»ú SG
»ú
7
7
8
8
DTR DTR
20
20
22
2
3
΢
»ú
7
TXD TXD
RXD RXD
SG
2
2
3
5
7
΢
»ú
TXD
RXD
CTS
DTR
΢ 6 DSR
SG
»ú
7
20
DTR
22
(b)
(c)
图6-23 信号线连接
(d)
3
20
I/O
É豸
7
2) 电气特性和电平转换电路
EIA RS-232C对电气特性、逻辑电平作了如下规定:①
在TXD和RXD数据线上有逻辑“1”(MARK)=-3~-15 V,
逻辑“0”(SPACE)=+3~+15 V;② 在RTS、CTS、DSR、
DTR、DCD控制线上有+3~+15 V为信号有效(接通、ON
状态,正电压),-3~-15 V为信号无效(断开、OFF状态,
负电压),在-3~+3 V之间的电压无意义,低于-15 V或
高于+15 V电压也无意义,实际操作中应保证电平在±(3~
15) V之间。
图6-24画出了MC1488、MC1489的内部结构和引脚,其
中MC1488的2、4、5、9、10、12和13脚接TTL电平输入;3、
6、8、11脚接EIA RS-232C输出。MC1489的1、4、10、13脚
接EIA输入;3、6、8、11脚接TTL输出。图9-25画出了TTL
器件8251与EIA插接件RS-232C之间的连接。前者要求TTL电
平,后者要求EIA电平,RS-232C所有的输入、输出信号分
别经MC1488和MC1489转换后才能进入连接器或从连接器送
进来。MAX232是一种新型的RS-232C转换芯片,用于完成
TTL和RS-232电平的双向转换,仅需+5 V单一电源和外接5
个电容便能工作,其内部含有电压倍增电路和转换电路,使
用时可连接两对收发线,把通信接口TXD(发送)、RXD(接收)
端的TTL电平0~5 V转换成RS-232C EIA电平(-10~+10 V)。
1
2
3
4
5
6
7
&
14
13
12
11
10
9
8
&
&
&
MC14 88
1
2
3
4
5
6
7
1
1
1
1
MC14 89
图6-24 电平转换器
14
13
12
11
10
9
8
TXD
RTS
DTR
8 25 1 SG
RXD
DC D
CTS
DSR
£ «5 V
2
MC
4, 5
1 48 8
9, 10
3
6
8
3
MC
6
1 48 9
8
11
2 ,5 ,9,12
1
4
10
13
图6-25 转换连接图
2
4
20
7
RS-2 32
3 2 5Ïß
8
5
6
6.2 8251A的内部结构和引脚功能
8251A是一种可用于异步或同步串行通信的可编程接
口芯片,适合于异步或同步传递。
1.8251A的内部结构及工作过程
8251A的结构和引脚分别如图6-26和图6-27所示,内部
由5个主要部分组成:接收器、发送器、调制控制、读写控
制以及系统数据总线缓冲器。各部分由内部总线实现相互
之间联系和通信。
D0¡«D7
CLK
C/ D
RESET
CS
RD
WR
DTR
DSR
RTS
CTS
Êý¾Ý×ÜÏß
» º³åÆ÷
¶Á/д
ÄÚ²¿Êý¾Ý×ÜÏß
·¢ËÍ»º³å
¼°
¿ØÖÆ
TXD
TXRDY
TXE
TXC
¿ØÖÆÂß ¼½ÓÊÕ»º³å
¼°
¿ØÖÆ
µ÷ÖÆ¿ØÖÆ
图6-26 8251A的内部结构
RXD
RXRDY
SYNDET
RXC
D2 1
D3 2
R XD 3
GND 4
D4 5
D5 6
D6 7 8 25 1
D7 8
TXC 9
WR 10
CS 1 1
C/D 1 2
RD 1 3
RXRDY 1 4
28
27
26
25
24
23
22
21
20
19
18
17
16
15
D0
D1
VCC
RXC
DTR
RTS
DSR
RESET
CLK
TXD
TXE
CTS
SYNDET/BD
TXRDY
图6-27 8251A的引脚
表6-5 8251A读写控制功能表
TP86 口地址
PC 扩展板
CPU 从 8251A 读数据
FFF0H
308H
1
CPU 从 8251A 读状态
FFF2H
309H
1
0
CPU 写数据到 8251A
FFF0H
308H
1
1
0
CPU 写命令到 8251A
FFF2H
309H
×
×
×
8251A 总线浮空(无操作)
-
-
CS
C/D
RD
0
0
0
1
0
1
0
0
0
0
1
WR
功
能
2.引脚
CS:片选信号。低电平有效,常接地址译码器的一根输出
线。
C/D:控制/数据线。常接CPU的一根地址线,例如A1或A0。
和C/的接法决定了8251A有两个端口以及两个端口地址。
D0~D7:双向三态数据线。与CPU的D0~D7相连。
RD(Read):读数据信号。低电平有效,输入。当CPU要从
8251A读取数据或状态字时产生此信号并送达8251A。
WR(Write):写数据信号。低电平有效,输入。当CPU要
向8251A写入数据或控制字时产生此信号并送达8251A。8251A
的读写时序是:首先,CS、C/D有效以选中8251A芯片和相应的
端口;然后,CPU发出RD、WR(读、写)控制命令。
TXRDY(Transmitter Ready):发送器准备好信号。用于收发
联络,高电平有效。有效时表明发送器已准备好,能够接收
CPU送来的数据字符。当CPU已向8251A送来一个数据后,
TXRDY自动为零。当CTS=0,TXE=1时允许8251A发送数据。
该信号在查询方式工作中是一个状态信号,CPU通过状态寄存
器的D0能检测到;该信号在中断方式中是中断申请信号。
TXE(Transmitter Empty):发送器空信号。高电平有效
时表示发送操作已结束,说明发送器中的数据已发送出去。
RXRDY(Receiver Ready):接收器准备好信号。高电平
有效时表示8251A已经从它的串行输入端接收了一个字符,
并且已完成格式变换,等CPU来取。当CPU从8251A读了一
个数据后,该信号自动复位。该信号在查询方式中作联络
信号用;在中断方式中作中断申请信号用。
SYNDET(Synchronous Detection)/BD(Break Detection):
同步检测/间断检测。
RESET:复位信号。接CPU复位线,要求复位高电平
持续6个时钟周期以上。
DTR:数据终端准备好信号,输出。可用工作命令字
的D1置1使DTR=0有效。
RTS:请求发送信号,输出。由8251A送至MODEM,
表示要求发送。可用工作命令字的D5置1使RTS=0有效。
DSR:数据装置准备好信号,输入。表示调制器已准
备好,用状态寄存器D7位检测。
CTS:允许传送信号,输入。是MODEM对8251A的
RTS信号的响应。
TXD:发送器发送数据线。
RXD:接收器接收数据线。
TXC(Transmitter Clock):发送器输入时钟。用于控制8251A
发送字符的速度。同步方式下,TXC的频率与数据位速率相同。
异步方式下,TXC的频率既可以等于波特率,也可以是波特率
的16倍或64倍。
RXC(Receiver Clock):接收器输入时钟。频率约定与TXC
相同。实际应用中,把TXC和RXC连接一起,使用波特率发生
器作同一个时钟源。
CLK:输入时钟线。为内部电路提供定时。同步方式下,
CLK的频率要大于接收器或发送器输入时钟频率的30倍;异步
方式下,CLK的频率要大于接收器或发送器输入时钟频率的
4.5倍。CLK的周期要在0.42~1.35 μs范围内。
VCC:电源,+5 V。
GND:接地。
6.3 2个端口、2个控制字和1个状态字
1.8251A的2个端口及端口地址
C/D为低电平时选中的是数据口,C/D为高电平时选中的
是控制/状态口。
【例6-4】 8251A的端口地址为308H、309H。设控制字为
40H,已放在AL中。状态字为56H,执行下列程序段后,AL
=?
MOV
DX ,0309H
;置地址指针,309H 为控制/状态端口
OUT
DX ,AL
;从控制口写入控制字,AL=40H 不变
IN
AL ,DX
;从状态口读取状态字,执行结果为 AL=56H
2.8251A、CPU、外设之间的连接
8251A、CPU、外设(MODEM)之间的典型连接如图6-28所
示。8251A与CPU之间并行传送数据;8251A与MODEM之间串
行传送数据。
M/ IO
AB
ÒëÂë
DTR
CS
ÍâÉè
DSR
A0
DB
C/D
RTS
D0¡«D7
CTS
MODEM
RD
RD
TXD
´®Èë
WR
WR
RXD
´®³ö
RESET
TXRDY
TXC
TXE
RXC
RXRDY
8 08 6C PU
SYNDET
8 25 1A
¶¨Ê±/¼ÆÊýÆ÷
CLK
图6-28 8086、8251A和外设连接
3.2个控制字
1) 工作方式字
工作方式字能让8251A选择异步方式还是同步方式工作,
并可按其工作方式指定帧数据格式。该字8位二进制数被分为
四组,每组两位,格式如下:
D7
D6
停止位
(同步)
D5
D4
奇偶校验位
D3
D2
数据位数
(异步)
×0=无校验
D1
D0
波特率系数位
(异步)
(同步)
00=5 位
00=不用
00=同步
01=6 位
01=×1
01=—
×0=内检测
00=不用
×1=外检测
01=1 位
0×=双同步字符
10=1.5 位
01=奇校验
10=7 位
10=×16
10=—
1×=单同步字符
11=2 位
11=偶校验
11=8 位
11=×64
11=—
2) 工作命令字
工作命令字的格式如下:
D7
D6
D5
D4
D3
D2
D1
D0
EH
IR
RTS
ER
SBRK
RXE
DTR
TXEN
错误标志
发送中止
进入搜索
方式
内部复位
发送请求
复位
字符
数据中断
接收允许
准备好
发送允许
3) 工作方式和工作命令字的写入
工作方式字只能写入1个,工作命令字可写入多个,写入
顺序如图6-29所示。
¸´Î» (ʹÓÃR ESET »ò ¿ØÖÆ×ÖD
6£ ½1 )
Òì²½·½Ê½×Ö
¸´Î»
µ¥Í¬²½·½Ê½×Ö Ë«Í¬²½·½Ê½×Ö
ËÍͬ²½×Ö·û
ËÍͬ²½×Ö·û1
¹¤×÷·½Ê½×Ö
ËÍͬ²½×Ö·û2
дÈëÃü Áî×Ö1
D6¡Ù1
дÈëÃü Áî×Ö2
D6¡Ù1
¹¤×÷Ãü Áî×Ö
дÈëÃü Áî×Ö
D6£ ½1
¸´Î»
图6-29 从控制/状态口写入工作方式字和工作命令字
4.1个状态字
状态字是8251A能否进行发送或接收的状态,它位于状态
寄存器中。格式如下:
D7
D6
D5
D4
D3
D2
D1
D0
DSR
SYNDET
FE
OE
PE
TXE
RXRDY
TXRDY
数据装置准备好
同步检测
格式错 溢出错 奇偶错
发送器空
接收准备好 发送准备好
6.4 初始化编程举例
【例5-5】 甲乙两台微机进行串行通信,设甲机发送,乙
机接收。要求把甲机上的100个数据传送到乙机,采用异步方
式,波特率为2400 Baud,字符长度8位,停止位2位,波特率
因子16,无校验。CPU与8251A之间用查询方式交换数据。
端口地址为308H、309H。
解 近距离传送直接相连,不用MODEM。两台微机之间
使用TXD、RXD和SG三根线连接。8251A作为接口的主芯片,
与波特率发生器、RS-232C、TTL电平转换电路、地址译码电
路等就构成一个串行通信接口,如图5-30所示。接收和发送
程序采用查询I/O方式,各自编写,包括8251A初始化、检查
状态字的D5~D3位确定是否有错、检查发送D0/接收D2的状态
是否为1,为1时表示准备好,允许发送/接收1个字节。
TXD
RXD
CPU
TTL
EIA
µçƽת»»
EIA
TXD
µçƽת»»
RXD
TTL
SG
SG
TXC
RXC
²¨ÌØÂÊ
·¢ÉúÆ÷
²¨ÌØÂÊ
·¢ÉúÆ÷
图6-30 双机串行通信
TXC
RXC
CPU
SENDSEG SEGMENT
ASSUME
CS:SENDSEG ,DS:DATA
START: MOV
AX
,DATA
;
MOV
DS
,AX
;设置数据段
MOV
DX
,309H
MOV
AL
,0CEH
;送工作方式字
OUT
DX
,AL
;
MOV
AL
,37H
;送工作命令字
OUT
DX
,AL
;
MOV
CX
,64H
;传送字节数
LOP:
HALT:
MOV
SI
,6000H
;发送区首址偏移量
MOV
DX
,309H
;控制/状态口
IN
AL
,DX
;读状态字
TEST
AL
,38H
;查 D5~D3 中有无 1?
JNZ
HALT
TEST
AL
JZ
LOP
MOV
DX
,308H
;D0=1,发送准备好,置数据口
MOV
AL
,[SI]
;从发送区取 1 字节发送
OUT
DX
,AL
;
INC
SI
;修改发送区地址指针
DEC
CX
;传送字节数减 1
JNZ
LOP
;未发送完,继续
MOV
AH
INT
21H
SENDSEG ENDS
END
START
;D5~D3 中有 1,有错误,转 HALT
,01H
;无错误,查状态位 D0=1?
;D0=0,发送未准备好,等待
,4CH
;发送出错或已送完,返回 DOS
接收程序段如下:
RECESEG SEGMENT
ASSUME CS:RECESEG ,DS:SDATA
BEGIN: MOV
AX
,SDATA
;
MOV
DS
,AX
;设置数据段
MOV
DX
,309H
MOV
AL
,0CEH
;送工作方式字
OUT
DX
,AL
;
MOV
AL
,14H
;送工作命令字
OUT
DX
,AL
;
MOV
CX
,64H
;传送字节数
LOP2:
MOV
DI
,7000H
;接收区首址偏移量
MOV
DX
,309H
;控制/状态口
IN
AL
,DX
;读状态字
TEST
AL
,38H
;查 D5~D3 中有无 1?
JNZ
RHALT
AND
AL
JZ
LOP2
MOV
DX
,308H
;D1=1,接收准备好,置数据口
IN
AL
,DX
;接收 1 字节
MOV
[DI]
,AL
;存入接收数据区
INC
DI
;修改接收区地址指针
LOOP
LOP2
;未接收完,继续
RHALT: MOV
INT
SCEG
AH
21H
ENDS
END
BEGIN
;D5~D3 中有 1,有错误,转 HALT
,02H
;无错误,查状态位 D1=1?
;D1=0,接收未准备好,等待
,4CH
;接收出错或已接收完,返回 DOS
小结
一、串行通信特征
二、串行通信协议
三、波特率和发送接收时钟
四、传输距离
五、 8251A的内部结构和引脚功能
六、 2个端口、2个控制字和1个状态字
七、初始化编程举例
作业
6.1
6.8
6.19