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