跳至主要内容

【转】EIA-RS-232C标准

串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所以,以RS-232C为主来讨论。RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~20000b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。

  在讨论RS-232C接口标准的内容之前,先说明两点:

  首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了

  其次,RS-232C标准中所提到的"发送"和"接收",都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。

一、RS-232-C

   RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。 这里只介绍EIA�RS-232-C(简称232,RS232)。 例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

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双向电平转换,图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输出。具体连接方法如图2所示。图中的左边是微机串行接口电路中的主芯片UART,它是TTL器件,右边是EIA-RS-232C连接器,要求EIA高电压。因此,RS-232C所有的输出、输入信号都要分别经过MC1488和MC1498转换器,进行电平转换后才能送到连接器上去或从连接器上送进来。

 

2、连接器的机械特性:

  连接器:由于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所示。注意,20mA电流环信号仅IBM PC和IBM PC/XT机提供,至AT机及以后,已不支持。

 

(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。

3、RS-232C的接口信号

  RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是

  (1)联络控制信号线:

  数据装置准备好(Data set ready-DSR)――有效时(ON)状态,表明MODEM处于可以使用的状态。

  数据终端准备好(Data set ready-DTR)――有效时(ON)状态,表明数据终端可以使用。

  这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。

  请求发送(Request to send-RTS)――用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。

  允许发送(Clear to send-CTS)――用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。

  这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。在全双工系统中作发送方式和接收方式之间的切换。在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。

  接收线信号检出(Received Line detection-RLSD)――用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。

  振铃指示(Ringing-RI)――当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。

  (2)数据发送与接收线:

  发送数据(Transmitted data-TxD)――通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。

  接收数据(Received data-RxD)――通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。

  (3)地线

  有两根线SG、PG――信号地和保护地信号线,无方向。

  上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。

2个数据信号:发送TXD;接收RXD。

  1个信号地线:SG。

  6个控制信号:

  DSR��数传机(即modem)准备好,Data Set Ready.

  DTR��数据终端(DTE,即微机接口电路,如Intel8250/8251,16550)准备好,Data Terminal Ready。

  RTS��DTE请求DCE发送(Request To Send)。

  CTS��DCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。

  DCD��数据载波检出,Data Carrier Detection当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收, 并且由DCE将接收到的载波信号解调为数字信号, 经RXD线送给DTE。

  RI��振铃信号 Ringing当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通知DTE已被呼叫。

CCITT

Modem

名称

说明

用途

异步

同步

1

101

AA

保护地

设备外壳接地

PE

PE√

2

103

BA

发送数据

数据送Modem

T X D

3

104

BB

接收数据

从Modem接收数据

R X D

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

一、远距离通信

  第1和第2中情况是属于远距离通信(传输距离大于15m的通信)的例子,故一般要加调制解调器MODEM,因此使用的信号线较多。注意:在以下各图中,DTE信号为RS-232-C信号,DTE与计算机间的电平转换电路未画出。

1、采用Modem(DCE)和电话网通信时的信号连接:

  若在双方MODEM之间采用普通电话交换线进行通信,除了需要2~8号信号线外还要增加RI(22号)和DTR(20号)两个信号线进行联络,如图所示:

 

  DSR、DTR:数传机(DCE)准备好、数据终端(DTE)准备好,只表示设备本身可用。

  首先,通过电话机拔号呼叫对方,电话交换台向对方发出拔号呼叫信号,当对方DCE收到该信号后,使RI(振铃信号)有效,通知DTE,已被呼叫。当对方"摘机"后,两方建立了通信链路。

  若计算机要发送数据至对方,首先通过接口电路(DTE)发出RTS(请求发送)信号。此时,若DCE(Modem)允许传送,则向DTE回答CTS(允许发送)信号。一般可直接将RTS/CTS接高电平,即只要通信链路已建立,就可传送信号。(RTS/CTS可只用于半双工系统中作发送方式和接收方式的切换。

  当DTE获得CTS信号后,通过TXD线向DCE发出串行信号,DCE(Modem)将这些数字信号调制成模拟信号(又称载波信号),传向对方。

  计算机向DTE"数据输出寄存器"传送新的数据前,应检查Modem状态和数据输出寄存器为空。当对方的DCE收到载波信号后,向对方的DTE发出DCD信号(数据载波检出),通知其DTE准备接收,同时,将载波信号解调为数据信号,从RXD线上送给DTE,DTE通过串行接收移位寄存器对接收到的位流进行移位,当收到1个字符的全部位流后,把该字符的数据位送到数据输入寄存器,CPU可以从数据输入寄存器读取字符。

2、采用专用电话线通信:在通信双方的MODEM之间采用电话线进行通信,则只要使用2~8号信号线进行联络与控制。不需要电话机、振铃信号RI和DTR信号,其信号线的连接如图那样。

 

二、近距离通信:

  当通信距离较近时,可不需要Modem,通信双方可以直接连接,这种情况下,只需使用少数几根信号线。最简单的情况,在通信中根本不需要RS-232C的控制联络信号,只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信,即是这里要讨论的第一种情况。

  无Modem时,最大通信距离按如下方式计算:

  RS-232C标准规定:当误码率小于4%时,要求导线的电容值应小于2500PF。对于普通导线,其电容值约为170PF/M。则允许距离L=2500PF/(170PF/M)=15M

  这一距离的计算,是偏于保守的,实际应用中,当使用9600bps,普通双绞屏蔽线时,距离可达30~35米。

1、零Modem 的最简连线(3线制)

  图是零MODEM方式的最简单连接(即三线连接),图中的2号线与3号线交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请求发送RTS有效和数据终端准备好DTR有效就能开始发送和接收。

 

(1)RTS与CTS互联:只要请求发送,立即得到允许

(2)DTR与DSR互联:只要本端准备好,认为本端立即可以接收(DSR、数传机准备好)。

2、零Modem标准连接:

  如果想在直接连接时,而又考虑到RS-232C的联络控制信号,则采用零MODEM方式的标准连接方法,其通信双方信号线安排如下1-2-3-4-5顺序所演示的那样。

  无Modem的标准联线(7线制)如图所示:

  从中可以看出,RS-232C接口标准定义的所有信号线都用到了,并且是按照DTE和DCE之间信息交换协议的要求进行连接的,只不过是把DTE自己发出的信号线送过来,当作对方DCE发来的信号,因此,又把这种连接称为双叉环回接口。

  双方的握手信号关系如下(注:甲方乙方并未在图中标出):

(1)当甲方的DTE准备好,发出DTR信号,该信号直接联至乙方的RI(振铃信号)和DSR(数传机准备好)。即只要甲方准备好,乙方立即产生呼叫(RI)有效,并同时准备好(DSR)。尽管此时乙方并不存在DCE(数传机)。

(2)甲方的RTS和CTS相连,并与乙方的DCD互连。即:一旦甲方请求发送(RTS),便立即得到允许(CTS),同时,使乙方的DCD有效,即检测到载波信号。

(3)甲方的TXD与乙方的RXD相连,一发一收。

 

评论

此博客中的热门博文

【转】AMBA、AHB、APB总线简介

AMBA 简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。   AMBA 片上总线        AMBA 2.0 规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。下面将简要介绍比较重要的AHB和APB总线。 基于 AMBA 的片上系统        一个典型的基于AMBA总线的系统框图如图3所示。        大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总...

【转】GPIO编程模拟I2C入门

ARM编程:ARM普通GPIO口线模拟I2C  请教个问题: 因为需要很多EEPROM进行点对点控制,所以我现在要用ARM的GPIO模拟I2C,管脚方向我设 置的是向外的。我用网上的RW24C08的万能程序修改了一下,先进行两根线的模拟,SDA6, SCL6,但是读出来的数不对。我做了一个简单的实验,模拟SDA6,SCL6输出方波,在示波 器上看到正确方波,也就是说,我的输出控制是没问题的。 哪位大哥能指点一下,是否在接收时管脚方向要设为向内?(不过IOPIN不管什么方向都可 以读出当前状态值的阿) 附修改的RW24C08()程序: #define  SomeNOP() delay(300); /**/ /* *********************************  RW24C08   **************************************** */ /**/ /* ----------------------------------------------------------------------------- ---  调用方式:void I2CInit(void)   函数说明:私有函数,I2C专用 ------------------------------------------------------------------------------- -- */ void  I2CInit( void ) ... {  IO0CLR  =  SCL6;      // 初始状态关闭总线  SomeNOP();  // 延时   I2CStop();  // 确保初始化,此时数据线是高电平 }   /**/ /* ---------------------------------------------------------------------------- ----  调用方式:void I2CSta...

【转】cs8900网卡的移植至基于linux2.6内核的s3c2410平台

cs8900网卡的移植至基于linux2.6内核的s3c2410平台(转) 2008-03-11 20:58 硬件环境:SBC-2410X开发板(CPU:S3C2410X) 内核版本:2.6.11.1 运行环境:Debian2.6.8 交叉编译环境:gcc-3.3.4-glibc-2.3.3 第一部分 网卡CS8900A驱动程序的移植 一、从网上将Linux内核源代码下载到本机上,并将其解压: #tar jxf linux-2.6.11.1.tar.bz2 二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。 (1)指定目标平台。 移植前:         ARCH?= $(SUBARCH) 移植后: ARCH            :=arm (2)指定交叉编译器。 移植前: CROSS_COMPILE ?= 移植后: CROSS_COMPILE   :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu- 注:这里假设编译器就放在本机的那个目录下。 三、添加驱动程序源代码,这涉及到以下几个方面。(1)、从网上下载了cs8900.c和cs8900.h两个针对2.6.7的内核的驱动程序源代码,将其放在drivers/net/arm/目录下面。 #cp cs8900.c ./drivers/net/arm/ #cp cs8900.h ./drivers/net/arm/ 并在cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句: __raw_writel(0x2211d110,S3C2410_BWSCON); __raw_writel(0x1f7c,S3C2410_BANKCON3); 注:其原因在"第二部分"解释。 (2)、修改drivers/net/arm/目录下的Kconfig文件,在最后添加如...