1、第 11 章,第11章 串行通信接口,教学重点异步通信协议和RS232C接口8250的内部结构和编程 异步通信程序,11.1 串行通信基础,串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式 串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本 串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送 PC系列机上有两个串行异步通信接口、键盘、鼠标器与主机间采用串行数据传送,1. 异步通信,串行通信时的数据、控制和状态信息都使用同一根信号线传送 收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题
2、串行异步通信以字符为单位进行传输,其通信协议是起止式异步通信协议,起止式异步通信协议,起始位每个字符开始传送的标志,起始位采用逻辑0电平,数据位数据位紧跟着起始位传送。由58个二进制位组成,低位先传送,校验位用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位,停止位表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位,空闲位传送字符之间的逻辑1电平,表示没有进行传送,数据传输速率,数据传输速率也称比特率(Bit Rate) 每秒传输的二进制位数bps 字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数 当进行二进制数码传输,且每位时间长度相等时,比特率还等于波特率(
3、Baud Rate) 过去,串行异步通信的数据传输速率限制在50 bps到9600 bps之间。现在,可以达到115200 bps或更高,2. 同步通信,以一个数据块(帧)为传输单位,每个数据块附加1个或2个同步字符,最后以校验字符结束 同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂 串行同步通信主要应用在网络当中 最常使用高级数据链路控制协议HDLC,3. 传输制式,全双工,半双工,单工,示例,4. 调制解调器,调制(Modulating) 把数字信号转换为电话线路传送的模拟信号 解调(Demodulating) 将电话线路的模拟信号转换为数字信号 调制解调器MODEM 具有调制和
4、解调功能的器件合制在一个装置,示例,11.2 串行接口标准RS-232C,美国电子工业协会EIA制定的通用标准串行接口 1962年公布,1969年修订 1987年1月正式改名为EIA-232D 设计目的是用于连接调制解调器 现已成为数据终端设备DTE(例如计算机)与数据通信设备DCE(例如调制解调器)的标准接口 可实现远距离通信,也可近距离连接两台微机 属于网络层次结构中的最低层:物理层,11.2.1 RS-232C的引脚定义,232C接口标准使用一个25针连接器 绝大多数设备只使用其中9个信号,所以就有了9针连接器 232C包括两个信道:主信道和次信道 次信道为辅助串行通道提供数据控制和通道
5、,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用,RS-232C的引脚(1),TxD:发送数据 串行数据的发送端 RxD:接收数据 串行数据的接收端,RS-232C的引脚(2),RTS:请求发送 当数据终端设备准备好送出数据时,就发出有效的RTS信号,用于通知数据通信设备准备接收数据 CTS:清除发送(允许发送) 当数据通信设备已准备好接收数据终端设备的传送数据时,发出CTS有效信号来响应RTS信号 RTS和CTS是数据终端设备与数据通信设备间一对用于数据发送的联络信号,RS-232C的引脚(3),DTR:数据终端准备好 通常当数据终端设备一加电,该信号就有效,表明数据终端设备准
6、备就绪 DSR:数据装置准备好 通常表示数据通信设备(即数据装置)已接通电源连到通信线路上,并处在数据传输方式 DTR和DSR也可用做数据终端设备与数据通信设备间的联络信号,例如应答数据接收,RS-232C的引脚(4),GND:信号地 为所有的信号提供一个公共的参考电平 CD:载波检测(DCD) 当本地调制解调器接收到来自对方的载波信号时,该引脚向数据终端设备提供有效信号 RI:振铃指示 当调制解调器接收到对方的拨号信号期间,该引脚信号作为电话铃响的指示、保持有效,RS-232C的引脚(5),保护地(机壳地) 起屏蔽保护作用的接地端,一般应参照设备的使用规定,连接到设备的外壳或大地 TxC:发
7、送器时钟 控制数据终端发送串行数据的时钟信号 RxC:接收器时钟 控制数据终端接收串行数据的时钟信号,11.2.2 RS-232C的连接,微机利用232C接口连接调制解调器,用于实现通过电话线路的远距离通信 微机利用232C接口直接连接进行短距离通信。这种连接不使用调制解调器,所以被称为零调制解调器(Null Modem)连接,连接调制解调器,不使用联络信号的3线相连方式,为了交换信息,TxD和RxD应当交叉连接 程序中不必使RTS和DTR有效 也不应检测CTS和DSR是否有效,“伪”使用联络信号的3线相连方式,RTS和CTS各自互接,DTR和DSR各自互接 表明请求传送总是允许、数据装置总准
8、备好,使用联络信号的多线相连方式,通信比较可靠 所用连线较多,不如前者经济,11.2.3 RS-232C的电气特性,232C接口采用EIA电平 高电平为3V15V 低电平为3V15V 实际常用12V或15V,标准TTL电平 高电平:2.4V5V 低电平:0V0.4V,相互转换,11.3 通用异步接收发送器8250,串行传输,需要并行到串行和串行到并行的转换,并按照传输协议发送和接收每个字符(或数据块) 这些工作可由软件实现,也可用硬件实现 通用异步接收发送器UART是串行异步通信的接口电路芯片 IBM PC/XT机的UART芯片是INS 8250 后来使用NS16550,11.3.1 8250
9、的内部结构,8250实现了起止式串行异步通信协议,支持全双工通信 通信字符可选择数据位为58位 停止位1、1.5或2位 可进行奇偶校验 具有奇偶、帧和溢出错误检测电路 8250支持的数据传输速率为509600bps,1. 串行数据的发送,双缓冲寄存器结构 保证数据的连续发送,2. 起始位的检测,起始检测,确定已检测到起始位,采样数据,数据接收时钟频率是数据传输频率的16倍 正确识别起始位,防止因干扰引起的误识别,3. 串行数据的接收,双缓冲寄存器结构 保证数据的连续接收,4. 接收错误的处理,奇偶错误PE(Parity Error) 若接收到的字符的“1”的个数不符合奇偶校验要求 帧错误FE(
10、Frame Error) 若接收到的字符格式不符合规定(如缺少停止位) 溢出错误OE(Overrun Error) 若接收移位寄存器接收到一个数据,并送至输入缓冲器时,CPU还未取走前一个数据,就会出现数据溢出 若接收缓冲器的级数多,则溢出错误的几率就少,11.3.2 8250的引脚,分成连接CPU的部分和连接外设的部分 注意:8250不是Intel公司的产品,所以该芯片引脚名称与前面学习的8253、8255等Intel产品有所不同,但是引脚功能却是类似的,1. 处理器接口引脚(1),数据线D0D7:在CPU与8250之间交换信息 地址线A0A2:寻址8250内部寄存器 片选线:8250设计了
11、3个片选输入信号CS0、CS1、CS2*和一个片选输出信号CSOUT。3个片选输入都有效时,才选中8250芯片,同时CSOUT输出高电平有效。 地址选通信号ADS*:当该信号低有效时,锁存上述地址线和片选线的输入状态,保证读写期间的地址稳定,1. 处理器接口引脚(2),读控制线 数据输入选通DISTR(高有效)和DISTR*(低有效)有一个信号有效,CPU从8250内部寄存器读出数据 相当于I/O读信号 写控制线 数据输出选通DOSTR(高有效)和DOSTR*(低有效)有一个有效,CPU就将数据写入8250内部寄存器 相当于I/O写信号 8250读写控制信号有两对,每对信号作用完全相同,只不过
12、有效电平不同而己,1. 处理器接口引脚(3),驱动器禁止信号DDIS:CPU从8250读取数据时,DDIS引脚输出低电平,用来禁止外部收发器对系统总线的驱动;其他时间,DDIS为高电平 主复位线MR:硬件复位信号RESET 中断请求线INTRPT:8250有4级共10个中断源,当任一个未被屏蔽的中断源有请求时,INTRPT输出高电平向CPU请求中断,2. 时钟信号,时钟输入引脚XTAL1:8250的基准工作时钟 时钟输出引脚XTAL2:基准时钟信号的输出端 波特率输出引脚BAUDOUT*:基准时钟经8250内部波特率发生器分频后产生发送时钟 接收时钟引脚RCLK:接收外部提供的接收时钟信号;若
13、采用发送时钟作为接收时钟,则只要将RCLK引脚和BAUDOUT*引脚直接相连,3. 串行异步接口引脚,4. 输出线,OUT1*和OUT2*: 两个一般用途的输出信号 由调制解调器控制寄存器的D2和D3使其输出低电平有效信号 复位使其恢复为高,11.3.3 8250的寄存器,8250内部有9种可访问的寄存器,除数寄存器是16位的,占用两个连续的8位端口 内部寄存器用引脚A0A2来寻址;同时还要利用通信线路控制寄存器的最高位,即除数寄存器访问位DLAB,来区别共用两个端口地址的不同寄存器(表11.3),1. 接收缓冲寄存器RBR,存放串行接收后转换成并行的数据,2. 发送保持寄存器THR,包含将要
14、串行发送的并行数据,3. 除数寄存器,除数寄存器保存设定的分频系数 分频系数基准时钟频率(16比特率),4. 通信线路控制寄存器LCR,指定串行异步通信的字符格式,5. 通信线路状态寄存器LSR,提供串行异步通信的当前状态 供CPU读取和处理,6. 调制解调器控制寄存器MCR,设置8250与数据通信设备之间 联络应答的输出信号,7. 调制解调器状态寄存器MSR,反映4个控制输入信号的当前状态及其变化 MSR高4位中某位为1,说明相应输入信号当前为低有效,否则为高电平 MSR低4位中某位为1,则说明从上次CPU读取该状态字后,相应输入信号已发生改变,从高变低或反之 MCR低4位任一位置1,均产生
15、调制解调器状态中断,当CPU读取该寄存器或复位后,低4位被清零,4级中断,接收线路状态中断 奇偶错、溢出错、帧错和中止字符 接收器数据准备好中断 发送保持寄存器空中断 调制解调器状态中断 清除发送状态改变 数据终端准备好状态改变 振铃接通变成断开 接收线路信号检测状态改变,优先权高,优先权高,优先权低,8. 中断允许寄存器IER,8250设计有2个中断寄存器和4级中断 4级中断的优先权,是按照串行通信过程中事件的紧迫程度安排的、是固定不变的 用户可利用中断允许或禁止进行控制 中断允许寄存器的低4位控制8250这4级中断是否被允许 某位为1,则对应的中断被允许 否则,被禁止,9. 中断识别IIR
16、,保存正在请求中断的优先权最高 的中断级别编码,11.4 异步通信适配器,IBM PC/XT机的串行异步通信适配器 以8250为核心 完成发送时的并转串和接收时的串转并以及相应的控制工作 配置了TTL电平与EIA电平转换电路等 展开异步通信适配器的 硬件电路 软件编程,11.4.1 异步通信适配器的接口电路,注意:J9J11跨接器 和OUT2*的作用,11.4.2 异步通信适配器的初始化编程,对8250的内部控制寄存器进行编程写入 写入除数寄存器 设置传输率 写入通信线路控制寄存器 设置字符格式 写入调制解调器控制寄存器 设置工作方式 写入中断允许寄存器 设置中断允许或屏蔽位,设置传输率,mo
17、v al,80hmov dx,3fbhout dx,al;写入通信线路控制寄存器,使DLAB1mov ax,96;分频系数:1.8432MHz(120016)9660Hmov dx,3f8hout dx,al ;写入除数寄存器低8位mov al,ahinc dxout dx,al ;写入除数寄存器高8位,写入除数寄存器,设置字符格式,mov al,00001010bmov dx,3fbhout dx,al ;写入通信线路控制寄存器;这段程序同时使DLAB0,写入通信线路控制寄存器,设置工作方式,设置查询通信方式mov al,03h;控制OUT2*为高,DTR*和RTS*为低mov dx,3fc
18、hout dx,al ;写入调制解调器控制寄存器 设置中断通信方式mov al,0bh;控制为OUT2*低,允许INTRPT产生请求mov dx,3fchout dx,al,写入调制解调器控制寄存器,设置中断允许或屏蔽位,mov al,0 ;禁止所有中断mov dx,3f9hout dx,al;写入中断允许寄存器(此时DLAB0),写入中断允许寄存器,11.4.3 异步通信程序,程序循环读取8250的通信状态寄存器 数据传输错误就显示一个问号“?” 接收到数据就显示出来 可以发送数据就从键盘输入发送字符(用户没有输入字符就不发送) 如果按下ESC键返回DOS,查询通信线路状态,statue:
19、mov dx,2fdh;读通信线路状态寄存器in al,dxtest al,1eh ;接收有错误否?jnz error ;有错,则转错误处理test al,01h ;接收到数据吗?jnz receive ;是,转接收处理test al,20h ;保持寄存器空吗?jz statue ;不能,循环查询,异步通信程序,检测键盘输入,mov ah,0bh ;检测键盘有无输入字符int 21hcmp al,0jz statue ;无输入字符,循环等待mov ah,0 ;有输入字符,读取字符int 16h;采用01号DOS功能调用,则有回显cmp al,1bhjz done ;是ESC键,程序返回DOS,
20、异步通信程序,发送数据,mov dx,2f8h;将字符输出给发送保持寄存器out dx,al ;串行发送数据jmp statue ;继续查询,异步通信程序,接收数据,receive: mov dx,2f8h;从输入缓冲寄存器读取字符in al,dxand al,7fh;传送标准ASCII码(7个数据位);所以仅取低7位push ax ;保存数据,异步通信程序,显示数据,mov dl,al ;屏幕显示该数据mov ah,2int 21hpop ax ;恢复数据cmp al,0dh ;数据是回车符吗?jnz statue ;不是,则循环mov dl,0ah ;是,再进行换行mov ah,2int
21、21hjmp statue ;继续查询,异步通信程序,接收错误处理,error: mov dx,2f8h;读出接收有误的数据,丢掉in al,dxmov dl,? ;显示问号mov ah,2int 21hjmp statue ;继续查询,异步通信程序,11.4.4 中断通信方式的编程方法,关键 解决主程序与中断服务程序的数据传递 注意 处理好8250的4级10种中断源 简便方法 只允许接收数据准备好中断,中断通信方式的循环队列,第11章教学要求,1. 掌握起止式通信协议、RS-232C引脚定义和连接 2. 理解串行数据的发送、起始位检测、数据接受和错误标志 3. 了解8250的引脚和内部寄存器功能及其在IBM PC系列机上的应用情况 4. 掌握异步通信适配器的初始化编程和通信程序,第11章教学要求(续),习题11(第271页)11.2 11.5 11.7 11.8,传输制式,调制与解调,自测试循环工作方式,8250,数据终端准备好DTR*,数据装置准备好DSR*,发送数据SOUT,接收数据SIN,请求发送RTS*,允许发送CTS*,输出OUT2,载波检测RLSD*,振铃指示RI*,输出OUT1,4个控制输入信号和系统分离,并在芯片内部与4个控制输出信号相连 发送的串行数据立即在内部被接收 可用来检测8250发送和接收功能正确与否,而不必外连线,