在同一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的缓冲存储器。