[技术讨论] 如何10ms内实现主单片机对33个从单片机完成通信

[复制链接]
1437|17
 楼主| 阿man 发表于 2022-10-19 08:57 | 显示全部楼层 |阅读模式
如何10ms内实现主单片机对33个从单片机完成通信,每个从单片机的数据量20字节。
gx_huang 发表于 2022-10-19 11:23 | 显示全部楼层
这没法回答,没有条件描述,距离,是否需要应答
xiaofei558008 发表于 2022-10-19 13:23 | 显示全部楼层
10ms
33个
每个设备10/33ms,303us一个周期,假如数据量一样多再除以2,来回应答;

也就是150us 需要传输20字节,波特率需要至少150us/(20 * 10bit) = 0.75us/bit = 1.3Mbps;
CANFD,RS485,可以看看
推荐max13488(16Mbps自带换向功能),max14840E(3.3v 40Mbps)
当然,STM32可以支持好几M的串口波特率,看你用啥单片机,和楼上说的一样,距离是关键;这么高波特率,距离就难以保证了;

如果速度还不够,建议直接用以太网,100M还是很容易实现的;加个36**换机一下子解决;成本也就上去了;

评论

1.3M,太完美了,只少要打过6折,2M差不多。原因,线,干扰,程序。  发表于 2022-10-19 14:25
QuakeGod 发表于 2022-10-19 13:58 | 显示全部楼层

这是1Mbps 的485 通讯,16个字节数据量。
每个子站轮询时间基本上在300-400uS。和楼上估计差不多。
7个子站,循环周期3mS. 如果33个子站,那么循环时间要15mS。
这样的话,想要10mS之内的循环时间,需要至少1.5Mbps 的波特率才行。
这个1.5Mbps的485,通讯距离在几十米是没问题的。
另外,单片机用的STM32系列,因为数据速率很高,对单片机的处理能力要求也很高,51系列根本处理不过来。

本帖子中包含更多资源

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

×
oufuqiang 发表于 2022-10-19 15:29 | 显示全部楼层
20字节,33从机=660字节,加上起始位,停止位,每字节10位,总共6600位,10ms一次,每秒660000bps,压得紧点,800kbps应该也够。
注意发送一个回传开始请求帧,从机排队回复就好了,不用一问一答。
xch 发表于 2022-10-19 16:08 | 显示全部楼层
通信距离多远?
descope 发表于 2022-10-19 16:36 | 显示全部楼层
没必要挑战难度,可以考虑带多串口的MCU,可以考虑MCU树性通信,变串行为并行;
 楼主| 阿man 发表于 2022-10-19 17:19 | 显示全部楼层
xch 发表于 2022-10-19 16:08
通信距离多远?

在一个PCB内,距离20厘米左右吧
coody 发表于 2022-10-19 17:27 | 显示全部楼层
阿man 发表于 2022-10-19 17:19
在一个PCB内,距离20厘米左右吧

那应该用SPI。
圣骑士by 发表于 2022-10-19 17:31 | 显示全部楼层
xch 发表于 2022-10-19 20:15 | 显示全部楼层
阿man 发表于 2022-10-19 17:19
在一个PCB内,距离20厘米左右吧

如果每个单片机串口都支持跑 33x20X10 bps 不丢数据 ,使用Token-Ring即可.
zzele 发表于 2022-10-20 06:47 | 显示全部楼层
估计是假想题目
William1994 发表于 2022-10-20 08:31 | 显示全部楼层
QuakeGod 发表于 2022-10-19 13:58
这是1Mbps 的485 通讯,16个字节数据量。
每个子站轮询时间基本上在300-400uS。和楼上估计差不多。
7个子 ...

8051用汇编中断实现的ring_buffer DMA(xdata 256字节接收缓冲区,位置整256对齐才能用单周期的movx @r0指令),跑3Mbps一点问题没有。
CH341系列的最高就是3Mbps。
测试极限,MCU主频降低到16MHz,串口3Mbps接收没有问题,发送帧长了之后CH341的发送缓冲区满了,会丢。问FAE,说发送的流控内部是空的,他们假设MCU不会发这么快而且发这么多,USB的极限12Mbps和电脑主控芯片及其HUB拓扑结构都有关。接收的流控是完全没有问题的。

串口3Mbps,加上stop位占1bit,对应的中断频率大概是300kHz,也就是3.3us。在16MHz的低端8051里面大概是50条汇编指令的时间。10条汇编完成DMA的功能,大概还有80%的CPU时间留给应用程序。
William1994 发表于 2022-10-20 08:36 | 显示全部楼层
楼主的这个方案,建议换个IO多的MCU,一个搞定。
如果是分离模块,一定要主从结构如果是IO不够的话,建议加个CPLD或者74LS系列的IO扩展芯片扩展。

By the way,在我们美国,现在主从这个词已经禁用了。因为涉及种族歧视。要用控制器和目标机。 从去年开始ITU(固定串口的协会),以太网,I2C等等标准都已经慢慢的修订过来了。,文明发言。谢谢。
rocHP 发表于 2022-10-20 08:56 | 显示全部楼层
或者你可以并行发送数据,
hjl2832 发表于 2022-10-20 08:57 | 显示全部楼层
同一个PCB,不明白为什么要用串口,用SPI不香吗?
xl071310 发表于 2022-10-20 11:00 | 显示全部楼层
这种情况,最好的办法是直接用IO口高低电平解析,主单片机通过高低电平长度来打包数据(设置一个定时器,频率为波特率的1/7 或 1/9)。 在这个定时器中断里面,把33路IO口都读一遍,进而封装打包成一个字节,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

31

帖子

1

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