OpenEdv-开源电子网

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

串口多台从设备与一台主设备的通信问题

[复制链接]

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
发表于 2017-3-17 17:19:37 | 显示全部楼层 |阅读模式
20金钱
在主设备与从设备的串口通信过程中,我的主设备获取到了从设备的ID与数据。分别存入我定义的SB结构体中
struct SB
{
u8 data[20];
u8 id[20];
}SBInit_struct[100];
想请问下当我1台主设备与多台从设备进行串口通信的过程中,数据该如何存储。串口通信可以同时利用中断收取多组信号吗?还是说需要在每台设备增加不同的延时函数。
可以给我说说思路吗?非常感谢。实际测试的情况是单独1台从设备与主设备的通信可以获取到从设备的数据,如果多台从设备同时发数据则主设备还是只能获取到一台
从设备的数据。。。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-3-20 10:10:06 | 显示全部楼层
yklstudent 发表于 2017-3-17 18:55
一主多从,主机发送,从机应答;
给每个从机定义一个通信地址,参考MODBUS协议,或者自定义协议;
主机轮 ...

轮询读取是怎么操作,是在从机的返回函数端加延时吗?我试过给从机加延时好像还是不可以也
回复

使用道具 举报

2

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-11-16
在线时间
111 小时
发表于 2017-3-20 10:35:27 | 显示全部楼层
比如1主3从  地址可以从 00到11  如果主机要从从机读数据  就先发送地址  从机对比地址 从而响应  并用串口向主机发送数据  
主机接收完一个从机数据后  再发送下一个要读的从机的地址  这样循环着?
回复

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-3-20 10:52:19 | 显示全部楼层
wenzh3333 发表于 2017-3-20 10:35
比如1主3从  地址可以从 00到11  如果主机要从从机读数据  就先发送地址  从机对比地址 从而响应  并用串口 ...

但是我的第一步是,主机给3个从机发送广播指令FF,从机把自己的地址发给主机;主机拿着这3个地址再一个个的去问。。。这个时候主机是用一个数组来存从机的地址还是若干个数组分开来存呢?头有点晕。。。
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-3-23
在线时间
0 小时
发表于 2017-3-20 11:47:00 | 显示全部楼层
yaojunjie 发表于 2017-3-20 10:52
但是我的第一步是,主机给3个从机发送广播指令FF,从机把自己的地址发给主机;主机拿着这3个地址再一个个 ...

这种串口多机通信貌似只能用主从模式,像modbus协议,广播的话只能主机发送广播命令,但从机不能回应。你这种去查询从机地址不能让所有从机回复自己的地址,只能主机一个一个去问,然后将有回复的从机地址记录下来。
回复

使用道具 举报

11

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-9-13
在线时间
17 小时
 楼主| 发表于 2017-3-22 15:24:35 | 显示全部楼层
yongli_gong 发表于 2017-3-20 11:47
这种串口多机通信貌似只能用主从模式,像modbus协议,广播的话只能主机发送广播命令,但从机不能回应。你 ...

没太明白你的意思,可以说的稍微详细点吗?我现在用主设备发送寻址的广播指令,从设备回复自己的地址这个操作不能实现吗?
回复

使用道具 举报

2

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-11-16
在线时间
111 小时
发表于 2017-3-22 15:38:05 | 显示全部楼层
诶  既然主机要寻址   为什么不事先把地址定好呢?
主机直接按事先定好的地址通讯啊
定义一个结构体   其中一个成员是无符号整形(存放从机编号  也可以说是地址)  另一个成员是数组(用来存串口接收的数据)?
再定义结构体数组  数组元素个数就是从机的个数?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-25 03:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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