在同一MCU中使用3种不同的通信协议



对于一个项目,我需要在CANBus网络、以太网和RS-232中进行通信。我想使用一个MCU作为CANBus启动拓扑、以太网启动拓扑的主要单元,该MCU还将把到达它的RS232数据传输到另一个设备。现在我想使用高达每秒1兆比特的高速CAN。但是,RS-232的最大波特率为20 k。我想知道用一个MCU处理3种不同的通信(CAN总线、以太网和RS-232(是否可行。我担心在某个时候会被数据淹没。如果数据是可以平均的突发数据,我可以在短期内缓冲数据。对于我永远无法跟上的连续数据,我需要丢弃消息,也许是以一种有管理的方式。但我不想丢弃任何数据。所以我的问题是:在这种情况下使用1个MCU是否有效?有什么软件技巧可以帮助我处理这个案子吗?(比如给予CANBus更高的优先级等(

是的,这可以用单个MCU完成。即使是一个简单的MCU也应该能够轻松处理1Mbps的数据速率。最有可能的情况是,您希望使用启用DMA的传输,因此CPU核心只需要在数据块传输完成时采取行动。

由于数据速率不匹配而导致数据溢出的问题是一个单独的主题:

  • 如果不匹配持续存在,无论系统的能力如何,都无法处理
  • 如果不匹配是暂时的,那么它只是可用缓冲区大小的函数

因此,如果您想要处理的最坏情况是以1Mbps(输出速率为20kbps(的速度输入10个数据,那么您将需要10s x(1Mbps-20kps(=9.8 Mbit=1.225 MB的缓冲内存。

最新更新