查看: 211|回复: 1
收起左侧

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

[复制链接]
     

10

主题

29

帖子

97

积分

初级技术员

 楼主| 发表于 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






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 手机登录

x
     

163

主题

3万

帖子

17万

积分

坛主

发表于 2017-10-12 20:41 | 显示全部楼层 |返回版面
通常你把设备的RTS和CTS短接就可以了,否则需要你的系统来控制。设备应该是串口终端而非Modem类,所以执行的是RS232标准,不会是Hayes标准。
有技术问题请在论坛里发帖,站内信、QQ、邮件等仅供业务或私人用途使用,不对技术问题单独解答。
欢迎访问春阳频道
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

关闭

热门推荐上一条 /5 下一条

分享 快速回复 返回顶部 返回列表