搜索
bottom↓
回复: 66

1个ST-MCU 与 64个ST-MCU如何通讯?

  [复制链接]

出0入0汤圆

发表于 2019-10-23 09:09:19 | 显示全部楼层 |阅读模式
求助:
1个ST-MCU(主) 与 64个ST-MCU(副)如何通讯?

如果是通过IIC进行通讯,IIC总线能同时挂65个MCU吗?

如果采用UART进行通讯,问题在于,64个副ST-MCU出现同时发数据给个主ST-MCU时,MCU没法区别,这个在硬件上什么方式?

成本考虑,希望在IIC 和 UART上做二选一选择,希望各路告诉出招指点,谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-10-23 09:11:22 | 显示全部楼层
CAN                           

出0入0汤圆

发表于 2019-10-23 09:14:36 | 显示全部楼层
RS485            

出0入16汤圆

发表于 2019-10-23 09:15:21 | 显示全部楼层
485+MODBUS

出0入0汤圆

发表于 2019-10-23 09:16:41 | 显示全部楼层
副mcu不能同时发送数据吧,
副mcu设置地址,由主mcu发送寻址指令,相应的副mcu再发数据,轮询方式最好!

或者副mcu设置地址, 设定 发送数据间隔, 把通讯周期分65份, 1份主mcu发送, 64份分配给副mcu, 主mcu负责接收

出0入0汤圆

发表于 2019-10-23 09:18:44 | 显示全部楼层
楼主是学生吗?

这么多mcu用在什么场合啊?

主从式的话,485比较合适。CAN也可以,就是价格稍高。

出0入0汤圆

发表于 2019-10-23 09:21:06 | 显示全部楼层
RS485最简单了,分机不要主动传数据吧,分机设好地址,主机挨个轮询分机是否需要传数据

出0入13汤圆

发表于 2019-10-23 09:22:21 | 显示全部楼层
485 是比较经济的方案,别说64个,200多个都没问题

出0入0汤圆

发表于 2019-10-23 09:23:15 | 显示全部楼层
距离不远,CAN+1,仲裁机制真香

出0入0汤圆

 楼主| 发表于 2019-10-23 09:33:03 | 显示全部楼层
xiaomu 发表于 2019-10-23 09:16
副mcu不能同时发送数据吧,
副mcu设置地址,由主mcu发送寻址指令,相应的副mcu再发数据,轮询方式最好!

目前产品就是轮询方式,也正因为7*24小时不间断轮询,出现了读取错误,导致判断错误。

所以,希望当副MCU有变动时,能主动发数据给主机。但如解决两个以上MCU同时发数据给主MCU时的情况。

出10入113汤圆

发表于 2019-10-23 09:34:38 | 显示全部楼层
通讯不说距离,电源不说电流。。。

出0入0汤圆

 楼主| 发表于 2019-10-23 09:35:53 | 显示全部楼层
shenwrt 发表于 2019-10-23 09:21
RS485最简单了,分机不要主动传数据吧,分机设好地址,主机挨个轮询分机是否需要传数据 ...

这机器7*24小时工作,一直轮询很容易出问题。(采用UART)

所以,现在希望能换一直通讯方式,考虑用IIC,但同时连接65个MCU,不知道IIC能不能搞定。

出0入0汤圆

 楼主| 发表于 2019-10-23 09:38:14 | 显示全部楼层
饭桶 发表于 2019-10-23 09:34
通讯不说距离,电源不说电流。。。

距离 和 电源 ,都不是主要考虑的,点对点不到1米,电源都是3.3V

出0入362汤圆

发表于 2019-10-23 09:38:32 | 显示全部楼层
数据量大么? 不大的话i2c应该是可以的, 用uart也是用类似i2c的方式, 从机发送端用开漏上拉, 线与. 协议只能是响应式的, 主机不发, 从机不能主动回应. 程序上用uart还简单一点.

出0入0汤圆

 楼主| 发表于 2019-10-23 09:39:18 | 显示全部楼层
jswd0810 发表于 2019-10-23 09:35
你这是多主机就不能用串口方式了

是用485,还是CAN? 或者I2C?

出0入0汤圆

 楼主| 发表于 2019-10-23 09:41:20 | 显示全部楼层

我对MODBUS,能推荐一个芯片型号吗?我通过这芯片学习一下。

出0入0汤圆

发表于 2019-10-23 09:41:45 | 显示全部楼层
CAN    距离远的话中间CAN转光纤

出0入0汤圆

 楼主| 发表于 2019-10-23 09:43:27 | 显示全部楼层
tomzbj 发表于 2019-10-23 09:38
数据量大么? 不大的话i2c应该是可以的, 用uart也是用类似i2c的方式, 从机发送端用开漏上拉, 线与. 协议只能 ...

数据量并不大,16个MCU用IIC通讯我使用,但65个MCU都用IIC通讯,有些担心了。

出0入0汤圆

发表于 2019-10-23 09:43:39 | 显示全部楼层
Leo-w 发表于 2019-10-23 09:35
这机器7*24小时工作,一直轮询很容易出问题。(采用UART)

所以,现在希望能换一直通讯方式,考虑用IIC ...

一直轮询能出什么问题,校验做好就行。
印象中iic最多能接127个吧

出0入0汤圆

发表于 2019-10-23 09:46:49 | 显示全部楼层
24小时不间断的读,出现读取错误很正常。通过校验机制能够辨别抛弃错误数据就好,然后再补发一帧数据。

出0入0汤圆

 楼主| 发表于 2019-10-23 09:52:04 | 显示全部楼层
shenwrt 发表于 2019-10-23 09:43
一直轮询能出什么问题,校验做好就行。
印象中iic最多能接127个吧


我这个是读取卡片的信息,校验没有,或者有误,主机会认为没有卡片,那就麻烦了。

I2C能接127个,那太好,我一直查这方面的信息,但没有找到。

出0入0汤圆

发表于 2019-10-23 10:04:56 | 显示全部楼层
单线UART收发+主从模式

出0入16汤圆

发表于 2019-10-23 10:09:22 | 显示全部楼层
Leo-w 发表于 2019-10-23 09:41
我对MODBUS,能推荐一个芯片型号吗?我通过这芯片学习一下。

MODBUS是通讯协议,自己移植的,不关任何芯片的事。你如果希望从机也主动发数据的话,MODBUS也不适合。

出0入0汤圆

发表于 2019-10-23 10:10:59 | 显示全部楼层
UART采用7位模式

出0入0汤圆

 楼主| 发表于 2019-10-23 10:17:22 | 显示全部楼层
howmoney 发表于 2019-10-23 10:09
MODBUS是通讯协议,自己移植的,不关任何芯片的事。你如果希望从机也主动发数据的话,MODBUS也不适合。 ...

那就是也不合适,我希望从机也能主动发数据。

出5入8汤圆

发表于 2019-10-23 10:18:32 | 显示全部楼层

好方法  

出10入0汤圆

发表于 2019-10-23 10:25:41 来自手机 | 显示全部楼层
距离不远的话,我觉得是I2C比较合适,轮循就可以,I2C有ack应答,短距离很可靠的。长距离就485或CAN。

出0入4汤圆

发表于 2019-10-23 10:27:07 | 显示全部楼层
推荐485+MODBUS的人,轮训一遍时间算下

出0入0汤圆

发表于 2019-10-23 10:29:14 | 显示全部楼层
点对点1米的话,也有60多米了,IIC估计会死的很难看,IIC只见过板内通讯的,没见过用IIC拉出几十米当总线用的

出0入0汤圆

发表于 2019-10-23 10:36:00 | 显示全部楼层
老实上485

出0入0汤圆

 楼主| 发表于 2019-10-23 10:36:08 | 显示全部楼层
tuy0326 发表于 2019-10-23 10:29
点对点1米的话,也有60多米了,IIC估计会死的很难看,IIC只见过板内通讯的,没见过用IIC拉出几十米当总线用 ...

我没有表达准确,点对点最远距离1米。

出0入0汤圆

 楼主| 发表于 2019-10-23 10:40:57 | 显示全部楼层
carefree1986 发表于 2019-10-23 10:27
推荐485+MODBUS的人,轮训一遍时间算下

现在用的是UART轮询,可能是7*24工作模式,只有出现一次读取错误,都是麻烦事件。

485 CAN都是可以实现我想要的功能,只是想着增加了成本,所以这几天在想有没有更好的办法。

出0入42汤圆

发表于 2019-10-23 11:06:49 | 显示全部楼层
搭车就想问问   压力表展会上看到   A-BUS   H-BUS  也号称总线   是个什么鬼!    貌似还是分立元器件搭的   

出0入0汤圆

发表于 2019-10-23 11:34:12 | 显示全部楼层
485 最简单便宜      

出0入0汤圆

发表于 2019-10-23 11:38:03 | 显示全部楼层
can吧, 灵活一点

出0入4汤圆

发表于 2019-10-23 11:45:51 | 显示全部楼层
可以不用485或者CAN,每个单片机的TX、RX用两三个三极管转换驱动一下,挂在总线上就行了。一米的通讯距离,如果要不是挂接的接口多,IO口直接相互互连都可以。
主要考虑的不是用什么物理总线或什么协议,应该考虑你原先的通讯机制冗错和纠错做了没?比如校验、超时、重发、握手、仲裁等,通讯不可能保证100%都是一次成功的。
你的通讯速率是多少,速率太高对硬件也有要求,考虑分布电容对波形产生的畸变。

出0入0汤圆

发表于 2019-10-23 11:50:52 | 显示全部楼层
can           

出0入0汤圆

发表于 2019-10-23 11:56:20 | 显示全部楼层
串口加上地址呀,可以看看modebus,自己定义一个协议

出0入10汤圆

发表于 2019-10-23 12:11:44 | 显示全部楼层
普通工况下1米的距离 IIC 和 UART都是可以的,你的问题应该主要是通讯协议的问题,需要在软件上好好下功夫,做好校验及诊断,建议主从模式,总线预留出空闲时间片给从机主动发信息,从机主动发的时候要检测总线是否在空闲时间片内。
另外,成熟的总线和标准协议都经过了大量的验证,可靠性是保证的,成本允许条件下上CAN或者485是最省事的方案了。

出0入0汤圆

 楼主| 发表于 2019-10-23 12:15:45 | 显示全部楼层
xymxym 发表于 2019-10-23 11:45
可以不用485或者CAN,每个单片机的TX、RX用两三个三极管转换驱动一下,挂在总线上就行了。一米的通讯距离, ...

谢谢,驱动能力应该加强些。

出0入34汤圆

发表于 2019-10-23 12:31:14 | 显示全部楼层
Leo-w 发表于 2019-10-23 10:36
我没有表达准确,点对点最远距离1米。

点对点最远距离才1米?用直接 TTL-UART 就行啦!我还以为多远哩?正想推荐使用量子通讯说!...

出0入4汤圆

发表于 2019-10-23 12:51:34 | 显示全部楼层
感觉LZ应该优化一下协议
485肯定是可以的,TTL-UART也可以

出0入0汤圆

发表于 2019-10-23 13:35:06 | 显示全部楼层
这个距离物理上用485或TTL足够,如果从机并发度不是很高,可采用事件上报+主机读取的方式传送数据。

出0入0汤圆

发表于 2019-10-23 13:45:55 | 显示全部楼层
can最优解

出5入10汤圆

发表于 2019-10-23 13:55:29 | 显示全部楼层
howmoney 发表于 2019-10-23 10:09
MODBUS是通讯协议,自己移植的,不关任何芯片的事。你如果希望从机也主动发数据的话,MODBUS也不适合。 ...

modbus的通信协议库在哪里可以下载到

出0入0汤圆

发表于 2019-10-23 14:56:18 | 显示全部楼层
楼主头像中的高跟鞋是自己的吗?

出0入0汤圆

发表于 2019-10-23 15:28:07 | 显示全部楼层
1. 距离比较短,速率不高的话 ttl应该问题不大,可以看波形确保信号完整性 2.从设备串口io建议配置成 open drain 类似于 i2c 总线的状态,避免负载过重,然后搞个上拉电阻 放到总线最后 用于调整信号完整性  3.任何传输 物理层 都可能传输错误, 再信号质量可接受的情况下,我觉得楼主应该把重心放在 数据包的校验 重传 等机制,确保数据可靠传输 才是真的。 4,真要从设备主动传输 那就can了 最省事 物理层给你把防冲突给解决了。个人建议。

出0入0汤圆

发表于 2019-10-23 15:32:01 | 显示全部楼层
Leo-w 发表于 2019-10-23 09:52
我这个是读取卡片的信息,校验没有,或者有误,主机会认为没有卡片,那就麻烦了。

I2C能接127个,那太 ...

莫非你要做的是类似于档案检测(一溜的读卡器读标签)

出0入0汤圆

发表于 2019-10-23 15:36:45 | 显示全部楼层
I2C连调难度大些,楼主有开发经验可以考虑,不然首选UART

出0入0汤圆

发表于 2019-10-23 15:52:57 | 显示全部楼层
哪种方式都可以的,关键是保证出错后要可以进行重传,can是硬件进行错误重传的。

出0入0汤圆

发表于 2019-10-23 16:33:00 | 显示全部楼层
IIC能支持多长的距离,这种情况我觉的还是485最简单吧,我也经常用5楼的方法

出0入0汤圆

发表于 2019-10-23 17:00:48 | 显示全部楼层
I2C和UART都可以。。。当然了,我个人建议I2C。。UART对时钟要求可能有点高,还容易受到温度的影响。。。不过,我觉得加一条CS线会更好。。。发送数据前,通过CS来判断是否总线被占用。。。至于个数,默认的I2C好像是7位地址,但是,一切都有但是,好像ST的I2C有变种I2C。。。地址位可以搞到10位!!!

出0入17汤圆

发表于 2019-10-23 17:30:43 | 显示全部楼层
Leo-w 发表于 2019-10-23 09:35
这机器7*24小时工作,一直轮询很容易出问题。(采用UART)

所以,现在希望能换一直通讯方式,考虑用IIC ...

这锅7*24小时轮询不背。

出0入0汤圆

发表于 2019-10-23 23:07:31 | 显示全部楼层
7*24小时轮询会有什么问题?变电站远动连接保护设备就是这么干的,几年下来毛事没有。
你这是协议没搞好。
要么老实去改协议,要么换CAN,CAN协议本身处理了这部分。

出0入0汤圆

发表于 2019-10-23 23:38:01 来自手机 | 显示全部楼层
CAN吧,好处谁用谁知道。

出0入0汤圆

发表于 2019-10-24 09:57:51 | 显示全部楼层
这是个软件问题,不是硬件接口问题。
多主机单总线要解决冲突检测 冲突避免 和 冲突恢复问题。

出0入0汤圆

发表于 2019-10-24 10:15:08 | 显示全部楼层
从机要主动上报,非CAN莫属!CAN不分主从!

出0入50汤圆

发表于 2019-10-24 10:22:58 | 显示全部楼层
楼主漏了2个最重要的参数:第一,距离?在这里距离不会产生美,只会产生误差;第二,数据量,也就是简单估算下,每秒需要传输的数据有多少字节?

既然在意成本,这些重要细节怎可忽略?

出0入50汤圆

发表于 2019-10-24 10:26:45 | 显示全部楼层
xyz543 发表于 2019-10-23 12:31
点对点最远距离才1米?用直接 TTL-UART 就行啦!我还以为多远哩?正想推荐使用量子通讯说!...
...

正解!
把所有MCU的TXD和RXD合并到一条线上,所有TXD引脚设置为OC输出,一个1K的上拉电阻(阻值还可以更小一点,参考芯片手册,IO的驱动能力,可以用到接近其驱动上限)。然后半双工485的方式通信,绝对美滋滋,成本低到只要1只上拉电阻。

出0入0汤圆

发表于 2019-10-24 11:46:13 | 显示全部楼层
本帖最后由 pt2go 于 2019-10-24 11:56 编辑
Leo-w 发表于 2019-10-23 09:35
这机器7*24小时工作,一直轮询很容易出问题。(采用UART)

所以,现在希望能换一直通讯方式,考虑用IIC ...


任何接口都会出现错误的,做好错误筛选和错发重传机制才是正道!
我的4级拓扑结构,
1->2级用光纤,距离5000m,
2 -> 3级用485,距离800m
3->4级用消防2总线,距离200m
7*24小时运行,1 带 几万个点
没有通信混乱的问题,偶尔有线路施工质量造成设备掉线

出0入0汤圆

发表于 2019-10-24 12:03:40 | 显示全部楼层
lingdianhao 发表于 2019-10-23 23:38
CAN吧,好处谁用谁知道。


can程序麻烦一点,没有经验也不是那么好搞。
多主通信是亮点

出0入9汤圆

发表于 2019-10-24 12:21:15 来自手机 | 显示全部楼层
pt2go 发表于 2019-10-24 12:03
can程序麻烦一点,没有经验也不是那么好搞。
多主通信是亮点

对头,像这样提问的,都别推荐他用CAN。尽管很适合,收发器都可以不用。

出0入0汤圆

发表于 2019-10-24 17:55:14 | 显示全部楼层
一主多从结构,不管什么方式都是轮训的

出0入0汤圆

发表于 2019-10-24 18:03:10 | 显示全部楼层
pt2go 发表于 2019-10-24 12:03
can程序麻烦一点,没有经验也不是那么好搞。
多主通信是亮点

好奇通讯协议

出0入8汤圆

发表于 2019-10-25 08:33:04 来自手机 | 显示全部楼层
搞懂CAN,再跑CAN OPEN协议,或者参考can open自己制定协议

出0入0汤圆

发表于 2019-10-25 14:15:11 | 显示全部楼层
St的IIC貌似也不是很好用。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 22:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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