OpenEdv-开源电子网

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

一个串口如何复用呢?

[复制链接]

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
发表于 2016-10-4 16:04:53 | 显示全部楼层 |阅读模式
本帖最后由 givemefive 于 2016-10-4 16:32 编辑

如题,单片机只有一个串口,现在有2个串口模块需要使用,如果俩模块同时接入串口能否可行?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2015-12-13
在线时间
243 小时
发表于 2016-10-5 16:11:40 | 显示全部楼层
givemefive 发表于 2016-10-5 15:35
主机呼叫到某一个从机后,从机才能开始发送,如果主机没有呼叫从机,从机不得主动传输数据。

这个就是上面我说的第二种方法!!  但是有时候需要从机主动发送,这个得根据实际情况!不能一概而论!!!  写单片机程序最终是为了实际应用,而不是纸上谈兵!
回复 支持 1 反对 0

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
 楼主| 发表于 2016-10-4 16:17:30 | 显示全部楼层
我认为是十分可靠的,有不同意见欢迎来反驳我啊
回复 支持 反对

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
 楼主| 发表于 2016-10-4 16:56:02 | 显示全部楼层
既然没有人赞同我的说法,大家都来讨论一下啊
回复 支持 反对

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-10-4 20:10:50 | 显示全部楼层
两个模块同时来了数据你怎么处理?
回复 支持 反对

使用道具 举报

34

主题

388

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4081
金钱
4081
注册时间
2012-10-21
在线时间
642 小时
发表于 2016-10-4 22:51:16 | 显示全部楼层
具体看你两个串口模块的工作模式,如果是主机发送命令,然后指定的串口设备应答必然是可以这么用的
如果是两个都可能同时发来数据,必然是用不了的
回复 支持 反对

使用道具 举报

36

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2015-12-13
在线时间
243 小时
发表于 2016-10-4 23:50:09 | 显示全部楼层
本帖最后由 HER107 于 2016-10-4 23:52 编辑
BMN李 发表于 2016-10-4 20:10
两个模块同时来了数据你怎么处理?

这个自有办法!加上校验就解决了,可以参考其他类型的总线协议,原理差不多!具体我就懒得说了!!
回复 支持 反对

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-10-5 10:10:40 | 显示全部楼层
HER107 发表于 2016-10-4 23:50
这个自有办法!加上校验就解决了,可以参考其他类型的总线协议,原理差不多!具体我就懒得说了!!

两个模块同时来了数据,做校验,那这两段数据必然会丢失。你怎么处理?重发?还是干脆就当没发生过?
回复 支持 反对

使用道具 举报

36

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2015-12-13
在线时间
243 小时
发表于 2016-10-5 11:08:59 | 显示全部楼层
本帖最后由 HER107 于 2016-10-5 11:21 编辑
BMN李 发表于 2016-10-5 10:10
两个模块同时来了数据,做校验,那这两段数据必然会丢失。你怎么处理?重发?还是干脆就当没发生过?

仲裁,排队!!  从机发送数据前先仲裁校验,若多个从机同时发送数据或冲突,则仲裁胜出的可以和主机通信,主机发出命令让其它从机等待……
你自己做不到,不代表别人做不了……
回复 支持 反对

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-10-5 11:20:46 | 显示全部楼层
HER107 发表于 2016-10-5 11:08
仲裁,排队!!

除了校验,你还要有TCP一样完整的交互机制。
回复 支持 反对

使用道具 举报

36

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2015-12-13
在线时间
243 小时
发表于 2016-10-5 11:30:28 | 显示全部楼层
BMN李 发表于 2016-10-5 11:20
除了校验,你还要有TCP一样完整的交互机制。

冲突最多只会发生一次,仅仅在从机申请通信的时候。。申请成功后,主机让其他从机等待。。表示总线处于忙状态,通信完毕,主机再发送命令通知从机总线空闲。。。。。。

还有另一种最简单方法,就是从机无限等待,主机逐个扫描询问!!

根据自己需要而不同!
回复 支持 反对

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2016-10-5 11:48:36 | 显示全部楼层
HER107 发表于 2016-10-5 11:30
冲突最多只会发生一次,仅仅在从机申请通信的时候。。申请成功后,主机让其他从机等待。。表示总线处于忙 ...

哦。这个就看你的应用了。
回复 支持 反对

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
 楼主| 发表于 2016-10-5 15:35:01 | 显示全部楼层
HER107 发表于 2016-10-5 11:30
冲突最多只会发生一次,仅仅在从机申请通信的时候。。申请成功后,主机让其他从机等待。。表示总线处于忙 ...

主机呼叫到某一个从机后,从机才能开始发送,如果主机没有呼叫从机,从机不得主动传输数据。
回复 支持 反对

使用道具 举报

4

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2014-8-15
在线时间
101 小时
发表于 2016-10-5 20:25:33 | 显示全部楼层
可以这样用,但是两个串口模块必须是从机,不能主动发送数据。两个模块各有地址,根绝地址判断是否收到单片机的指令。
回复 支持 反对

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2016-10-7 11:24:54 | 显示全部楼层
学了这么长时间的单片机怎么还是感觉一知半解呢
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-10-9 08:41:52 | 显示全部楼层
这个管脚要处理吧,两个从机的TXD发送管脚一个出高一个出低,就存在电平冒险状态,设置成OD模式靠外部上拉估计可以行。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

头像被屏蔽

2

主题

164

帖子

1

精华

禁止访问

积分
1316
金钱
1316
注册时间
2012-5-13
在线时间
127 小时
发表于 2016-10-9 15:11:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
 楼主| 发表于 2016-10-10 09:01:12 | 显示全部楼层
DongInker 发表于 2016-10-9 08:41
这个管脚要处理吧,两个从机的TXD发送管脚一个出高一个出低,就存在电平冒险状态,设置成OD模式靠外部上拉 ...

软件上分析可行,就是硬件实现上还有点小问题,你说的这个办法应用过实际生产吗,我想借鉴一下。
回复 支持 反对

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2016-10-10 11:13:51 | 显示全部楼层
硬件上线与,软件上主从,或者自己做一个总线协议。。。。。我的一串口复用给三个设备,但是我的总线协议简单,从机不可以主动发数据,都是主机控制。。。。
30年众生牛马,60年诸佛龙象!
回复 支持 反对

使用道具 举报

6

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2016-3-13
在线时间
36 小时
 楼主| 发表于 2016-10-11 16:09:26 | 显示全部楼层
无痕幽雨 发表于 2016-10-10 11:13
硬件上线与,软件上主从,或者自己做一个总线协议。。。。。我的一串口复用给三个设备,但是我的总线协议简 ...

是用的OC门电路吗?
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-10-19 17:18:26 | 显示全部楼层
今天看到我们公司使用一个串口控制3个单片的设备,232转TTL,再后级TXD,RXD分别使用隔离,要控制多少个单片机串口就分别加入两个光耦挂载上去。
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-10-19 17:27:26 | 显示全部楼层
两个串口模块的应答方式跟MODBUS协议那种一问一答的,两个模块TXD配置成OD门,这样就不会电平竞争冒险的显现。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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