如何解决在同一MCU中使用3种不同的通信协议
对于一个项目,我需要在CANBus网络,以太网和RS-232中进行通信。我想使用一个单一的MCU,它将作为CANBus启动拓扑,以太网启动拓扑的主要单元,并且该MCU也将把附带的RS232数据传输到另一设备。现在,我想使用速度高达每秒1 Mbits的高速CAN。但是,RS-232的最大波特率为20 k。我想知道它是否可以用1个MCU处理3种不同的通信(CANBus,以太网和RS-232)。我担心某些时候数据会超支。如果数据突发可以平均,我可以在短期内缓冲数据。对于我永远无法保持的连续数据,我可能需要以托管方式丢弃消息。但是我不想丢弃任何数据。所以我的问题是:在这种情况下可以使用1个MCU吗?是否有任何软件技巧可以帮助我解决此问题? (就像赋予CANBus更高的优先级,等等。)
解决方法
是的,可以使用单个MCU来完成。即使是简单的MCU,也应该能够轻松处理1 Mbps的数据速率。您最有可能希望使用启用DMA的传输,因此CPU内核仅在完成大块数据的传输后才需要采取行动。
由于数据速率不匹配而导致数据溢出的问题是一个单独的主题:
- 如果不匹配现象仍然存在,那么无论多么强大,任何系统都无法处理。
- 如果不匹配是暂时的,那只是可用缓冲区大小的函数。
因此,如果您要处理的最坏情况是1 Mbps的输入数据10s(输出速率为20kbps),那么您将需要10s x(1Mbps-20kps)= 9.8 Mbit = 1.225 MByte的缓冲存储器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。