打印

关于串口硬件控制流的疑问~头都搞晕了

[复制链接]
1700|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KC1314|  楼主 | 2017-10-12 17:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 KC1314 于 2017-10-12 17:38 编辑

关于串口硬件控制流DTR/DSR,RTS/CTS的用法,网上查了很多资料,感觉还是很混乱
对于这两对控制信号有两种理解法,存在两个问题。


分数不多,麻烦各位大神能够指点迷津,万分感谢!!!


      目标:通过串口来读取安捷伦34401A的数据。
     问题一:这RTS/CTS作用的原理是什么,有两种理解。
     问题二:RTS/CTS这组信号与DTR/DSR这组信号它们两对又是怎么配合作用的。
     问题三:“在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了,不过现在这种意义为主流意义的,各大芯片制造厂家对UART控制器的流控基本采用HAYES MODEM流控解释。“,那串口通信我到底是用RS232的标准还是贺氏的标准。
          查资料说RS232中,DTR/DSR是进行主流控的,RTS/CTS是进行半双工切换的;而贺氏标准是RTS/CTS进行硬件流控。可是我进行试验就PC与安捷伦34401A用全交叉线进行连接,串口助手上要勾选DTR数据才能接收的到。但勾不勾选RTS,都不影响数据的接收。感觉没用上RTS/CTS这对信号。
        心都搞碎了,好多东西讲的都是模棱两可,查的资料好多都是一样的。。。


针对问题一的两种理解如下。
第一种,它的作用机理。
       A要发送数据,即Request To Send “请求发送”(数据),B看到RTS有效了,决定,如果自己要做准备工作,就设置CTS无效,如果本身准备好了,就设置CTS,Clear To Send,表示对于你的Send发送(数据)来说,我已经Clear(忙清了)。所以A看到CTS有效就可以发送数据了。然后接下来的每一个从A发送到B的字节数据都是这么个过程。中间有可能遇到说,B的buffer full 缓存满了,所以要设置CTS无效,A发现后,就停止发送数据,继续检测CTS直到有效,才继续发送数据。正常数据发送完成后,A就把最开始设置为有效的RTS这个标示清除掉,即设置RTS无效,表示数据传完了。 由此,整个A发送数据到B的过程就Over了。


第二种,它的作用机理。A接收数据,B发送数据
A的RTS有效时,B的CTS检测到有效,则数据由B发给A。在数据不断的从B发给A过程中,B不断检测B的CTS是否有效,一旦B的CTS无效,则B停止向A发数据。见图2






图2.png (65.22 KB )

图2(第二种理解)

图2(第二种理解)

tu3.png (90.5 KB )

图3(第二种理解)

图3(第二种理解)

相关帖子

沙发
chunyang| | 2017-10-12 20:41 | 只看该作者
通常你把设备的RTS和CTS短接就可以了,否则需要你的系统来控制。设备应该是串口终端而非Modem类,所以执行的是RS232标准,不会是Hayes标准。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

61

帖子

4

粉丝