net后缀做公司网站,推广网站模板,网站建设项目策划书格式,dedecms本地打开网站MODEM是用户接入互联网的重要设备。虽然网络干线上已经普及宽带光纤传输#xff0c;但是在拥有庞大用户群的最后一公里路段上#xff0c;目前最现实的接入方式还是铜线连接(电话线#xff0c;双绞线、电缆)。另外#xff0c;随着无线技术的发展#xff0c;采用无线接入的固…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口。这个设备主要是通信用的MODEMPC上就称为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 空号) 3V15V 逻辑1(MARK 传号) -3V-15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效接通ON状态正电压高电平 3V15V 信号无效断开OFF状态负电压低电平) -3V-15V -3V到3V之间的电平无意义称为死区不应该处于这个电压范围。3V以上-3V以下的一段区间属于过渡区尽量不要使电平落入此区间以便使判断更可靠最好在12V以上-12V以下。一般的驱动器件为-12V电压。工程上电压不可能如此理想判断需要在一定范围内进行有些半导体器件也不容易升压到-15V同时大摆幅电路速度也高不了。 以上说的是RS232电平在未经驱动的芯片引脚上是TTL电平 信号有效 二进制0 0-0.3V 信号无效 二进制1 3.3V/5V 如果不经RS232驱动芯片直接把MCU和Modem模块(TTL电平)连接需要注意电平兼容。 **************************** * (3) DB9引脚信号详细说明 * **************************** 注意硬件只提供机制而不提供策略RS232的规范由软件实现硬件只是提供标准的硬件信号线。例如载波检测由软件完成硬件只提供DCD引脚信号。硬件流控并不是说将RTS和CTS接到相应引脚位置上硬件就可以自动实现流量控制硬件流控是靠软件实现的之所以强调“硬件”二字只是因为硬件为软件提供了指示信号的硬件通路而软件流控没有使用硬件指示信号罢了。 RS232规定的是DTE和DCE设备间连接而现在大多数设备已经内嵌了CPU可以主动发送数据因此成了DTE设备DTE和DTE的连接RS232里没有规定需要使用交叉线。 有兴趣的读者可以尝试着分别剪断9根线看看会有什么现象发生。看看拨号软件将弹出什么样的错误信息。 TXD(Transmitted Data发送数据),RXD(ReceivedData接收数据)------数据传输物理通道DTE和DCE设备此引脚一一对应连接即可两个DTE设备需要交叉连接。所谓收发全是站在DTE角度说的。可以在这两个引脚对应的芯片引脚上连接LED指示灯在数据收发时会有闪烁指示。这两个信号连接芯片内部的并/串和串/并电路先处理低位硬件上不受其他硬件控制信号的影响。 GND(Ground地)----------地参考点。RS232是非平衡接法不是差分的所以抗噪性能不好收发信号需要高电压15V/-15V摆幅大速率低。此地使两端电位参考点一致避免了地回路。 DCD(Data CarrierDetect数据载波检测)----------当话音通路建立后两端Modem各自发送单频载波以便各自的对端实时检测链路通断。只要检测到载波信号DCD就有效。此信号无效时用于触发no carrier事件提供向上层传递lowerdown消息的机制使PPP复位并根据策略决定是否断线重拨。在PPP收发数据时应实时监测DCD信号只有当DCD有效时才能进行收发操作。 DTR(Data Terminal Ready数据终端准备好),DSR(Data SetReady数据设备准备好)----------虽然通过RXD和TXD就可以收发数据但是在发送数据前还是应该先确定对方是否准备好以避免不必要的数据丢失。DTR和DSR引脚用于主硬件流控。DTR有效表示DTE设备可以接收数据DSR有效表示DCE设备可以接收数据。DTE向DCE发送数据前要检测DSR信号如果无效将不会发送同样DCE向DTE发送数据前也要先检测DTR是否有效。这是RS232规范的要求。 MODEM并没有使用DTR和DSR实现通常意义上的硬件流控。DTR在整个通信期间保持有效DSR在MODEM上电后立即有效/在发出载波后有效(这取决于程序对DSR的理解是把它简单地看成电源开关指示还是看成拨号后的指示)并在整个通信过程中一直保持有效。DTR或DSR在任何时间点无效都将终止通信过程。有人可能奇怪RS232标准里明明使用这两个信号用于主硬件流控为什么MODEM却这样安排时序呢原来MODEM根本就没有按照RS232的规范将DTR和DSR用于硬件流控它只使用这两个信号指示DTE和DCE已经上电可以开始工作。当然这在某种意义上也算是流控但它确实不是RS232所指的那种MODEM是通过RTS和CTS实现的硬件流控。 DTR和DSR的这种使用方法最初是由贺氏Hayes公司在Smart Modem里最先采用的后来贺氏HayesMODEM成为行业事实上的标准其他公司参照贺氏设计的时序生产与其兼容的MODEM甚至连AT指令都一样(大家一起抄他呗)。因此现在的MODEM都不遵守RS232在这两个引脚上定义的用法了。 Data Terminal和DataSet是两个过时的名字这两个术语已经被废弃了(谁还记得数据终端和数传机啊早就成古董了兴许在博物馆还能见到实物)。RS232-D版本中起用DTE ready和DCE ready两个新名字。虽然新名字表达的意思清楚多了但可以肯定的说旧名字仍将继续使用。 RTS(Request To Send请求发送),CTS(Clear ToSend清除发送)------------半双工时用于收发模式切换。属于辅助流控信号。半双工的意思是说发的时候不收收的时候不发。那么怎么区分收发呢缺省时是DCE向DTE发送数据当DTE决定向DCE发数据时先有效RTS表示DTE希望向DCE发送一般DCE不能马上转换收发状态DTE就通过监测CTS是否有效来判断可否发送这样避免了DTE在DCE未准备好时发送所导致的数据丢失。 全双工时这两个信号一直有效即可。 以上所述是RS232标准的定义然而在MODEM中完全没有遵守这个规范而是将其用于硬件流控。很多人根据RTS和CTS的字面意思理解他们的用法往往百思不得其解再加上半双工/全双工就更加云里雾里了。RTS和CTS在MODEM中的用法与他们字面的含义没有任何关系他们已经由贺氏公司重新定义了用法。以下是网友dengm给出的程序详细说明了RTS和CTS在MODEM里的用法。RTS用于指示本端是否可以接收数据CTS指示对端是否可以接收数据。