前段时间做的一的项目需要用到cdma模块,cdma模块通过串口与PC机或是mcu通讯,控制使用AT指令。串口通讯过程中涉及到了一些串口硬件流控制的知识。上网查了一下串口相关的知识,其中串口、RS232、UART、贺氏modem接口等概念比较纠缠不清,其中关于RTS和CTS等的定义也各不相同。在这里理顺一下,方便以后记忆。
首先要说的是RS232,也是最早出现的一个名词。在计算机还未出现时,当时的电传打印机、工控测量设备等之间需要进行通讯,这时EIA组织便制定了RS232的串口标准,当时是规定了25口的接口,也是DB25。
后来计算机出现了,RS232自然被加入到了计算机的接口中。但是DB25接插件过大,当时硬件提供商更加倾向于将计算机做的更小,成本更低,于是慢慢将DB25中未使用和支持同步的信号去掉,留下了其中的9根线,继而接插件换成了DB9。这时该接口仍然被称为RS232。下图是一个DB9的公型接插件,图中各个引脚的定义如下:
1 载波检测(DCD)
2 接受数据(RXD)
3 发出数据(TXD)
4 数据终端准备好(DTR)
5 信号地线(SG)
6 数据准备好(DSR)
7 请求发送(RTS)
8 清除发送(CTS)
9 振铃指示(RI)
以上都是在RS232标准中各脚的定义。由于现在使用真正符合的RS232的设备已经越来越少,因此其中RTS和CTS的具体用法也不说了。
后来随着串口设备的越来越多,其中更多的设备是属于非RS232标准的,即不完全符合RS232各脚定义的设备。这时候为了适应这种变化,计算机厂商便把RS232标准转换为UART标准,U即为通用的意思。原来9根线都有明确定义的RS232总线变成了即可以接受RS232标准又可以接受不符合RS232标准的串口设备了。比较常用的是仅仅用到其中三根线的通讯,即RXD、TXD、GND,这也是在我们嵌入式开发中经常遇见的三根线的UART接口,而其他的线则经常没有再被使用。
当然,在非RS232标准的设备中不仅仅只是用到3根线的设备,还有接下来要介绍的贺氏modem的协议。自从贺氏(Hayes)公司推出了聪明猫(SmartModem),他们制定的MODEM接口就成了业界标准。而项目中用到得GSM、CDMA模块就是符合这个标准的。连AT指令都与贺氏的一样。
下面说一下贺氏标准中RTS和CTS硬件流控制的作用和使用。在说到这个之前,先要提到PC中串口的电平标准(一般称为RS232电平标准)和嵌入式开发中UART的TTL电平标准。
RS232电平标准中分为正负电平,PC机一般输出+15V和-15V。而RS232规定的电平范围如下:
代表“0”,有效:+3V -- +15V
代表“1”,无效:-15V -- -3V
一般的电平需要输出在正负6V以上,这样才能更好的去除干扰。
而TTL电平标准中定义如下:
代表“0”,有效:0V -- 0.3V
代表“1”,无效:3.3V/5V
接下来是RTS和CTS的作用。在我使用的中兴公司MC8331A的CDMA模块中,其中对模块的RTS和CTS引脚定义如下:
/RTS:输出,模块允许用户(PC机或MCU)发送数据,低电平有效。
/CTS:输入,用户允许模块发送数据,低电平有效。
通过模块引脚的定义的阅读,我们其实就能很清楚的知道RTS,CTS硬件流控制时的作用了。要注意的是上面的/RTS、/CTS都是从模块的角度而言的。
对于MCU或PC机而言,RTS同样也是输出,当有效时表示PC机马上要向模块发送数据标识,“0”时有效。CTS是输入,有效时表示模块马上要向PC机发送数据了,同样“0”时有效。
通过上面分析,我们不难得出当PC机(或MCU)与CDMA模块RTS、CTS硬件流控制相连时的硬件连接图如下,即交叉相连:
要值得注意的是,如果MC8331A模块的RTS和CTS均未接出来的时候,CTS默认是低电平的,即有效状态。这样不管模块是否使用RTS、CTS硬件流控制,通讯都是能够正常完成的。这也是为什么MC8331A的出厂设置中有RTS/CTS硬件流控制,在硬件电路设计中没有把这两个脚接出来但同样也是可以进行通讯控制的原因。
阅读(12386) | 评论(0) | 转发(0) |