第10章串行通信第10章串行通信10.1基本概念10.2可编程串行通信接口芯片NS825010.3可编程串行通信接口芯片8251A第10章串行通信10.1基本概念10.1.1串行通信与并行通信并行通信是指利用多根传输线将多位数据同时进行传送。1字节的数据通过8条传输线同时发送。由于并行通信方式使用的线路多,一般用在如计算机与打印机等距离短、数据量大的场合。串行通信是指利用一条传输线将数据一位一位地按顺序分时传输。当传送一字节的数据时,8位数据通过一条线分8个时间段发出,发出顺序一般是由低位到高位。第10章串行通信1.数据帧格式10.1.2异步串行通信异步传送是计算机通信中常用的串行通信方式。异步是指发送端和接收端不使用共同的时钟,也不在数据中传送同步信号。在这种方式下,收方与发方之间必须约定数据帧格式和波特率。第10章串行通信2、波特率(BaudRate)波特率是衡量串行数据传送速度的参数,是指单位时间内传送二进制数据的位数,以位/秒为单位(或bps,bit/s),也称为波特。【例题10.1】设数据帧为1位起始位、1位终止位、7位数据位、1位奇偶校验位,传送的波特率为1200(波特)。用7位数据位代表一个字符,求最高字符传送速度。解:1200(位/秒)/10(位)=120(字符)【例题10.2】设数据帧为1位起始位、2位终止位、8位数据位、1位奇偶校验位,要求每秒传送字符数大于1000字节,则波特率应大于多少波特?解:12(位/秒)×1000=12000(字符),波特率应大于12000位/秒。第10章串行通信同步传送时,无需起始位、停止位。每一帧包含较多的数据,在每一帧开始处使用1-2个同步字符以表示一帧的开始。10.1.3同步串行通信第10章串行通信1、单工2、半双工3、全双工10.1.4串行通信中的数据传送模式第10章串行通信10.1.5信号的调制和解调第10章串行通信最初RS-232C串行接口的设计目的是用于连接调制解调器。目前,RS-232C已成为数据终端设备DTE(例如计算机)与数据通信设备DCE(例如调制解调器)的标淮接口。利用RS-233C接口不仅可以实现远距离通信,也可以近距离连接两台微机或电子设备。10.1.6串行接口标准RS-232C第10章串行通信1.RS-232C的引脚定义RS-232C接口标准使用标准的25针D型连接器即DB-25。PC机已使用9针连接器取代25针连接器。第10章串行通信9针连接器引脚号25针连接器引脚号名称25针连接器引脚号名称1保护地12次信道载波检测32发送数据TxD13次信道清除发送23接收数据RxD14次信道发送数据74请求发送RTS16次信道接收数据85清除发送CTS19次信道请求发送66数据装置准备好DSR21信号质量检测57信号地GND23数据信号速率选择18载波检测CD24终端发生器时钟420数据终端准备好DTR9、10保留922振铃提示RI11未定义15发送时钟TxC18未定义17接收时钟RxC25未定义第10章串行通信TxD发送数据——串行数据的发送端。RxD接收数据——串行数据的接收端。GND信号地——为所有的信号提供一个公共的参考电平RTS请求发送——当数据终端设备准备好送出数据时,就发出有效的RTS信号,用于通知数据通信设备准备接收数据。CTS清除发送——当数据通信设备已准备好接收数据终端设备的传送数据时,发出CTS有效信号来响应RTS信号。DTR数据终端准备好——通常当数据终端设备一加电,该信号就有效,表明数据终端设备准备就绪。DSR数据装置准备好——通常表示数据通信设备(即数据装置)已接通电源连到通信线路上,并处于数据传输方式,而不是处于测试方式或断开状态。CD载波检测——当本地调制解调器接收到来自对方的载波信号时,就从该引脚向数据终端设备提供有效信号。该引脚缩写为DCD。RI振铃指示——当调制解调器接收到对方的拨号信号期间,该引脚信号作为电话铃响的指示,保持有效。第10章串行通信2.RS-232C的连接计算机由RS-232C接口连接调制解调器第10章串行通信两台微机直接利用RS-232C接口进行短距离通信第10章串行通信3.RS-232C的电气特征高电平为+3V~+15V,低电平为-3V~-15V。实际应用中常采用±12v或±15v。高电平表示逻辑0,用符号SPACE(空号)表示;低电平表示逻辑1,用符号MARK(传号)表示。由于RS-232C的EIA电平与微机的逻辑电平(TTL电平或CMOS电平)不兼容.所以两者间需要进行电平转换。MCl488(完成TTL电平到EIA电平的转换)和MCl489(完成EIA电平到TTL电平的转换)等芯片。第10章串行通信MAX232电平转换电路如图所示,能实现两路TTL电平到EIA电平、两路EIA电平到TTL电平的转换。第10章串行通信10.2通用可编程串行通信接口芯片NS825010.2.1NS8250概述1.基本功能●支持串行异步通信协议●支持全双工通信●数据位可选5~8位,停止位可选1、1.5或2位,可奇偶校验,具有奇偶、帧和溢出错误的检测。●具有带优先级排序的中断系统,有多种中断源●发送和接收均采用双缓冲器结构。●使用单一的5V电源,40脚双列直插型封装。第10章串行通信2.结构其中寄存器:THR、TSRRBR、RSRLCRLSRDLHDLLMCRMSRIERIIR第10章串行通信(1)串行数据的发送CPU送来的并行数据存在发送保持寄存器THR中。只要发送移位寄存器TSR中没有正在发送的数据,发送保持寄存器的数据就送入TSR。与此同时,8250按照编程规定的起止式字符格式,加入起始位、奇偶校验位和停止位,从串行数据输出引脚SOUT逐位输出。因为THR、TSR采用双缓冲寄存器结构,所以在TSR进行串行发送的同时,CPU可以向8250提供下一个发送数据到THR,这样可以保证数据的连续发送。第10章串行通信(2)起始位的检测必须确定起始位才能开始接收数据,即实现位同步。数据接收时钟RCLK使用16倍波特率的时钟信号。接收器用RCLK检测到串行数据输入引脚SIN由高电平变低后,连续测试8个RCLK时钟周期,若采样到的都是低电平,则确认为起始位。确认了起始位后每隔16个RCLK时钟周期对SIN输入的数据位进行采样一次,直至规定的数据格式结束。第10章串行通信(3)串行数据的接收接收移位寄存器RSR对SIN引脚输入的串行数据进行移位接收。按规定的字符格式删除起始位、奇偶校验位和停止位,把移位输入的串行数据转换成并行数据。接收完一个字符后,把数据送入接收缓冲寄存器RBR。接收数据的同时,对接收数据的正确性和接收过程进行监视。如发现奇偶校验错、帧错、溢出错或接收到中止符,则在状态寄存器中置相应位,并通过中断控制逻辑请求中断,要求CPU处理。采用RSR、RBR双缓冲结构,所以在CPU未读取RBR中的数据前,8250可以继续串行接收下一个数据。第10章串行通信(4)接收错误的处理●奇偶错误PE(ParityError)──若接收到的字符的“l”的个数不符合奇偶校验要求,则置这个标志,发出奇偶校验出错信息。●帧错误FE(FrameError)──若接收到的字符格式不符合规定(如缺少停止位),则置这个标志,发出帧错误信息。●溢出错误OE(OverError)──若接收移位寄存器接收到一个数据,在把它送至输入缓冲器时,CPU还未取走前一个数据,就会出现数据丢失,这时置溢出错误标志。第10章串行通信3.8250部分引脚说明●时钟信号:时钟信号输入引脚XTALl●串行数据输入线SIN对应RxD,用于接收串行数据。●串行数据输出线SOUT对应TxD,用于发送串行数据。●调制解调器控制线●中断请求信号线INTRPT●处理器接口引脚:D0~D7、读、写、片选、地址线A0~A2等第10章串行通信DLABA2A1A0寄存器COM1地址COM2地址0000读接收缓冲寄存器3F8H2F8H0000写发送保持寄存器3F8H2F8Hx001中断允许寄存器3F9H2F9Hx010中断识别寄存器(只读)3FAH2FAHx011通信线路控制寄存器3FBH2FBHx100调制解调器控制寄存器3FCH2FCHx101通信线路状态寄存器3FDH2FDHx110调制解调器状态寄存器3FEH2FEHx111不用3FFH2FFH1000除数寄存器低8位3F8H2F8H1001除数寄存器高8位3F9H2F9H8250的寄存器寻址第10章串行通信10.2.2寄存器详细说明1.通信线路控制寄存器LCR第10章串行通信2.通信线路状态寄存器LSR3.调制解调器控制寄存器MCR第10章串行通信MCR的D2D3位分别控制和脚的输出,可作为一般的输出信号使用。脚还具有中断控制作用,若脚输出低电平,允许8250的INTRPT发出中断请求信号,否则将屏蔽8250的中断请求信号。因此MCR的D3位可当作为8250的中断允许控制位。MCR的D4位可控制8250处于自测试工作状态。在自测试状态,引脚SOUT变为高,而SIN与系统分离,发送移位寄存器的数据回送到接收移位寄存器;4个控制输入信号(、、、)和系统分离,并在芯片内部与4个控制输出信号(、、、)相连。这样,发送的串行数据立即在内部被接收(循环反馈),故可用来检测8250发送和接收功能正确与否,而不必外连线。1OUT2OUT2OUT2OUTCTSDSRRLSDRIRTSDTR1OUT2OUT第10章串行通信在自测试状态,有关接收器和发送器的中断仍起作用,调制解调器产生的中断也起作用。但调制解调器产生中断的源不是原来的4个控制输入信号,而变成内部连接的4个控制输出信号,即MCR低4位。中断是否允许,则仍由中断允许寄存器控制,若中断是允许的,则将MCR低4位的某一位置位,产生相应的中断,好像正常工作一样。4.调制解调器状态寄存器MSR第10章串行通信5.中断允许寄存器IER第10章串行通信6.中断识别寄存器IIR第10章串行通信10.2.3PC机的串行异步通信适配器1.简介:COMl端口地址为3F8-3FFH,以IRQ4为中断请求线COM2端口地址为2F8-2FFH,以IRQ3为中断请求线基准时钟信号(XTAL):1.8432MHz第10章串行通信2.异步通信适配器的初始化编程(1)设置波特率MOVAL,80H;最高位DLAB=1MOVDX,3FBH;COM1的LCR地址为3FBHOUTDX,AL;写入LCR,使DLAB=1MOVAX,96;分频系数:1.8432MHz÷(1200×16)=96MOVDX,3F8H;DLL的地址为3F8HOUTDX,AL;写入除数寄存器低8位MOVAL,AHINCDX;DLH的地址为3F9HOUTDX,AL;写入除数寄存器高8位第10章串行通信(2)设置通信字格式──写入LCR设数据格式为1个起始位、7个数据位、1个停止位、1个奇校验。程序段如下:MOVAL,00001010B;DLAB=0MOVDX,3FBHOUTDX,AL;写LCR这段程序同时使DLAB=0,以方便后面的初始化程序。第10章串行通信(3)设置工作方式──写MCR①设置查询通信方式MOVAL,03h;控制为高,和为低MOVDX,3FCHOUTDX,AL;写入调制解调控制寄存器②设置中断通信方式MOVAL,0Bh;控制为低,允许INTRPT产生请求MOVDX,3FCHOUTDX,AL;写入调制解调控制寄存器2OUTDTRRTS2OUT第10章串行通信③设置查询的循环测试通信方式MOVAL,13H;循环测试位设置为1MOVDX,3FCHOUTDX,AL(4)设置中断允许/中断屏蔽如果不采用中断工作方式,应设置中断允许寄存器为0,禁止所有的中断请求。否则,根据需要,允许相应的中断,不使用的中断则仍屏蔽。例如:MOVAL,0;禁止所有中断MOVDX,3F9HOUTDX,AL;写入中断允许寄存器(应保证此时DLAB=0)第10章串行通信【例题1】下面的例子实现两台PC机之间的异步串行通信,从一台PC机键盘输入的字符将在对方PC机屏幕上显示