RS232各种连接方式及通讯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无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,怎么使用握手信号呢?那当然是不使用。
这种情况下,只有数据线和信号地在两个设备间交叉互联。
其他的引脚都不连接。
如下图所示。
兼容性问题
这是最简单的连接方式,但是也是万能的连接方式。
但是这里存在一个问题。
如果通讯双方其中有一方检测DSR和CD输入信号。
这些信号定义了是否能与对方通讯。
如过这两条线没有连接,它们始终为低电平,这就有问题。
同样的问题也发生在了RTS和CTS上,如果DTE将RTS置为了高电平,然后等待CTS为高电平。
而CTS没有连接,所以DTE会永远挂在那里。
所以这种连接方式仅仅是Rx和Tx上的数据传输。
但这并不意味着这种无Modem的连接方式是无用处的。
像PC与电子测量设备之间的通讯就可以采用这种通讯方式。
正如你想象的,这种最简单的连接方式不能进行任何形式的硬件流控制。
只能通过在软件中通过XOFF和XON字符来对数据流进行控制。
无Modem,带有回环(Loop Back)握手信号的连接方式
前面的那种连接方式,对于一般的软件存在着问题。
即,如果软件按正常的方式检测Modem的握手信号,会因为检测不到合适的握手信号而挂在那里。
为了避免这种情况,同时又能使用最简单的三线的连接方式,便产生了下面这种带回环(Loop Back)的连接方式。
无Modem,带回环的连接方式
采用这种方式的目的,主要是为了用最简单的三线通信方式时,普通的软件也能适用。
兼容性问题
首先考虑DSR信号,此信号表示对方已经Ready。
在图中,这根线连接到了DTR。
这就是说,本地的软件检测到的不是对方的Ready信号,而是本地的DTR信号。
而有99%的设备的软件在天差DSR和CD信号的时候都要先将本地的DTR信号置为高电平。
这样,这种连接方式对于99%的软件就都适用了。
同样的技巧也应用在了CTS和RTS上。
其他问题
在无Modem的低成本连接方式下,大多数人建议采用这种带回环的连接方式。
但是这种连接方式就真的完美无缺了吗?不是的!
这种连接方式虽然可以使大多数的软件适用,但是相对与前面那种最简单的连接方式,这种方式在功能上并没有人任何提高。
通讯双方都不能对数据流进行控制,也只能采用XON和XOFF字符的握手方式。
因此,如果软件不知道没有硬件流控制信号,在数据传输速率超过接受方所能承受的能力时就会产生数据丢失。
因此在用的时候也要十分小心。
无Modem,带部分握手信号的连接
以上两种连接方式虽然很有用,但是都没有提供硬件流控制。
如果通讯时,硬件流控制确实需要的话,可以采用下面这种带有部分握手信号的连接方式。
Null modem with partial handshaking
无Modem,带有部分握手信号的连接
兼容性问题
这种连接方式下,本地的RTS与CTS连接在了一起,然后与对方的CD连在了一起。
这样,只有在对方检测CD信号时,RTS信号才会传递给对方。
而在现在的软件中几乎都是采用这用检测CD的方式。
DSR和DTR交叉互联。
因此双方就可以互相告知对方本地是否Ready,如果对方Ready的话就发送数据,对方不Ready的话就停止发送。
只采用RTS和CTS握手的软件不能采用这种带有部分握手信号的连接方式。
而大部分软件在使用RTS和CTS的同时也会检查DSR信号,在这种情况下,这种连接方式就可以适用了。
无Modem,带有完整握手信号的连接方式
这种连接方式是成本最高的,它使用了七根连接线。
只有振铃指示(RI)和载波监听(CD)没有连接。
连接方式如下:
无Modem,全握手信号连接
兼容性问题
原来RTS和CTS是用来询问和回答是否可以传输数据。
但在这种连接方式下,就成了纯粹告诉对方自己是否可以进行通讯。
此时RTS和DTR都可以用来对数据流进行控制。
总结
在单片机中,就是采用的无任何握手信号的连接方式,所以才必须有起始位和停止位。
在进行通讯时,如果发送方一直发送,而接受方没有足够的能力或时间进行应答,就会产生数据丢失。