您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > RS232各种连接方式及通讯
无Modem的Rs232串口连接与通讯RS232串口通讯是最常用的,但是为什么就连接了RXD,TXD和GND三个信号,没有任何的握手信号。原来一直高不明白。在网上搜了很多关于RS232的资料,也没有找到理想的。后来就找了一篇英文的资料,自己翻译了一下,总算真正弄清楚了RS232。特此分享一下。(本文原创:百度空间——发现电子设计之美,作者Flyasiwng,转载请注明出处。)简介Rs232串口通讯是计算机领域中最古老、应用最广泛的通讯方式。Rs232标准规定了DTE和DCE之间的通讯方法,即PC与Modem这类外围设备的通讯。DTE是数据终端设备,DCE是数据通讯设备。而当今,串口通讯最主要的应用是没有Modem的DTE与DCE之间的通讯,而标准中并没对种通讯方式作出详细的规定。最初的Modem并没有执行某些握手功能。但是握手功能可以提高通讯的速度,因为这可以让计算机有能力控制信息的流动。RS232最初的应用方式观察RS232的引脚分配图,可以看到两个专门用于流控制的引脚。一个RTS,一个CTS。RTS是请求发送,从DTE输出,输入到DCE。CTS是确认发送,从DCE输出,输入到DTE。在发送数据前,DTE先将RTS设为高电平,向DCE请求数据。如果DCE不允许发送数据,将使CTS保持低电平。如果允许发送数据,则就爱能够CTS置为高电平。这是一种简单并有效的单向数据流控制机制。为了对数据流进一步的控制,通信双方都增加了向对方汇报当前自身状态的能力。为了实现这一目的,便增加了DTR和DSR信号。数据终端设备使用DTR信号告知自己已经准备好接受数据。数据通讯设备使用DSR说明自己已经准备好接受数据。这两个信号不像RTS和CTS那样,只是单向的请求与应答,它们是双向的握手信号。DTE和DCE通讯的最后一个流控制信号是CD(载波监听)。CD不直接对流进行控制,而只是表征Modem可以与对方进行通讯。这个信号表明两个Modem设备间存在通讯线路。无Modem,无握手信号的通讯如果没有Modem,怎么使用握手信号呢?那当然是不使用。这种情况下,只有数据线和信号地在两个设备间交叉互联。其他的引脚都不连接。如下图所示。最简单的RS232通讯连接方式Connector1Connector2Function23RxTx32TxRx55Signalground兼容性问题这是最简单的连接方式,但是也是万能的连接方式。但是这里存在一个问题。如果通讯双方其中有一方检测DSR和CD输入信号。这些信号定义了是否能与对方通讯。如过这两条线没有连接,它们始终为低电平,这就有问题。同样的问题也发生在了RTS和CTS上,如果DTE将RTS置为了高电平,然后等待CTS为高电平。而CTS没有连接,所以DTE会永远挂在那里。所以这种连接方式仅仅是Rx和Tx上的数据传输。但这并不意味着这种无Modem的连接方式是无用处的。像PC与电子测量设备之间的通讯就可以采用这种通讯方式。正如你想象的,这种最简单的连接方式不能进行任何形式的硬件流控制。只能通过在软件中通过XOFF和XON字符来对数据流进行控制。无Modem,带有回环(LoopBack)握手信号的连接方式前面的那种连接方式,对于一般的软件存在着问题。即,如果软件按正常的方式检测Modem的握手信号,会因为检测不到合适的握手信号而挂在那里。为了避免这种情况,同时又能使用最简单的三线的连接方式,便产生了下面这种带回环(LoopBack)的连接方式。无Modem,带回环的连接方式Connector1Connector2Function23RxTx32TxRx55Signalground1+4+6-DTRCD+DSR-1+4+6DTRCD+DSR7+8-RTSCTS-7+8RTSCTS采用这种方式的目的,主要是为了用最简单的三线通信方式时,普通的软件也能适用。兼容性问题首先考虑DSR信号,此信号表示对方已经Ready。在图中,这根线连接到了DTR。这就是说,本地的软件检测到的不是对方的Ready信号,而是本地的DTR信号。而有99%的设备的软件在天差DSR和CD信号的时候都要先将本地的DTR信号置为高电平。这样,这种连接方式对于99%的软件就都适用了。同样的技巧也应用在了CTS和RTS上。其他问题在无Modem的低成本连接方式下,大多数人建议采用这种带回环的连接方式。但是这种连接方式就真的完美无缺了吗?不是的!这种连接方式虽然可以使大多数的软件适用,但是相对与前面那种最简单的连接方式,这种方式在功能上并没有人任何提高。通讯双方都不能对数据流进行控制,也只能采用XON和XOFF字符的握手方式。因此,如果软件不知道没有硬件流控制信号,在数据传输速率超过接受方所能承受的能力时就会产生数据丢失。因此在用的时候也要十分小心。无Modem,带部分握手信号的连接以上两种连接方式虽然很有用,但是都没有提供硬件流控制。如果通讯时,硬件流控制确实需要的话,可以采用下面这种带有部分握手信号的连接方式。Nullmodemwithpartialhandshaking无Modem,带有部分握手信号的连接Connector1Connector2Function17+8RTS2CTS2+CD123RxTx32TxRx46DTRDSR55Signalground64DSRDTR7+81RTS1CTS1+CD2兼容性问题这种连接方式下,本地的RTS与CTS连接在了一起,然后与对方的CD连在了一起。这样,只有在对方检测CD信号时,RTS信号才会传递给对方。而在现在的软件中几乎都是采用这用检测CD的方式。DSR和DTR交叉互联。因此双方就可以互相告知对方本地是否Ready,如果对方Ready的话就发送数据,对方不Ready的话就停止发送。只采用RTS和CTS握手的软件不能采用这种带有部分握手信号的连接方式。而大部分软件在使用RTS和CTS的同时也会检查DSR信号,在这种情况下,这种连接方式就可以适用了。无Modem,带有完整握手信号的连接方式这种连接方式是成本最高的,它使用了七根连接线。只有振铃指示(RI)和载波监听(CD)没有连接。连接方式如下:无Modem,全握手信号连接Connector1Connector2Function23RxTx32TxRx46DTRDSR55Signalground64DSRDTR78RTSCTS87CTSRTS兼容性问题原来RTS和CTS是用来询问和回答是否可以传输数据。但在这种连接方式下,就成了纯粹告诉对方自己是否可以进行通讯。此时RTS和DTR都可以用来对数据流进行控制。总结在单片机中,就是采用的无任何握手信号的连接方式,所以才必须有起始位和停止位。在进行通讯时,如果发送方一直发送,而接受方没有足够的能力或时间进行应答,就会产生数据丢失。
本文标题:RS232各种连接方式及通讯
链接地址:https://www.777doc.com/doc-4832777 .html