800 likes | 940 Views
第 5 章 可编程接口芯片(2). 5.3 串行通信的基本概念 5.4 可编程串行通信接口16550 5.5 可编程串行通信接口8251 A. 5.3 串行通信的基本概念. 计算机与外部设备之间或计算机与计算机之间的信息交换称为 “ 通信 ” 。 通信方式可分为并行通信和串行通信两种: 并行通信:数据的各位同时传送 串行通信:按照一定的格式一位一位地顺序传送数据。信号在一根信号线上传输。. 计算机“主机”部件之间,如 CPU 与存储器、 CPU 与接口电路,多采用并行方式传输数据 串行数据传输主要出现在接口与外部设备、计算机与计算机之间。
E N D
第5章 可编程接口芯片(2) 5.3 串行通信的基本概念 5.4 可编程串行通信接口16550 5.5 可编程串行通信接口8251A
5.3 串行通信的基本概念 • 计算机与外部设备之间或计算机与计算机之间的信息交换称为“通信”。 • 通信方式可分为并行通信和串行通信两种: • 并行通信:数据的各位同时传送 • 串行通信:按照一定的格式一位一位地顺序传送数据。信号在一根信号线上传输。
计算机“主机”部件之间,如CPU与存储器、CPU与接口电路,多采用并行方式传输数据计算机“主机”部件之间,如CPU与存储器、CPU与接口电路,多采用并行方式传输数据 • 串行数据传输主要出现在接口与外部设备、计算机与计算机之间。 • 并行通信:数据有多少位,就需要多少根传输线,传送速度快。数据位数多、传输距离远时传输成本高。 • 串行通信:只需一对传输线,可以利用现有的电话线作为传输介质,降低传输线路的成本,远距离数据传送时更加突出。
5.3.1 串行数据通信 1. 数据传送方式 (1)单工方式 只允许数据按照一个固定的方向传送 (2)半双工方式 收发双方均具备接收和发送数据的能力,只有一对传输线,同一时刻只能有一个站发送 (3)全双工方式 有两对传输信号线,每个站任何时刻既可以发送,又可以接收
2. 通信速率 (1)传输率 每秒钟传送二进制数码的位数,单位:位/秒 (bps)。 (2)波特率 • 每位传送时间的倒数 • 每次传送1位时,波特率大小和传输率相等 • 使用调相技术可以同时传输2位或4位,这时传输率大于波特率 • 时钟频率可选为波特率的1倍、16倍或者64倍。
3. 信号的调制/解调 • 信号的调制: 用一个信号控制另一个信号的某个参数(幅值,频率,相位),使之随之变化的过程称为调制。 • 信号的解调: 从已调制信号中还原出被调制信号的过程称为解调。
发送端,调制器把数字信号变成模拟信号送到传输线路上。发送端,调制器把数字信号变成模拟信号送到传输线路上。 • 接收端,解调器把模拟信号还原成数字信号,送到数据处理设备。 • 调制器和解调器做在一起称为调制解调器,即MODEM。 • 计算机称为数据终端设备DTE(Data Terminal Equipment) • 调制解调器(MODEM)和其他通讯设备称为数据通信设备DCE(Data Communication Equipment)。
5.3.2 串行通信的方式 1. 同步传送方式 • 发送方发送数据信号的同时发送一个用于同步的时钟信号。 • 同步时钟信号的一个周期和一位数据是对应的。在同步时钟信号一个周期的时间里,数据线上同步地发送1bit数据。 • 数据连续传送。若干个数据组成一个数据块。
同步通讯格式 面向字符同步方式: • 用一个或者两个同步字符作为数据块的开始。 • 同步字符由用户约定,经常采用ASCII码中代码为16H的“SYNC(同步)”字符。 • 随后是由字符组成的信息, • 字符之间没有间隔。 面向比特同步方式: • 以二进制信息“01111110”开始 • 随后是需要发送的各位二进制信息 • 最后以“01111110”结束
2. 异步传送方式 • 异步传送的数据以字符为单位 • 数据传输的速率由双方事先约定 • 以“帧(Frame)”为传送单位 • 一帧信息由7~12位二进制组成: • 起始位:1位逻辑0 • 数据位:5~8位,由收发双方约定,先发送低位。 • 奇偶校验位:可约定采用奇校验,偶校验,无校验传输。 • 停止位:1位、1.5位或2位的逻辑1信号
5.3.3 串行通讯接口 • 把计算机的并行数据转换成串行数据发送出去 • 把接收到的外部串行数据转换成并行数据送入计算机 (1) 数据总线收发器 双向的并行数据通道,传送数据、状态和控制命令。 (2)控制寄存器 接收CPU的各种控制信息。 (3)状态寄存器 串行通信过程中的状态信号
(4)输入、输出移位寄存器 完成“并行”和“串行”二种数据的相互转换 (5)数据输入寄存器 输入移位寄存器每次接收一位外部输入的数据,接收的数据填满后,将完整的并行数据送入数据输入寄存器暂存。 (6)数据输出寄存器 接收来自CPU输出的数据,并行送往输出移位寄存器,逐位右移输出。 (7)控制信号逻辑 接收CPU发来的控制信号,产生内部各寄存器的读写信号。 (8)移位脉冲时钟 从外部输入时钟信号,用作发送和接收数据的移位时钟。
5.3.4 RS-232C标准 • 为了使通信能够顺利地进行,通信双方必须就通信的规则事前进行约定, • 约定好的并在通信过程中双方共同遵守的通信规则称为通信协议。
1. 信号电平 • RS-232C标准采用负逻辑 • 逻辑“1”在-3V~-15V之间 • 逻辑“0”在+3V~+15V之间 • 通常使用±12V作为RS-232C电平 • MC1488和MC1489进行RS232和TTL之间的电平转换 2.信号定义 • 表5-6给出了RS-232C接口部分常用信号的定义。 3.接插件 • 使用25个引脚或9个引脚的D型接插件进行连接。
符 号 方 向 功 能 9针连接器引脚号 25针连接器引脚号 TXD 输出 发送数据 3 2 RXD 输入 接收数据 2 3 输出 请求发送 7 4 输入 发送允许 8 5 输入 数据设备就绪 6 6 GND 信号地 5 7 输入 载波检测 1 8 输出 数据终端就绪 4 20 输入 响铃指示 9 22
5.4 可编程串行通信接口16550 • 通用的可编程异步通信接口芯片。 • 内部有时钟产生电路、可编程波特率发生器、双缓冲通信数据寄存器和多种中断处理功能。 • 对外有调制解调器控制信号,可直接与MODEM相连。 • 与早期IBM/PC机使用的异步通信接口8250兼容,最高波特率提高到1.5Mb/s,具有16字节FIFO(先进先出缓冲)发送和接收功能。
5.4.1 16550的内部结构与外部引脚 1. 数据总线缓冲器 • 连接16550与CPU数据总线 2. 选择和读/写控制逻辑 • 接收来自CPU的地址、片选和控制信息,产生内部各端口的读写操作命令。 3. 发送器 • 由发送保持寄存器、发送移位寄存器和发送同步控制组成。 • 待发送的数据写入发送保持寄存器。发送保持寄存器的内容自动转存到发送移位寄存器,在发送器时钟的控制下,由SOUT引脚发送出去。
4. 接收器 • 由接收移位寄存器、接收缓冲寄存器和接收同步控制器组成。 • 在接收时钟控制下,由SIN引脚输入的串行数据逐位存入移位寄存器,转换后的并行数据存入接收缓冲寄存器,等待CPU读取。 5. 调制/解调器控制电路 • 提供一组控制信号,直接与调制解调器相连,完成远程通信任务。 6. 通信线控制寄存器和通信线状态寄存器 • 控制寄存器保存CPU写入的通讯数据格式。 • 状态寄存器提供串行数据发送和接收时的状态
7. 波特率发生控制电路 • 由波特率发生器、分频系数寄存器组成。 • 16550对18.432MHz的输入时钟进行分频,产生所要的发送器和接收器时钟信号。 • 分频系数在初始化时分两次写入除数寄存器的高8位和低8位,分频系数可由下式算出: • 除数=18432000÷(波特率×16) 8. 中断控制逻辑 • 由中断允许寄存器、中断识别寄存器和中断控制逻辑三部分组成。 • 实现中断优先权管理、中断申请等功能。
9. 16550的引脚 (1)数据信号 双向数据线D7~D0,与数据总线相连 (2)地址信号 • 片选信号:CS0、CS1、CS2#。CS0=CS1=1,CS2#=0时,表明芯片被选中。 • A2~A0 :具体访问哪个寄存器,由A2~A0确定。 • ADS# :地址选通信号ADS#为低电平时,锁存三个片选信号以及A2~A0的输入状态。 (3)读/写控制信号 • 两对读写控制信号,每对信号功能相同,电平不同。 • RD=1或RD#=0中一个有效且16550被选中时,可读; • WR和WR#=0中一个有效且16550被选中,可写。
(4)中断控制和复位信号 • INTR:发送保持寄存器空或接收数据有效,16550的中断允许寄存器相应位置1时,16550的中断请求引脚INTR变为高电平,用作中断请求信号。 • MR:复位信号,输入,它与系统RESET信号连接,系统复位同时也对16550复位。 • OUT1和OUT2 :这两个输出引脚可以通过用户编程来改变输出电平。 图5-31
(5)时钟信号 • XIN和XOUT:16550的时钟信号输入引脚。 • 从XIN输入的基准时钟,经过16550内部波特率发生器(分频器)分频后产生发送器时钟,并经过BAUDOUT引脚输出。 • RCLK:接收时钟,输入,常与BAUDOUT相连。 (6)与外设/调制解调器之间的联络信号 • RTS#: 请求发送信号,输出。输出给外设或MODEM • CTS#: 允许发送信号,输入。外设或MODEM对RTS#的应答。 • DTR#: 数据终端准备好。输出给外设或MODEM的,DTR#=0表示16550已经就绪。 • DSR#:数据设备准备好。对DTR信号的应答,DSR#=0,表示外设或MODEM已经就绪。
DCD#: 载波检测输入, 表示MODEM已经接收到载波信号 • RI#: 振铃指示输入信号, 表示MODEM已经接收到振铃信号。 • SIN:串行数据输入。 • SOUT:串行数据输出。 (7)数据就绪信号 • RXRDY:接收器就绪信号 • TXRDY:发送器就绪信号。
5.4.2 16550的内部寄存器 1. 16550内部寄存器 • 有10个可寻址的8位寄存器,由地址线A0~A2和读/写控制信号选择要访问的寄存器。 • 内部寄存器分为三组: • 数据传输:发送保持寄存器和接收缓冲寄存器。 • 工作方式、参数设置:通信线控制寄存器、除数寄存器、MODEM控制寄存器和中断允许寄存器。 • 状态寄存器:通信线状态寄存器、MODEM状态寄存器和中断识别寄存器。
DLAB A2 A1 A0 访问的寄存器 主串口地址 辅串口地址 0 0 0 0 接收缓冲器(读) 3F8H 2 F8H 0 0 0 0 发送保持寄存器(写) 3F8H 2 F8H 0 0 0 1 中断允许寄存器 3F9H 2 F9H × 0 1 0 中断识别/FIFO寄存器 3FAH 2 FAH × 0 1 1 通信线控制寄存器 3FBH 2 FBH × 1 0 0 MODEM控制寄存器 3FCH 2 FCH × 1 0 1 通信线状态寄存器 3FDH 2 FDH × 1 1 0 MODEM状态寄存器 3FEH 2 FEH 1 0 0 0 除数寄存器(低字节) 3F8H 2 F8H 1 0 0 1 除数寄存器(高字节) 3F9H 2 F9H
(1)发送保持寄存器(3F8H/2F8H) • 保存CPU送来的并行数据,送到发送移位寄存器,发送移位寄存器在发送器时钟的作用下,把并行数据转换成串行数据从SOUT引脚输出。 • 只有在发送保持寄存器空时,CPU才可以向发送保持寄存器写入下一个要发送的数据。 (2)接收缓冲寄存器(3F8H/2F8H) • 在接收时钟的作用下,从SIN引脚输入的串行数据被送到接收移位寄存器。 • 去掉起始位、校验位和停止位后,串行数据转换成并行数据并存入接收缓冲寄存器,等待CPU接收。
(3)通信线控制寄存器(3FBH/2FBH) • 用来设置串行异步通信的数据格式 • D7位:DLAB寻址位 • D7=1,访问除数寄存器 • D7=0,访问接收缓冲器、发送保持寄存器。 • D6位:D6=1,发送方连续发送长时间中止信号(空号),空号发送的时间超过一个完整的字符传送时间时,接收方就认为发送方已中止发送。 • D3~D5位:选择奇偶校验方式。 • D2位:规定一帧数据中停止位的位数。 • D0位、D1位:定义一帧数据中数据位的位数。
通信线控制寄存器(3FBH/2FBH) 图5-32
(4)中断识别寄存器/ FIFO控制寄存器(3FAH/2FAH) • 16550内部有四级中断,但只有一根中断请求信号。中断发生后,CPU通过查询中断识别寄存器来辨别中断类型。 • FIFO控制寄存器和中断识别寄存器占用相同的端口地址。中断发生时读出该寄存器的内容,它作为中断识别寄存器来使用;写入FIFO控制字时,作为FIFO控制寄存器。 图5-33 中断识别寄存器
(5)通信线状态寄存器(3FDH/2FDH) 图5-34
(6)中断允许寄存器(3F9H/2F9H) 低4位代表中断允许控制位,置1,则允许相应的中断源请求中断,否则禁止中断。 图5-35
(7)MODEM控制寄存器(3FCH/2FCH) 设置与调制解调器连接的联络信号: D7~D5位规定为0; D4位: =1,正常发送/接收; =0,内部循环方式(用于芯片检测)。 D0~D3位的状态直接控制相关引脚的输出电平: • D0=1,使引脚DTR#= 0 ,DTR#信号有效。 • D1=1,使引脚RTS#= 0,RTS#信号有效。 • D2=1,使引脚OUT1 #= 0,该引脚留给用户使用。 • D3=1,使引脚OUT2 #= 0,使16550能送出中断请求。
D7 D6 D5 D4 D3 D2 D1 D0 RI DCD DSR CTS DDCD TERI DDSR DCTS DCD#引脚 0=引脚为1 1=引脚为0 CTS#发生变化 0=无变化 1=有变化 DSR#发生变化 0=无变化 1=有变化 DSR#引脚 0=引脚为1 1=引脚为0 RI#变化 0=无变化 1=有变化 CTS#引脚 0=引脚为1 1=引脚为0 DCD#发生变化 0=无变化 1=有变化 (8)MODEM状态寄存器(3FEH/2FEH) RI#引脚 0=引脚为1 1=引脚为0 图5-36
(9)除数寄存器(3F8H, 3F9H/2F8H, 2F9H) • 16550发送或接收的移位时钟,是在它的基准时钟(18.432MHz)基础上分频而来的。 • 根据所需的波特率来确定分频系数,并在初始化时存入除数寄存器。 • 表5-8给出了9种波特率所需设置的除数寄存器的值。
波特率 除数高8位 除数低8位 1200 03H 0C0H 1800 02H 80H 2000 02H 40H 2400 01H 0E0H 3600 01H 40H 4800 00H 0F0H 7200 00H 0A0H 9600 00H 78H 19200 00H 3CH 表5-8 波特率与分频系数对照表
5.4.3 串行通信接口16550的应用 1. 16550的初始化 • 计算机硬件或软件复位后,要对16550进行初始化。 • 初始化主要包括: • 对通信线控制寄存器进行设置,确定异步通信的数据格式。 • 设置除数寄存器,确定通信速率。 • 对FIFO控制寄存器、中断允许寄存器和MODEM控制寄存器进行设置。
初始化步骤: (1)80H送通信线控制寄存器,使寻址位D7=1。 (2)除数高8位/低8为分别送除数寄存器高8位/低8位,确定通信速率。 (3)将D7=0的命令字写入通信线控制寄存器, 确定串行异步通信一帧数据帧的格式。 图5-32
通信线控制寄存器(3FBH/2FBH) 图5-32
(4)设置FIFO控制寄存器(3FAH) 。 • FIFO控制寄存器与中断识别寄存器的地址都是3FAH;读出时是中断识别寄存器;写入时是FIFO控制寄存器。FIFO控制寄存器中各位的功能如图5-37。
(5)设置中断允许寄存器(3F9H/2F9H) • 设置成查询方式:中断允许寄存器中的命令字为0。 • 设置为中断方式:设置中断允许寄存器中的相应位为1,该位所控制的中断请求允许中断。
(6)设置MODEM控制寄存器(3FCH/2FCH) • D4=0:设置16550为正常接收/发送方式。 • D4=1:设置16550工作在内部循环自检方式。 • D3=0:16550工作在查询方式。 • D3=1:16550工作在中断方式。 MODEM控制寄存器
例:16550端口地址为3F8H-3FFH,使16550以19200波特率进行异步通信,每字符为8比特,1个停止位,采用奇校验,允许所有中断,则初始化程序为:例:16550端口地址为3F8H-3FFH,使16550以19200波特率进行异步通信,每字符为8比特,1个停止位,采用奇校验,允许所有中断,则初始化程序为: MOV DX,03FBH ;16550控制寄存器地址送DX MOV AL,80H ;置DLAB=1,设置除数寄存器 OUT DX,AL MOV DX,03F8H ;除数低8位寄存器地址送DX MOV AX,003CH ;波特率为19200bps OUT DX,AL ;送除数低8位 MOV AL,AH INC DX ;产生除数高8位寄存器地址 OUT DX,AL ;送除数高8位
MOV DX,03FBH ;16550控制寄存器地址送DX MOV AL,0BH ;8位数据位,奇校验,1位停止位 OUT DX,AL MOV DX,03FAH ;FIFO控制寄存器地址送DX MOV AL,47H ;允许FIFO并清除 OUT DX,AL ; 设FIFO中断触发值为4字节 MOV DX,03F9H ;中断允许寄存器地址送DX MOV AL,0FH ;允许所有中断 OUT DX,AL ; 设置中断允许控制字 MOV DX,03FCH ; MODEM控制字寄存器地址 MOV AL,0BH ;正常收发,OUT1,OUT2有效 OUT DX,AL ;设置MODEM控制字 ......