在同一 MCU 中使用 3 种不同的通信协议
Using 3 different communication protocols in the same MCU
对于一个项目,我需要在 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 内核仅需要在数据块传输完成时才需要操作。
由于数据速率不匹配导致数据溢出的问题是一个单独的主题:
- 如果不匹配仍然存在,无论系统多么强大,都无法处理。
- 如果不匹配是暂时的,那只是可用缓冲区大小的函数。
因此,如果您要处理的最坏情况是 10 秒的 1 Mbps 传入数据(传出速率为 20kbps),那么您将需要 10 秒 x (1Mbps - 20kps) = 9.8 Mbit = 1.225 MByte 的缓冲区内存。
对于一个项目,我需要在 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 内核仅需要在数据块传输完成时才需要操作。
由于数据速率不匹配导致数据溢出的问题是一个单独的主题:
- 如果不匹配仍然存在,无论系统多么强大,都无法处理。
- 如果不匹配是暂时的,那只是可用缓冲区大小的函数。
因此,如果您要处理的最坏情况是 10 秒的 1 Mbps 传入数据(传出速率为 20kbps),那么您将需要 10 秒 x (1Mbps - 20kps) = 9.8 Mbit = 1.225 MByte 的缓冲区内存。