串口与modem流量控制大全(1)

MODEM是用户接入互联网的重要设备。虽然网络干线上已经普及宽带光纤传输,但是在拥有庞大用户群的最后一公里路段上,目前最现实的接入方式还是铜线连接(电话线,双绞线、电缆)。另外,随着无线技术的发展,采用无线接入的固定/移动用户也越来越多。不论是铜线连接还是无线接入,都要采用调制解调器,以便使数据信号能够在信道内传输。
 
   MODEM的对外接口是串口,这个串行I/O口用于传输控制信号、状态信号、数据、AT指令及其响应。虽然MODEM种类繁多(56K猫/GPRS/CDMA等),但对外都表现为一个标准的串口,只要将这个串口了解清楚,那么就可以将所有的MODEM一网打尽。
   
    *************
    * (1) UART   *
    *************
    一般地,我们把这个串口叫作UART(Universal Asynchronous Receiver and Transmitter通用异步收发器)。
    其中,RT是接收和发送的英文缩写,能收能发又是串口,说白了就是串行I/O口的意思。
    A表示异步模式。这种模式的优点是适应性强,对时钟精度要求低(成本低)。每次发送字节数据前都首先发送一个开始位同步时钟相位,抖动误差不会在整个通信过程中累积,只影响单个字节的传输单元。
    U的意思是通用。为什么一定要冠以“通用”二字,这个定语到底想强调什么呢?
    话说很早以前,还没有出现计算机的时候,就已经出现了串口设备。例如:MODEM、电传打字机、工控设备、数传机等等。为了方便设备互连,EIA制定了RS232标准化规范,采用DB25接口连接DTE(Data Terminal Equipment数据终端设备)和DCE(DataCommunicationsEquipment数据通信设备)。后来,出现了个人计算机(PC机),这些已有的设备毫无疑问地成了最初的外设,为了将其接入主机,制造商们自然地选择了标准的RS232串口。在这个标准中,DB25接口支持同步和异步两种工作模式,采用D型接插件,防止插反。这种设计兼容性好,使用方便,但是制造商们并不买帐,他们更倾向于进一步减少接插件的大小和成本。通过删除DB25中未使用的引脚和支持同步模式的引脚,将DB25改造成只有9根线,只支持异步模式,体积更小,成本更低的DB9。最初的状况比较混乱,因为DB9只给出了信号范围,但没有指出引脚和信号的对应关系,而且DB9也不是RS232规范所定义的接口标准,因此各个制造商只能自行定义对应关系。后来,IBM制造的PC机成了行业标准,DB9的对应关系就逐渐统一到了IBM的定义上,现如今使用的DB9就是遵守的IBM的定义。随着时代的发展,计算机越来越普及,外设的种类也越来越多,有些非RS232的串行设备需要接入主机,这就要求主机提供更多的I/O口。如果为每一种新出现的设备都提供一个I/O,显然是不现实的,因为主机后面板位置有限,不可能容纳太多的接口。幸运的是,外部I/O口大体上主要分为两类:并口和串口。如果复用已有的RS232串口接入非RS232的设备,那么就可以用有限的接口,接入大量的设备。一个有趣的现象是,早期的操作系统DOS和ROMBIOS提供的通信例程只支持RS232串口标准,即使是实现简单的字节收发这种非RS232应用,竟然也要先检测DSR、DCD、CTS等信号是否有效,如果不满足条件,将不会发送数据到TXD上。解决这个问题的方法有两种:1、旁路系统提供的API函数,自己直接操纵硬件实现非RS232的操作;2、短接接头里某些RS232控制信号线,使系统通信例程误以为是RS232设备,使非RS232的设备满足RS232规范的子集要求。
    现在,PC机上的串口既支持RS232应用又支持非RS232应用,通用串口指的就是这个意思。RS232规范对速度和距离都有约束,在码元畸变小于4%的条件下,传输距离上限是15米;速率上限是19200。目前,在PC机上的串口都突破了RS232标准的限制,速度可以达到115200甚至更高。软件上,已经可以选项配置是否支持硬件流控,是否检查DSR、DCD、RI等输入信号。可以说,现在的PC串口,来源于RS232,但又不拘泥于它的限制,越来越向通用目的的串口方向发展。UART到此可以总结为:用于通用目的的异步串行I/O口。
    综上,可以看出计算机串口发展的大致历程:
    (个 人计算机)史前出现原始的串口设备 --> EIA制定RS232统一标准,DB25出现--> 个人计算机诞生,为引入串口,DB9出现,软硬件仍然遵循RS232标准-->为引入新的非RS232串口,将原来的RS232口改造成通用目的的UART,软硬件可以不遵循RS232规范。
   
    PC机串口拥有多个名字:串口、RS232口、COM口(通信口)、异步口、UART等,他们是不同历史时期的产物,一直沿用至今,让现在的人们感觉有些莫名其妙。最开始PC机接入的串行外设是RS232设备,就叫RS232口。这个设备主要是通信用的MODEM,PC上就称为COM口。现在连非RS232设备也接了进来,就叫UART吧。不过新名字没有老名字有名,有些人的习惯改不过来,再说计算机发展太快,老名字还没消失,新名字就出现了,而且各有各的拥趸,约定俗成,那就这么乱着叫吧。
   
    就在UART准备一统江湖的时候,制造商们再一次不满于它的速度、灵活性(软件可配置)和体积,推出了USB串口和1394串口。现在越来越多的笔记本电脑上已经取消了UART串口,因此有不少网友发出“没有串口,吾谁与归”的慨叹,历史前进的脚步无法阻挡,古今多少事,都付笑谈中,USB取代UART是后话,暂且不表。
   
    *************************
    * (2) DB9引脚定义和表示 *
    *************************
    DB9遵循IBM定义,所有输入输出方向都是站在DTE角度说的。
    1--载波检测DCD    2--接收数据RXD    3--发送数据TXD    4--数据终端就绪DTR    5--信号地GND
    6--数据设备就绪DSR    7--请求发送RTS    8--清除发送CTS    9--振铃指示RI
   
    在TXD和RXD上:(一般,驱动器件都是反相器,用负表示"1",用正表示"0",采用负逻辑,完全可以理解。)
                    逻辑0(SPACE 空号) = +3V~+15V
                    逻辑1(MARK 传号)   = -3V~-15V
                   
    在RTS、CTS、DSR、DTR和DCD等控制线上:
                    信号有效(接通,ON状态,正电压,高电平)= +3V~+15V
                    信号无效(断开,OFF状态,负电压,低电平) = -3V~-15V

    -3V到+3V之间的电平无意义,称为死区,不应该处于这个电压范围。+3V以上,-3V以下的一段区间属于过渡区,尽量不要使电平落入此区间,以便使判断更可靠,最好在+12V以上,-12V以下。一般的驱动器件为+-12V电压。工程上,电压不可能如此理想,判断需要在一定范围内进行,有些半导体器件也不容易升压到+-15V,同时,大摆幅电路速度也高不了。
   
    以上说的是RS232电平,在未经驱动的芯片引脚上是TTL电平:
         

你可能感兴趣的:(UART)