OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2610|回复: 2

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

[复制链接]

19

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-2-25
在线时间
29 小时
发表于 2017-10-12 17:37:33 | 显示全部楼层 |阅读模式
15金钱
关于串口硬件控制流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(第二种理解)

图2(第二种理解)

图3(第二种理解)

图3(第二种理解)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-10-12 18:22:52 | 显示全部楼层
流控制都是老办法了.现在都不用了.
回复

使用道具 举报

19

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-2-25
在线时间
29 小时
 楼主| 发表于 2017-10-12 18:43:02 | 显示全部楼层
操作系统 发表于 2017-10-12 18:22
流控制都是老办法了.现在都不用了.

没办法,不加控制流,表的数据就读不出来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 15:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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