第八章 串行接口 8-1 串行通信的基本概念 8-2 可编程串行接口8251A 8-3 8251A的应用
8.1 串行通信的基本概念 串行通信的概念 所谓串行通信是指外设和计算机间使用一根数据信号线一位一位地传输数据,每一位数据都占据一个固定的时间长度。 计算机和外设之间信息的交换称为通信,通信有两种:串行通信和并行通信。
串行通信和并行通信的比较: 并行通信 速度快,但是使用的通信线多,如果距离远时,线的成本增加。而且传输的可靠性随着距离增加而降低。 串行通信 适合远距离通信。所用通信线少,传输距离远。相比于并行通信速度较慢。
8.1.2 串行数据传输方式 按传送方向:串行通信分为全双工、半双工、单工等三种通信方式。 单工:两站通信,一边只能发,另一边只能收。 半双工:单线通信。一边收或者发,另一边发或者收。 全双工:双方可以同时收发。 全双工 半双工
8.1.3 串行通信的类型 串行通信时,数据、控制和状态信息都使用一根信号线传输,所以收发双方必须遵守共同的通信协议,才能解决传送速率、信息格式、位同步等问题。 根据同步方式的不同,串行通信可分为:同步通信、异步通信。
异步通信 同步通信:多个字符成组传送,在每组信息的开始,加上同步字符,最后有结束符。收发双方时钟同步。 缺点:非数值码较多,效率低 传送数据45H的过程(01000101) 缺点:非数值码较多,效率低 同步通信:多个字符成组传送,在每组信息的开始,加上同步字符,最后有结束符。收发双方时钟同步。 数据未传送时,线上是高电平状态。开始传送后,先发送低电平 起始位,后发数据,后发奇偶校验位和停止位。 同步字符 字符1 字符2 …… 字符n 校验字符 数据块
8.1.3 串行传送速率 在串行通讯中,用波特率来描述数据的传输速度。即每秒钟传送的二进制位数,简写为bps。收、发双方的波特率必须一致。 常用传送速率1200、4800、9600、115200 同步传送的波特率高于异步传送波特率。 Eg:串行字符由1个起始位、7个数据位、1个停止位和1个奇偶校验位等10个数位构成,每秒传送120字符,则数据的波特率为: 120字符/s * 10b/字符=1200bps
8.1.4 串行接口标准RS-232 在串行通信中,使用最普遍的是RS-232C标准 PC机上的COM口,就是RS-232C接口,使用9针和25针连接器 RS-232接口标准采用EIA电平,规定高电平为+5V-15V,低电平为-5V— -15V,而且TxD、RxD引脚的信号使用负逻辑,即高电平表示逻辑0,低电平表示逻辑1. 传输距离最大不超过15m,传输速率最高不超过20Kbps
串行通信的接口标准 RS-232
串行通信的接口标准 TXD 发送数据 RXD 接收数据 SG/GND 信号地 DSR DCE准备好 DTR DTE(即微机接口电路,如8250/8251)准备好 RTS DTE请求DCE发送 CTS DCE允许DTE发送,该信号是对RTS信号的回答。 DCD 数据载波检测 当本地DCE收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收,并且由DCE将接收到的载波信号解调为数字信号,经RXD线送给DTE。 RI 振铃信号 当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。 DTE 数据终端设备(例计算机) DCE数据通信设备(例Modem)
例:用232接口连接两台计算机,实现通信 TXD RXD GND TXD RXD GND
8-2 可编程串行通信接口芯片8251A 8251:可编程、全双工、通用同步\异步数据收发器。 1.数据总线缓冲器 设有三个缓冲器, 状态缓冲器用来寄存8251的工作状态,其内容可随时由CPU读取,以便CPU进行查询测试。 接收数据缓冲器用来存放接收器接收到并已经装配完的字符(准备送往CPU)。 发送数据/命令缓冲器用来寄存CPU送入8251的数据或命令。 IN指令可以输入状态寄存器、和接收数据缓冲器中的数据。 OUT指令可以 控制从发送数据缓冲器输出数据。 通信实际上把数据一位一位地发送和接收,而计算机处理数据是并行的,它要传输的数据也是并行的,因此这就需要一个部件把并行数据与串行数据进行转换。 发送器由发送数据缓冲器、发送移位寄存器、发送控制电路三部分构成。要发送的数据首先要送到发送数据缓冲器,如果是异步传输则由发送控制电路在其首位加上起始位停止位,如果是同步传输,则先送出一个或两个同步字符,然后经过移位寄存器从TxD引脚发出,其发送的速率取决与TxC引脚输入的时钟频率 当发送器做好发送数据的准备,则会在TxRDY引脚输出高电平给CPU,CPU把要发送的数据送出;当数据送完,发送器空,则会把TxE引脚置为高电平 当收到数据了,RxRDY置为高电平,表示已经接收到数据。
RxC— 接收器时钟。输入。决定了接收数据的速率。 2.接收器 RxD — 接收器数据。输入。 RxC— 接收器时钟。输入。决定了接收数据的速率。 RxRDY — 接收器准备好信号。输出,高电平有效。已经接收到数据,该引脚为高。给CPU,可以把数据取走。 SYNDET/BRKDET 一 同步检测/断点检测信号。SYNDET用于同步方式,输入/输出,高电平有效;BRKDET用于异步方式,输出,高电平有效。 3 发送器 TxD — 发送器数据,输出。 TxC — 发送器时钟,输入。决定了发送速率。 TxRDY — 发送器准备好信号,输出,高电平有效。可以发送下一个数据了 TxE — 发送器空信号,输出,高电平有效 。 RxC:同步输入,接收时钟应该等于接收数据的波特率。 异步输入时,接收时钟的频率可以是波特率的1、16、64倍。 SYNDET/BRKDET :如果是同步方式,是SYNDEC同步检测信号。内同步完成,则该引脚输出为高。如果是外同步,同步好后,给该引脚输入为高。 如果是异步方式,为断点检测。当检测到RXD引脚上又两个完全为0的字符,表明接收无数据,将该引脚值为高电平,表示无数据可读。 TxRDY :表示发送器准备好,可以发送数据了。也就是发送数据缓冲器为空,可以接收cpu给出的发送数据。 TxE :发送完数据,缓冲器无数据可发,会把该为值为1
5.读/写控制逻辑电路 (1) 接收写信号,WR。 (2) 接收读信号,RD. (3) 控制/数据信号C/D,将此信号和读/写信号合起来决定当前读/写的是数据还是控制字或状态字。 (4) 时钟信号CLK,产生8251内部的定时信号。 (5) 接收复位信号RESET,使8251处于空闲状态。 (6) 片选信号 ,CS表示8251被选中。
三个信号和具体的读/写操作之间的关系如表 C/D RD WR 具体操作 1 CPU从8251读取数据 CPU向8251输出数据 CPU读取8251状态 CPU往8251写入控制命令 C/D这个引脚 要么是选择数据端口,要么选择命令端口,所以可以和地址总线相连。 当8251和8位CPU相连时,我们只要把地址线A0和8251的C/D相连,8251就可以得到一奇一偶两个连续的端口地址。
8251A与CPU及外设的连接 由接线图可以分析出: 控制口地址:F2H 数据口地址:F0H D7~D0 RXD CS TXD 8251A RXC C/D TXC RESET RD WR TXRDY TXE RXTDY BRKDET D7~D0 A7 A6 A5 A4 M/IO 8086 A3 A2 A0 A1 RESET RD WR G1 Y0 G2A G2B C B A 74LS138 RS-232接口 外 设 波特率发生器 G1 不是/G1 RS-232接口 用于 将8251的TTL电平转换为外设需要的 RS232电平标准。 注意 A0地址的连接很重要,16位CPU和8位的外设相连,保证低8位数据传输,必须是偶地址。所以选通8051得使A0必须为0才醒。但是还有数据口和状态控制口的区别 所以可以用A1地址来选择,当然使用其它地址线也可以。 注意:1、哪些引脚要和CPU相连,哪些和外设相连。 2、 TXRDY、TXE、RXTDY、BRKDET这些信号 可以做查询时候的状态位 或者 中断请求信号。 3、如果是8位数据的CPU和8251相连。A0 和C/D相连就可以了。但是16位数据的CPU和8251应该怎么连接。奇偶地址问题。 4、如何确定8251各个端口的地址是多少。 由接线图可以分析出: 控制口地址:F2H 数据口地址:F0H
注意:
8251的编程 流程 8251A是可编程的多功能通信接口,在用它传送数据之前必须对它进行初始化,确定它的工作方式. 硬件复位或者软件复位(D6=1) 流程 输出方式字 输出命令字 8251A是可编程的多功能通信接口,在用它传送数据之前必须对它进行初始化,确定它的工作方式. 传输完命令字之后,8251可以开始传送数据了。如果需要更改工作方式,则必须复位,重复前面的初始化编程操作。 在方式字中设定的同步字位数(D7=0) 在命令字中设定软件复位(D6=1)
工作方式控制字: 是否同步方式 由 D0、D1两位制定, 如果00则为同步方式,那么D6设置同步检测引脚,D6=1,则为外同步,SYNDET引脚为输入信号。 当D6=0,为内同步,SYNDET引脚为输出信号。 D7=1 为单同步,发送的同步字符个数为1个,D7=0为双同步,需要发送两个同步字符。
命令字格式: 只有写入命令控制字后,8251A才能处于相应的运行状态,接收或发送数据。 EH:同步操作的时候,EH=1 则启动搜索状态,开始在RxD引脚搜索同步字符。 IR,=1软件复位。 RTS:=1 请求发送。 ER=1:将出错标志位都复位。PE、OE、FE。 SBRK=1,强迫TxD引脚 开始发送空白字符0, RxE=1,允许接收数据 TxEN=1,允许发送数据。
其它状态信号,同引脚定义。 状态字格式: 奇偶错误 发送器准备好 溢出错误 数据装置准备好 (调制解调器准备好) 帧错误 DSR SYNDET/BRKDET FE OE PE TxE RxRDY TxRDY 奇偶错误 发送器准备好 溢出错误 数据装置准备好 (调制解调器准备好) 帧错误 其它状态信号,同引脚定义。
例题:初始化8251,使其工作在异步方式 初始化步骤: 复位: 写入方式字 写入命令字 复位方式有两种:上电时硬件复位(不可靠)和软件复位(控制口写入3次0,然后写入复位命令字40H) 注意:控制字的两次写入之间需要延时16个时钟周期以上 写入方式字 写入命令字 注意:写入方式字和命令字都是写入控制端口,写入有顺序要求。如果传送方式改变,必须重新复位,然后重新写入方式字和命令字。
初始化编程举例 8251A工作于异步方式,波特率系数为64,7位数据位,2位停止位,采用偶校验,则工作方式控制字为11111011B,即FBH。 操作命令使接收允许,发送允许,出错复位,则命令控制字为00010101B,即15H。 设825lA端口地址为FEH,则初始化程序如下: MOV AL,0FBH;送工作方式控制字 OUT 0FEH,AL MOV AL,15H;送命令控制字
控制字:清除错误标志,允许接收、发送数据 请初始化8251,使其工作于异步方式、波特率系数为16、7位数据位、1位停止位、偶校验、控制口地址3F2H。 例题: D7 D6 D5 D4 D3 D2 D1 D0 1 7AH 异步方式,波特率系数16 1个停止位 偶校验 7位数据位 IR=1复位命令字 MOV AL,40H OUT DX,AL LCALL DELAY MOV AL,7AH MOV AL,00010101B MOV DX,3F2H MOV AL,00H OUT DX,AL LCALL DELAY 方式字 控制字:清除错误标志,允许接收、发送数据
命令字: 控制字: 例题2:8251控制口地址3F2H,同步方式工作、发送双同步字符、奇校验、数据位7位,写出对8251的初始化程序 D7 1 18H 同步方式 双同步、内同步 奇校验 7位数据位 命令字: D7 D6 D5 D4 D3 D2 D1 D0 1 95H 启动搜索同步字符 ER错误标志复位 允许接收 允许发送
步骤:复位(3个控制字0,复位控制字)、写方式字、送同步字符、写控制字、 MOV DX,3F2H MOV AL,00H OUT DX,AL LCALL DELAY MOV AL,40H MOV AL,18H OUT DX,AL;方式字 LCALL DELAY MOV AL,16H;同步字符 OUT DX,AL OUT DX,AL;同步字符 MOV AL,95H OUT DX,AL;命令字