500 likes | 716 Views
6.3 串行通信接口. 学习重点 异步通信协议和 RS232C 接口 8250 的内部结构和编程 异步通信程序. 6.3.1 串行通信基础. 串行通信:用一根信号线将数据逐位顺序传送 串行通信的优势:通信线路少,在远距离通信时可以极大地降低成本;适合于远距离数据传送,也常用于速度要求不高的近距离数据传送 PC 系列机上有两个串行异步通信接口,键盘 / 鼠标器 / 显示器与主机间亦采用串行数据传送。. 串行通信的种类:. 串行异步通信 —— 不传送时钟信号 串行同步通信 —— 传送时钟信号 自同步:发送时将传送数据与时钟进行编码,接收时解码 单同步
E N D
6.3 串行通信接口 • 学习重点 • 异步通信协议和RS232C接口 • 8250的内部结构和编程 • 异步通信程序 1
6.3.1 串行通信基础 • 串行通信:用一根信号线将数据逐位顺序传送 • 串行通信的优势:通信线路少,在远距离通信时可以极大地降低成本;适合于远距离数据传送,也常用于速度要求不高的近距离数据传送 • PC系列机上有两个串行异步通信接口,键盘/鼠标器/显示器与主机间亦采用串行数据传送。 2
串行通信的种类: • 串行异步通信——不传送时钟信号 • 串行同步通信——传送时钟信号 • 自同步:发送时将传送数据与时钟进行编码,接收时解码 • 单同步 • 双同步 • 外同步:另用一根时钟线专门用来传送时钟信号 3
~ ~ ~ ~ 1. 同步通信——通信双方使用同一时钟 • 以数据块(帧)为传输单位 • 双方使用同一时钟(主控方提供时钟,被控方接收时钟) • 外同步:时钟信号另外安排一根传输线 • 自同步:发送时将时钟信号与数据混合编码,接收时译码出时钟 • 数据格式:每个数据块前加1~2个同步字符(同步头)进行帧同步,一般采用CRC循环冗余校验码 • 同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂 • 串行同步通信主要应用在网络当中,最常使用的同步通信协议有高级数据链路控制协议(HDLC) 同步字符 数据 数据 数据 校验 同步字符 4
2. 异步通信——通信双方使用各自的时钟 • 串行通信时的数据、控制和状态信息都使用同一根信号线传送 • 收发双方必须遵守共同的通信协议(通信规程): • 传送速率 • 信息格式 • 位同步 • 帧同步 • 数据校验 • 错误处理 • 串行异步通信以字符为单位进行传输 • 数据格式:起止式异步通信协议 5
0/1 0/1 0/1 0/1 起止式异步通信协议 • 起始位——每个字符开始传送的标志,起始位采用逻辑0电平 字符 起始位 附加位 空闲位 数据位 停止位 … 1 0 1 1 1 低位 高位 数据位——数据位紧跟着起始位传送。由5~8个二进制位组成,低位先传送 附加位——该位可用于校验或数据标识:可选择奇检验、偶校验或无校验位 停止位——表示该字符传送结束。停止位为逻辑1电平,可选择1、1.5、2位。 空闲位——传送字符之间的逻辑1电平,表示没有进行传送 6
数据传输速率 • 数据传输速率也称比特率(Bit Rate) • 每秒传输的二进制位数bps • 字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数 • 当进行二进制数码传输,且每位时间长度相等时,比特率还等于波特率(Baud Rate) • 过去,串行通信(异步)的数据传输速率限制在50 bps到9600 bps之间。 • 现在,串行通信可以达到115200 bps或更高 7
3. 数据传输方式 全双工 站A 站B 半双工 站A 站B 单工 站A 站B 8
4. 远距离传输和调制解调器 • 串行数据的远传 • 提高电平摆幅——RS232-C标准 • 采用平衡式传输——RS422/RS485 • 采用电流信号——20mA电流环 • 利用电话线和声频信号——调制/解调 • 调制(Modulating)和解调(Demodulating) • 把数字信号转换为电话线路上可传送的模拟信号 • 将电话线路上的模拟信号转换为数字信号 • 调制解调器(MODEM) • 具有调制和解调功能的联合装置 9
6.3.2 串行接口标准RS-232C • 美国电子工业协会EIA制定的通用标准串行接口 • 1962年公布,1969年修订 • 1987年1月正式改名为EIA-232D • 设计目的是用于连接调制解调器 • 现已成为数据终端设备DTE与数据通信设备DCE的标准接口 • DTE——数据终端设备,例如计算机 • DCE——数据通信设备(数传机),例如调制解调器) • 可实现远距离通信,也可近距离连接两台微机 • 属于网络层次结构中的最低层:物理层 10
1、RS-232C接口的使用场合 DTE DCE DCE DTE 电话线 RS-232C 接口 RS-232C 接口 计算机 调制解调器 调制解调器 计算机 11
2、RS-232C的引脚定义 • 232C接口标准使用一个25针连接器 • 绝大多数设备只使用其中9个信号,所以就有了9针连接器 • 232C接口信号面向使用调制解调器的串行异步通信,可支持两个通信信道: • 主信道:用于数据传送 • 次信道:次信道为辅助串行通道,主要提供通道控制,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用 12
RS-232C的引脚(1) • TxD:发送数据(终端→数传机) • 串行数据的发送端 • RxD:接收数据(终端←数传机) • 串行数据的接收端 13
RS-232C的引脚(2) • RTS:请求发送(终端→数传机) • 当数据终端设备准备好送出数据时,就发出有效的RTS信号,用于通知数据通信设备准备接收数据 • CTS:清除发送(允许发送) (终端←数传机) • 当数据通信设备已准备好接收数据终端设备的传送数据时,发出CTS有效信号来响应RTS信号 RTS和CTS是数据终端设备与数据通信设备间一对用于数据发送的联络信号 14
RS-232C的引脚(3) • DTR:数据终端准备好(终端→数传机) • 通常当数据终端设备一加电,该信号就有效,表明数据终端设备准备就绪 • DSR:数据装置准备好(终端←数传机) • 通常表示数据通信设备(即数据装置)已接通电源连到通信线路上,并处在数据传输方式 DTR和DSR也可用做数据终端设备与数据通信设备间的联络信号,例如应答数据接收 15
RS-232C的引脚(4) • GND:信号地 • 为所有的信号提供一个公共的参考电平 • CD:载波检测(DCD) (终端←数传机) • 当本地调制解调器接收到来自对方的载波信号时,该引脚向数据终端设备提供有效信号 • RI:振铃指示(终端←数传机) • 当调制解调器接收到对方的拨号信号期间,该引脚信号作为电话铃响的指示、保持有效 16
RS-232C的引脚(5) • 保护地(机壳地) • 起屏蔽保护作用的接地端,一般应参照设备的使用规定,连接到设备的外壳或大地 • TxC:发送器时钟 • 控制数据终端发送串行数据的时钟信号 • RxC:接收器时钟 • 控制数据终端接收串行数据的时钟信号 17
3、 RS-232C的连接 • 微机利用232C接口连接调制解调器,用于实现通过电话线路的远距离通信 • 微机利用232C接口直接连接进行短距离通信。这种连接不使用调制解调器,所以被称为零调制解调器(Null Modem)连接 18
4、 RS-232C的电气特性 • 232C接口采用EIA电平(负逻辑) • “0” 电平为+3V~+15V • “1”电平为-3V~-15V • 实际常用±12V或±15V 相互转换 • 标准TTL电平(正逻辑) • “1”电平:+2.4V~+5V • “0”电平:0V~0.8V 19
6.3.3 异步通信接收发送器8250 • 串行传输,需要并行到串行和串行到并行的转换,并按照传输协议发送和接收每个字符(或数据块) • 这些工作可由软件实现,也可用硬件实现 • 8250有40支引脚,采用双列直插式封装,使用+5v电源。 20
一、 8250的内部结构 • 8250实现了起止式串行异步通信协议,支持全双工通信: • 通信字符可选5、6、7、8位数据位 • 停止位可选1、1.5、2位 • 可选择奇校验、偶校验、不校验或校验位强制为“1”/“0” • 具有奇偶校验错、帧错和溢出等错错误检测电路 • 8250支持的数据传输速率为50~9600bps • 8250内部有10个可寻址的8位寄存器,分为3类:数据类,控制类,状态类。P269 21
0/1 0/1 0/1 0/1 1. 串行数据的发送 双缓冲寄存器结构,保证数据的连续发送 并行数据 CPU 发送保持寄存器 串行数据 发送移位寄存器 SOUT 同步控制 加入起始位、校验位、停止位 8250 22
0/1 0/1 0/1 0/1 3. 串行数据的接收 CPU 并行数据 接收缓冲寄存器 串行数据 接收移位寄存器 SIN 同步控制 检测接收错误,删除起始位、校验位、停止位 8250 双缓冲寄存器结构,保证数据的连续接收 23
4. 接收错误的处理 • 奇偶错误PE(Parity Error) • 若接收到的字符的“1”的个数不符合奇偶校验要求 • 帧错误FE(Frame Error) • 若接收到的字符格式不符合规定(如缺少停止位) • 溢出错误OE(Overrun Error) • 若接收移位寄存器接收到一个数据,并送至输入缓冲器时,CPU还未取走前一个数据,就会出现数据溢出 • 若接收缓冲器的级数多,则溢出错误的几率就少 24
二、 8250的引脚 D 1 40 V • 连接CPU的部分 • 连接外设的部分 • 注意:8250不是Intel公司的产品,所以该芯片引脚名称与前面学习的8253、8255等Intel产品有所不同,但是引脚功能却是类似的 0 CC D 2 39 RI 1 D 3 38 RLSD 2 D 4 37 DSR 3 D 5 36 CTS 4 D 6 35 MR 5 D 7 34 OUT 6 1 D 8 33 DTR 7 RCLK 9 32 RTS SIN 10 31 OUT 11 INTR SOUT 30 CS 12 29 NC 0 CS 13 28 A 1 0 CS 14 27 A 2 1 15 26 A BAUDOUT 2 XTAL 16 25 ADS 1 XTAL 17 24 CSOUT 2 DOSTR 18 23 DDIS DOSTR 19 22 DISTR GND 20 21 DISTR 25
1. 处理器接口引脚(1) • 数据线D0-D7:在CPU与8250之间交换信息 • 地址线A0-A2:寻址8250内部寄存器 • 片选线:包括 • 3个片选输入信号CS0、CS1、-CS2 • 1个片选输出信号CSOUT。 当3个片选输入都有效时,才选中8250芯片,同时CSOUT输出高电平有效。 • 地址选通信号-ADS:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定 26
1. 处理器接口引脚(2) • 读控制线 • 数据输入选通DISTR(高有效)和-DISTR(低有效)中一个信号有效,CPU从8250内部寄存器读出数据 • 相当于I/O读信号 • 写控制线 • 数据输出选通DOSTR(高有效)和-DOSTR(低有效)中一个有效,CPU就将数据写入8250内部寄存器 • 相当于I/O写信号 8250读写控制信号有两对,每对信号作用完全相同,只不过有效电平不同而己 27
1. 处理器接口引脚(3) • 驱动器禁止信号DDIS:CPU从8250读取数据时,DDIS引脚输出低电平,用来禁止外部收发器对系统总线的驱动;其他时间,DDIS为高电平 • 主复位线MR:硬件复位信号 • 中断请求线INTRPT:8250有4级中断、共10个中断源,当任一个未被屏蔽的中断源有请求时,INTRPT均输出高电平向CPU请求中断 28
2. 时钟信号 • 时钟输入引脚XTAL1:8250的基准工作时钟 • 时钟输出引脚XTAL2:基准时钟信号的输出端 • 波特率输出引脚-BAUDOUT:基准时钟经8250内部波特率发生器分频后产生发送时钟 • 接收时钟引脚RCLK:接收外部提供的接收时钟信号。 若采用发送时钟作为接收时钟,则只要将RCLK引脚和-BAUDOUT引脚直接相连 29
3. 串行异步接口引脚 发送数据SOUT 8250 接收数据SIN 请求发送-RTS 允许发送-CTS 数据装置准备好-DSR 9个最常 用的信号 数据终端准备好-DTR 信号地GND 载波检测-RLSD 振铃指示-RI 8250 9个信号的名称与RS232-C信号的名称稍有不同 30
4. 输出线 • -OUT1和-OUT2: • 两个可由用户定义用途的输出信号 • 由调制解调器控制寄存器的D2和D3位控制其输出 • 使用时,一般低电平有效,复位时恢复为高 31
8250的内部结构 D 数 据 接收数据 0 ~ 缓冲器 寄存器 D 7 A 0 A 1 A 2 接收移位 DISTR SIN DISTR 片 寄存器 DOSTR DOSTR 读写 内 MR 接收器 控制 XTAL RCLK 1~2 控制逻辑 DDIS 逻辑 总 CSOUT INTR 线 CS 发送控制 0 BAUDOUT CS 逻 辑 1 CS 2 ADS 发送数据 OUT 寄存器 1 OUT 2 DSR MODEM CTS RTS 控制逻辑 发送移位 DTR SOUT 寄存器 RLSD RI 32
三、 8250的寄存器 • 8250内部有9种可访问的寄存器,其中,除数寄存器是16位的,占用两个地址连续的8位端口 • 内部寄存器通过引脚A0-A2来进行寻址; • 利用通信线路控制寄存器的最高位,即除数寄存器访问位DLAB,来区别共用两个端口地址的不同寄存器(表6.4) • DLAB=1,拟访问除数寄存器的高8位及低8位 • DLAB=0,拟访问其他控制或状态寄存器 33
1. 接收缓冲寄存器RBR 存放串行接收后转换成并行的数据 CPU 接收缓冲寄存器 接收移位寄存器 SIN 同步控制 8250 34
2. 发送保持寄存器THR 包含将要串行发送的并行数据 CPU 发送保持寄存器 发送移位寄存器 SOUT 同步控制 8250 35
3. 除数寄存器 除数寄存器保存设定的分频系数 分频系数=基准时钟频率÷(16×比特率) 16 T 数据线 (SIN) 起 始 位 T 时钟 (RCLK) 8 T 16 T 36
4. 通信线路控制寄存器LCR D5 D4 D3 D2 D1 D0 D7 D6 指定串行异步通信的字符格式 寄存器选择 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位 37
5. 通信线路状态寄存器LSR D7 D6 D5 D4 D3 D2 D1 D0 提供串行异步通信的当前状态供CPU读取和处理 为1,表示发送移位寄存器空; 当数据由发送保持寄存器移入 发送移位寄存器时,该位为0 为1,表示发送保持寄存器空, 当CPU将字符写入发送保持 寄存器后,该位为0 为1,表示正在传输中止字符 为1,表示出现帧错误 为1,表示出现奇偶错 为1,表示出现溢出错 为1,表示接收数据缓冲器收到 一个数据,既接收数据准备好; 当CPU读走数据后,该位为0 38
6. 调制解调器控制寄存器MCR D4 D3 D2 D1 D0 D7 –D5 设置8250与数据通信设备之间联络应答的输出信号 为1使8250为循环工作方式 否则为正常工作方式 为1使-OUT2引脚为低 否则为高 为1使-OUT1引脚为低 否则为高 为1使-RTS引脚为低 否则为高 为1使-DTR引脚为低 否则为高 39
RLSD RI DSR CTS dRSLD dRI dDSR dCTS 7. 调制解调器状态寄存器MSR D7 D6 D5 D4 D3 D2 D1 D0 • MSR反映4个控制输入信号的当前状态及其变化 • MSR低4位中任一位置1,均将产生调制解调器状态中断,当CPU读取该寄存器或复位后,低4位被清零 高4位中某位为1,说明相应输入信号当前为低电平有效 低4位中某位为1,则说明从上次CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之 40
4级中断( 4个优先级、10个源) 优先权高 • 接收线路状态中断 • 奇偶错 • 溢出错 • 帧错 • 收到中止字符 • 接收器数据准备好中断 • 发送保持寄存器空中断 • 调制解调器状态中断 • 清除发送状态改变 • 数据终端准备好状态改变 • 振铃接通变成断开 • 接收线路信号检测状态改变 优先权低 41
8. 中断允许寄存器IER • 8250设计有4级中断和2个中断寄存器 • 4级中断指优先权的等级位4级,它是按照串行通信过程中事件的紧迫程度安排的、是固定的 • 用户可利用中断允许或禁止进行控制,中断允许寄存器的低4位控制8250这4级中断是否被允许 • 某位为1,则对应的中断被允许 • 否则,被禁止 42
9. 中断识别寄存器IIR D7-D3 D2 D1 D0 保存正在请求中断的优先权最高的中断级别编码 标识哪一级有中断 0 有中断 1 无中断 43
6.3.4 异步通信适配器——异步通信卡 • IBM PC/XT机中的串行异步通信适配器 • 以8250为核心 • 完成发送时的并转串和接收时的串转并以及相应的控制工作 • 配置了TTL电平与EIA电平间的转换电路等 • 下面展开异步通信适配器的 • 硬件电路 • 软件编程 44
异步通信适配器的初始化编程 • 对8250的内部控制寄存器进行编程写入 ⑴ 写入除数寄存器——设置传输率 ⑵ 写入通信线路控制寄存器——设置字符格式 ⑶ 写入调制解调器控制寄存器——设置工作方式 ⑷ 写入中断允许寄存器——设置中断允许或屏蔽 45
8250内部寄存器的地址 返回 46
设置传输率 mov al,80h mov dx,3fbh out dx,al ;写入通信线路控制寄存器,使DLAB=1 mov ax,96 ;分频系数:1.8432MHz÷(1200×16)=96 mov dx,3f8h out dx,al ;写入除数寄存器低8位 mov al,ah inc dx out dx,al ;写入除数寄存器高8位 写入除数寄存器 47
设置字符格式 mov al,00001010b movdx,3fbh outdx,al ;写入通信线路控制寄存器 ;这段程序同时使DLAB=0 写入通信线路控制寄存器 48
设置工作方式 • 设置查询通信方式 mov al,03h ;控制-OUT2为高, -DTR和-RTS为低 mov dx,3fch out dx,al ;写入调制解调器控制寄存器 • 设置中断通信方式 mov al,0bh ;控制为-OUT2低,允许INTRPT产生请求 mov dx,3fch outdx,al 写入调制解调器控制寄存器 49
设置中断允许或屏蔽位 moval,0 ;禁止所有中断 mov dx,3f9h outdx,al ;写入中断允许寄存器(此时DLAB=0) 写入中断允许寄存器 50