RS232串行接口总线详细介绍.doc
- 文档编号:1898402
- 上传时间:2023-05-02
- 格式:DOC
- 页数:14
- 大小:771.50KB
RS232串行接口总线详细介绍.doc
《RS232串行接口总线详细介绍.doc》由会员分享,可在线阅读,更多相关《RS232串行接口总线详细介绍.doc(14页珍藏版)》请在冰点文库上搜索。
RS232串行接口总线
目录
第一节RS232串行接口系统描述…………………………………………………3
第二节RS232串行接口拓扑结构………………………………………………3
第三节物理接口…………………………………………………………………5
3.1电气特性…………………………………………………………………………5
3.2接口信号…………………………………………………………………………6
3.3机械特性…………………………………………………………………………8
第四节电源………………………………………………………………………8
第五节RS232接口协议…………………………………………………………9
5.1数据传送格式……………………………………………………………………9
5.2流控制…………………………………………………………………………10
5.3差错检测…………………………………………………………………………10
5.4差错控制…………………………………………………………………………10
第六节 系统配置…………………………………………………………………10
6.1端口地址和中断…………………………………………………………………10
6.2串行端口寄存器…………………………………………………………………11
6.3DLAB……………………………………………………………………………14
第七节 数据流模型………………………………………………………………14
第八节 RS232串口接口设备………………………………………………………15
第一节RS232串行接口系统描述
串行接口是微型计算机与外部设备的主要通信接口之一。
只需要一条信号线就可以进行单向数据传送。
由于线路简单,价格相对较低,目前得到广泛应用。
串行通信接口标准经过使用和发展,目前已经有几种。
但都是在RS-232标准的基础上经过改进而形成的。
所以,以RS-232C为主来讨论。
RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。
它适合于数据传输速率在0~20000b/s范围内的通信。
这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。
由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。
在讨论RS-232C接口标准的内容之前,先说明两点:
首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(DataTerminalEquipment)与数据通信设备DCE(DataCommunicationEquipment)而制定的。
因此这个标准的制定,并未考虑计算机系统的应用要求。
但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。
显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。
有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。
其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。
由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
目前,PC系列微机串行接口采用异步通信方式,按照RS-232接口标准进行数据传输。
UART(UniversalAsynchronousReceiver/Transmitter)是实现数据字符的串并转换的单元。
第二节RS232串行接口拓扑结构
使用串行接口进行通信的器件可以分为两类。
一类叫做DCE(DATACOMMUNICATIONSEQUIPMENT),另外一类叫做DTE(DATATERMINALEQUIPMENT)。
DCE是类似MODEM一类的设备。
而DTE就是计算机或者是计算终端。
图2.1是典型的串行通信的拓扑结构图。
图2.1串行通信拓扑结构
尽管微机系统中存在一些单向传输的器件,如只用于发送的游戏杆和只用于接收的打印机。
但大多数的情况是全双工,双向的通信。
数据在DTE和DCE之间进行双向传输。
无MODEM结构是用来连接两个DTE设备的。
这通常作为一种较为经济的做法用于联网游戏或者在两台计算机之间使用ZMODEM协议或者XMODEM协议等进行数据传输。
这也可以用于很多微处理器开发系统。
图2.2是典型的无MODEM通信结构图。
DTE
DTE
图2.2无MODEM模式的通信结构图
LOOPBACK模式的结构在编写串口通信程序的时候使用非常方便。
它将发送和接收线连接在一起。
因此任何从串口传出的数据会立即回到同一断口的接收端。
图2.3是典型的LOOPBACK模式结构图。
DTE
图2.3LOOPBACK通信结构图
第三节物理接口
RS232的物理接口包括电气特性和机械特性两部分。
3.1电气特性
EIA-RS-232C对电气特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:
逻辑1(MARK)=-3v~-15v
逻辑0(SPACE)=+3~+15v
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3v~+15v
信号无效(断开,OFF状态,负电压)=-3v~-15v
以上规定说明了RS-323C标准对逻辑电平的定义。
对于数据(信息码):
逻辑“1”(传号)的电平低于-3v,逻辑“0”(空号)的电平高于+3v;对于控制信号;接通状态(ON)即信号有效的电平高于+3v,断开状态(OFF)即信号无效的电平低于-3v,也就是当传输电平的绝对值大于3v时,电路可以有效地检查出来,介于-3~+3v之间的电压无意义,低于-15v或高于+15v的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)v之间。
EIA-RS-232C与TTL转换:
EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。
因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。
实现这种变换的方法可用分立元件,也可用集成电路芯片。
目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。
MAX232芯片可完成TTL←→EIA双向电平转换,图3.1显示了1488和1489的内部结构和引脚。
MC1488的引脚
(2)、(4,5)、(9,10)和(12,13)接TTL输入。
引脚3、6、8、11输出端接EIA-RS-232C。
MC1498的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。
具体连接方法如图3.2所示。
图中的左边是微机串行接口电路中的主芯片UART,它是TTL器件,右边是EIA-RS-232C连接器,要求EIA高电压。
因此,RS-232C所有的输出、输入信号都要分别经过MC1488和MC1498转换器,进行电平转换后才能送到连接器上去或从连接器上送进来。
图3.1UART与连接器的连接方法
3.2接口信号
RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是:
(1)联络控制信号线:
数据装置准备好(DataSetReady-DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。
数据终端准备好(DataTerminalReady-DTR)——有效时(ON)状态,表明数据终端可以使用。
这两个信号有时连到电源上,一上电就立即有效。
这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
请求发送(Requesttosend-RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。
它用来控制MODEM是否要进入发送状态。
允许发送(Cleartosend-CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。
当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。
这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。
在全双工系统中作发送方式和接收方式之间的切换。
在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。
接收线信号检出(ReceivedLinedetection-RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。
当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。
此线也叫做数据载波检出(DataCarrierDetection-DCD)线。
振铃指示(Ringing-RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。
(2)数据发送与接收线:
发送数据(Transmitteddata-TxD)——通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。
接收数据(Receiveddata-RxD)——通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。
(3)地线
有两根线SG、PG——信号地和保护地信号线,无方向。
上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。
例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。
若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。
这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。
232引脚
CCITT
Modem
名称
说明
用途
异步
同步
1
101
AA
保护地
设备外壳接地
PE
PE√
2
103
BA
发送数据
数据送Modem
TXD
3
104
BB
接收数据
从Modem接收数据
RXD
4
105
CA
请求发送
在半双工时控制发送器的开和关
RTS
5
106
CB
允许发送
Modem允许发送
CTS
6
107
CC
数据终端准备好
Modem准备好
DSR
7
102
AB
信号地
信号公共地
SG
SG√
8
109
CF
载波信号检测
Modem正在接收另一端送来的信号
DCD
9
空
10
空
11
空
12
接收信号检测
(2)
在第二通道检测到信号
√
13
允许发送
(2)
第二通道允许发送
√
14
118
发送数据
(2)
第二通道发送数据
√
15
113
DA
发送器定时
为Modem提供发送器定时信号
√
16
119
接收数据
(2)
第二通道接收数据
√
17
115
DD
接收器定时
为接口和终端提供定时
√
18
空
19
请求发送
(2)
连接第二通道的发送器
√
20
108
CD
数据终端准备好
数据终端准备好
DTR
21
空
22
125
振铃
振铃指示
RI
23
111
CH
数据率选择
选择两个同步数据率
√
24
114
DB
发送器定时
为接口和终端提供定时
√
25
空
3.3机械特性
连接器:
由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。
下面分别介绍两种连接器。
(1)DB-25:
PC和XT机采用DB-25型连接器。
DB-25连接器定义了25根信号线,分为4组:
①异步通信的9个电压信号(含信号地SG)2,3,4,5,6,7,8,20,22
②20mA电流环信号9个(12,13,14,15,16,17,19,23,24)
③空6个(9,10,11,18,21,25)
④保护地(PE)1个,作为设备接地端(1脚)
DB-25型连接器的外形及信号线分配如图3.3所示。
注意,20mA电流环信号仅IBMPC和IBMPC/XT机提供,至AT机及以后,已不支持。
图3.2连接器外形和引脚配置
(2)DB-9连接器
在AT机及以后,不支持20mA电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。
它只提供异步通信的9个信号。
DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。
因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。
电缆长度:
在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m(50英尺)。
最大直接传输距离说明:
RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。
可见这个最大的距离是在码元畸变小于4%的前提下给出的。
为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于2500pF。
第四节电源
无
第五节RS232接口协议
串行接口的主要功能是接受来自CPU的数据,并转换为串行数据格式发送出去。
或者将接收到的串行数据,送交CPU。
图2.1示出了串行接口的结构框图。
与系统连接的数据总线不但用于传送并行数据,而且接收系统的控制字和向系统发送串行接口的状态。
系统送往串行接口的控制字包括发送和接收串行数据的波特率、二进制位串数据格式等。
系统读取的状态字包括发送空、接收完成及错误等状态,以便控制发送和接收过程。
发送数据时,CPU将发送数据送入发送缓冲寄存器。
由控制寄存器按照CPU设定的格式将并行数据转换为串行数据,加上起始位、奇偶校验位和停止位。
转换后并被格式化的二进制位串被送入移位寄存器中,按照选定的波特率发送输出。
接收数据的过程与此相反。
控制器按照设定的波特率接收串行位串数据并进行奇偶校验,去掉串行格式中的附加信息,将其转换成并行数据,送入接收缓冲寄存器。
无论发送和接收,线路的状态寄存器始终保持着接口的各种状态。
通过查询状态寄存器,就可以了解和控制发送和接收过程。
此外,串行接口还包括一个有效的中断系统,无论发送与接收,以及出现的传输错误,都可以引发系统的硬件中断。
5.1数据传送格式
串行数据通信是把并行数据转换为串行数据按顺序依次发送。
接受端再将接受到的串行数据转换成并行数据。
串行数据可按两种方式进行,即同步方式和异步方式。
同步方式适用于大批量数据通信,每次传送一组数据,在每组数据前加上一定的编制信号,使得双方保持同步。
异步数据通信每次发送一个字符,在每个字符的二进制位串前加上启动位作为接收端的同步信号,这样每发送一个字符,双方进行一次同步。
串行异步数据传输有着严格的数据格式和时序关系。
在空闲状态,线路呈现出高电平或者“1”状态。
传输时,首先发送起始位,接收端接收到起始位,即开始接收过程。
在后边的整个二进制位串传输过程中,都是以起始位作为同步时序的基准信号。
起始位以“0”表示。
紧跟其后的是数据位,根据采用的编码,数据位可能为5位到8位之间。
奇偶位可以有也可以没有。
处在最后的是停止位,停止位以“1”表示,位数可能是1位、1/2位或者2位。
传送格式中的起始位和停止位在数据传输过程中起着十分重要的作用。
通信中有两点影响着数据的正确接收。
一是数据发送是随机的,接收端必须随时准备接收数据。
另一方面,接收端和发送端不是使用同一个时钟,在通信线路的两端各自具有时钟信号源,虽然可以设定双方的时钟频率一样,但脉冲边沿也不可能一致。
脉冲周期、脉冲宽度总有误差。
开始发送时,接收端必须准确地检测到起始位的下降沿,使其内部时钟和发送端保持同步。
在对每个二进制位接收采样时,采样点应可能接近数据位中点。
为了能及时发现起始位的下降边沿,大多数接收器使用高于发送数据波特率十六倍的频率时钟信号进行采样。
这样,接收器能够在一个二进制位周期的1/16时间内检测到起始位的下降边。
对数据位周期中心采样的偏差也不会超过位周期时间的1/16。
起始位
数据字
校验位
结束位
图5.1串行异步传输格式
5.2流控制
如果DTE到DCE的速度是DCE到DCE速度几倍的话,PC就可以用115.200Kbps的速度给MODEM发送数据了。
而数据由于缓冲区的溢出早晚会丢失。
因此,我们要采用流控制。
流控制有两种:
硬件流控制和软件流控制。
软件流控制,有时表示位XON/XOFF,使用两个字符XON和XOFF。
XON常常用ASCII码17表示,而XOFF常用ASCII码19表示。
MODEM只有很小的缓冲区所以当计算机将他填满时MODEM发出一个XOFF字符告诉计算机结束发送数据。
一旦MODEM有空间供更多的数据使用,它就发XON字符,计算机就可以发送更多的数据。
这种类型的流控制有这样的优点:
它不需要额外的信号线,就像字符通过TD/RD线传送那样。
但是,在慢速的连接中,每个字节需要10位,这样会减慢通信的速度。
硬件流控制,也叫做RTS/CTS流控制。
它用我们串口电缆中的两根线而不是在数据线中传输的额外的字符来实现。
硬件流控制不会像XON/XOFF那样减慢传输速度。
当计算机希望发送数据时,激活请求输出线。
如果MODEM有所需要的空间,MODEM会通过激活允许发送线来回复,然后计算机会开始发送数据。
如果MODEM没有空间,就不会激活允许发送线。
5.3差错检测
协议定义了完善的差错检测机制,包括通过奇偶检验判定数据的正确性,帧检验判定数据的完整性。
我们可以在发送的数据中在一个字的最后一位和停止位之间加入校验位,进行数据完整性的检测。
奇偶检验可以用五种不同的校验位。
Markparitybit总是被置于逻辑1;spaceparitybit总是被置于逻辑0;偶校验位通过计算字中的位数,如果结果是偶数,就置为1;奇校验位则在结果是奇数时置为1。
后面的两种方法提供了一种检测位电平传输错误的方法。
要注意的是并不一定要使用校验位,这样就可以在每一个帧内去掉一位,常称为无校验位帧。
帧检验将由硬件自动实现,当设定了相应的帧长度之后,如果系统检测到实际帧宽度与之不符,将会给出错误标志。
5.4差错控制
RS-232通过设置接口寄存器的相应的值,接口设备会对不同的差错产生相应的中断信号。
系统可以通过相应的中断服务程序进行差错检测,但协议并没有规定相应的差错控制方法,如果要实现该功能,需要用户在客户端自己添加。
第六节系统配置
6.1端口地址和中断
Name
Address
IRQ
COM1
3F8
4
COM2
2F8
3
COM3
3E8
4
COM4
2E8
3
表6.1标准端口地址
上表是一般PC机均适用的标准端口地址。
如果你的机器恰好是带有微通道总线的IBMP/S2,那么它的地址和中断是另外一种分配。
和LPT端口一样,COM口的基址可以从BIOS的数据区读取。
StartAddress
Function
0000:
0400
COM1'sBaseAddress
0000:
0402
COM2'sBaseAddress
0000:
0404
COM3'sBaseAddress
0000:
0406
COM4'sBaseAddress
表6.2BIOS数据区的COM口地址
上表所示的是BIOS数据区的COM口地址,每个地址占2字节空间。
下面这个用C编写的范例程序,告诉我们如何从这些位置获得COM口的地址。
6.2串行端口寄存器
寄存器列表
BaseAddress
DLAB
Read/Write
Abr.
RegisterName
+0
=0
Write
-
TransmitterHoldingBuffer
=0
Read
-
ReceiverBuffer
=1
Read/Write
-
DivisorLatchLowByte
+1
=0
Read/Write
IER
InterruptEnableRegister
=1
Read/Write
-
DivisorLatchHighByte
+2
-
Read
IIR
InterruptIdentificationRegister
-
Write
FCR
FIFOControlRegister
+3
-
Read/Write
LCR
LineControlRegister
+4
-
Read/Write
MCR
ModemControlRegister
+5
-
Read
LSR
LineStatusRegister
+6
-
Read
MSR
ModemStatusRegister
+7
-
Read/Write
-
ScratchRegister
表6.3寄存器列表
(1)中断允许寄存器(IER)
中断允许寄存器可能是UART所有寄存器中最易理解的。
将BIT0设置为高,则允许接收数据中断,当CPU读取接收寄存器或FIFO中包含的数据,就会产生一个中断。
BIT1是发送存储寄存器为空中断允许位,该中断用来提示CPU发送缓冲区为空。
BIT2是接收线路状态寄存器中断允许位,当该寄存器状态变化时,UART产生一个中断。
同样的,BIT3是Modem状态中断允许位,BIT4到BIT7最为简单,因为它们是保留位。
(2)中断识别寄存器(IIR)
中断识别寄存器是只读寄存器,BIT6和BIT7指示FIFO缓冲区的状态。
当两位均为0时,没有FIFO缓冲区被激活。
对于8250或16450,只有这个状态。
如果BIT7为1,而BIT6为0,代表UART的缓冲区有效但是不能使用。
当16550UART的FIFO缓冲区出现故障,就会使得FIFO不能使用。
如果两位均为1,则代表FIFO有效而且完全可用。
BIT4和BIT5是保留位。
在16550或更高版本中,BIT3代表超时状态中断。
而BIT0代表是否有中断发生。
如果有中断发生,由BIT1和BIT2来显示它的状态。
这些中断按照优先级状态工作。
线路状态中断具有最高优先级,然后从高往低依次是数据中断、发送寄存器为空中断、Modem状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RS232 串行 接口 总线 详细 介绍
![提示](https://static.bingdoc.com/images/bang_tan.gif)