[国产单片机] 有人会一根串口线进行双向通讯吗?

[复制链接]
 楼主| haunghua 发表于 2019-8-13 16:57 | 显示全部楼层 |阅读模式
我们都知道UART串口线都是有TX和RX的,一根作为接收,一根作为发送,进行着双向通讯,但是实际应用中可能由于资源又或者为了节约线材,遇到过一根串口线进行双向通讯,当然这个双向不是一直都双向的,它是比如在看机瞬间由A-->B进行通信,只发送一条指令给B,之后就是一直是由B->A进行通讯,若是开机瞬间没有接收到由A发出来的指令,B就不能正常给A发送正确的数据,请问各位大佬,有玩过一根串口线实现双向通讯的操作码?有啥思路,跪求赐教!!!

评论

@xmar :他这个需求应该就是半双工  发表于 2019-8-15 10:59
xch
CEC  发表于 2019-8-14 11:28
TX、RX可同时进行称为全双工。TX、RX分时进行叫做半双工。翻一下通信基础资料,了解通信基本概念。用工程“行话”叙事更简单明了。  发表于 2019-8-14 09:30
抱歉,说的有点模糊,我想表达的是除了地线,只用到一根串口线的双向通讯,有哪位大神能分享下吗,主要软件,硬件怎么操作也麻烦各位大神分享下哈,一起学习下  发表于 2019-8-14 09:27
R2D2 发表于 2019-8-13 18:11 | 显示全部楼层
仿照MODBUS/485的一主多从半双工协议呗,全双工就别想了,一个232根本做不到。
R2D2 发表于 2019-8-13 18:16 | 显示全部楼层
多从的TXD要加一个二极管互相连接成“线与”形式,防止一台从机发送跟其他从机TXD发生短路。
小鱼儿1045 发表于 2019-8-13 19:21 | 显示全部楼层
能实现单工通讯,发的时候不接,接的时候不发~

评论

@haunghua :看10楼  发表于 2019-8-14 14:53
@haunghua :嗯  发表于 2019-8-14 14:50
@小鱼儿1045 :你的意思是把MCU出来的两根TX,RX线一起接在同一根线,然后这一根线就接到另一个设备,但是软件在设计时,发送时就不RX引脚关闭,接收时就把TX引脚关闭?是拉低IO口叫做关闭吧?  发表于 2019-8-14 12:21
@haunghua :软件就是发的时候关闭接,接的时候关闭发~  发表于 2019-8-14 09:51
@xma:谢谢指点,说错了~  发表于 2019-8-14 09:50
具体呢?能否分享下,软件怎么实现  发表于 2019-8-14 09:44
这个应该叫半双工。单工:总是A发、B收。  发表于 2019-8-14 09:35
masmin 发表于 2019-8-13 19:54 | 显示全部楼层
可以啊,在石油行业就有这种应用的。
R2D2 发表于 2019-8-13 20:39 | 显示全部楼层

先看下RS232的波形,可见空闲的时候,电压是-,而电压为+表示起始位,当然出现起始位以后,按事先商量好的波特率位数校验位停止位的总时间内,-也表示有效信号,当停止位时间结束后,总线为-表示空闲。

本帖子中包含更多资源

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

×
R2D2 发表于 2019-8-13 20:47 | 显示全部楼层

根据这个原理,就可以这样连线了,二极管可以防止从机的TXD互相短路,比如某从机发送信号,必然有正电压,而其他从机不说话,一定是负电压,如果不加二极管,就会短路掉。

本帖子中包含更多资源

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

×

评论

你这个图也是用到了两根线了呀,我说的是一根线  发表于 2019-8-14 09:20
hentianya7758 发表于 2019-8-13 20:49 | 显示全部楼层
有一种用定时器和一个GPIO脚来实现类似串口数据通信的,接收端通过周期采样GPIO高地电平的时长来确定接收到的每1位数据是0或者1,是开始位或者停止位
R2D2 发表于 2019-8-13 20:52 | 显示全部楼层
至于如何让只有一个从机发言,最简单的办法是通读MODBUS协议,RTU是用时间来区分不同数据帧,ASC是用ASCII码可打印字符来表达帧头帧尾。不要像半瓶子醋wh6ic那么胡思乱想,结果把自己钉在耻辱柱上面,附送耻辱柱链接。

https://bbs.21ic.com/icview-2827846-1-1.html

更好的办法是把7楼我发的图改成RS422,TXD和RXD变成差分,带载节点数量和数据线长度都可以大大的提高。
马甲的马甲 发表于 2019-8-13 21:10 | 显示全部楼层
本帖最后由 马甲的马甲 于 2019-8-13 21:14 编辑

可以用HT6221的数据波形用普通IO口模拟,早年做中央空调控制,MCU木有串口,就是这么干的。接受端口需要带中断的IO,普通的IO也可以,只是速率没法太高。当然你也可以用标准的串口;不过这都是用于短距通讯,不超过200米;

本帖子中包含更多资源

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

×
coody 发表于 2019-8-13 22:06 | 显示全部楼层
我用得很多,一条信号线和一条地线,半双工双向通信。

评论

能分享下吗?  发表于 2019-8-14 09:23
publicrtos 发表于 2019-8-13 23:39 来自手机 | 显示全部楼层
可以是可以,牺牲抗干扰性能为代价
xbyu520 发表于 2019-8-14 08:04 | 显示全部楼层
其实至少两根线,一根线不可能。(含地线)

评论

我说的比较含糊,其实我所表达的意思就是除了地线以外用一根线,有玩过吗?可以分享 下吗?  发表于 2019-8-14 09:24
newrevive 发表于 2019-8-14 09:11 | 显示全部楼层
楼主这个主要是软件协议要求,有好多现成的局域网就是单线双向,可以做成令牌模式,或者一主多从模式。
kmzhangp 发表于 2019-8-14 09:34 | 显示全部楼层
可以用美信1-wire系列产品,可以组建大网络,有各种用法,可以去了解一下
lpzailushang 发表于 2019-8-14 09:42 | 显示全部楼层
这个是可行的,要求不高是可以用的
wono01 发表于 2019-8-14 10:32 | 显示全部楼层
你要地线干嘛直接用485两根线不就结了

评论

正解,既然有地线,为何不用差分方式?抗干扰性还好。  发表于 2019-8-14 20:02
FreeSky912 发表于 2019-8-14 11:49 | 显示全部楼层
参考K线(Lin)通讯
一叶倾城wwq 发表于 2019-8-14 11:51 | 显示全部楼层
模拟收发就行了,好好规划下思路,当然如果你接的TXRX口可以省掉一个发或守,比如TX脚,你就用中断发记好了,再置为普通IO模拟接收就OK
 楼主| haunghua 发表于 2019-8-14 14:31 | 显示全部楼层
masmin 发表于 2019-8-13 19:54
可以啊,在石油行业就有这种应用的。

软件上如何控制TX,RX呢,接线又是怎样接?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

77

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部