我需要在 2 秒内处理 200 个 CAN 消息并将其发送到 UART 我如何知道我的 CPU 能够完成此任务

问题描述 投票:0回答:1

目前我需要做微控制器的可行性,即我需要在2秒内接收200条CAN消息并在2秒内将内容复制到UART缓冲区,这意味着所有处理应该在2秒内完成,我需要识别我的微控制器是否能够执行任务,如果不能,如何根据我的要求选择正确的控制器,是否有任何计算来识别CPU负载,如果是,请帮我解决这个问题。

提前致谢!

我不知道如何计算

memory embedded microcontroller ram microprocessors
1个回答
0
投票

CAN 和 UART 通信都比 CPU 慢得多,因此更多的是软件设计问题而不是处理器性能问题,并且有很多方法可以搞砸。

无论如何,您提供的信息不足。您尚未提供 CAN 总线的数据速率或“消息”长度。我假设“消息”指的是 CAN“帧”,但对于 CAN 来说,这是 8 个字节,而对于 CAN FD 来说,它最多可以是 64 个字节。此外,应用层协议可能具有跨越多个帧的“消息”。 假设 2 秒内 200 条消息意味着 200 x 8 字节帧,并且通过 UART 您仅传输数据有效负载,而不是 CAN 寻址信息。也就是说 (200 x 8) / 2 或 400 字节/秒 - 对于任何 UART 来说几乎不费力。

假设您在 UART 上使用 N,8,1 数据帧,则每字节传输 10 位,因此 UART 比特率需要大于 400 x 10 或 4000 位/秒。高于 UARTS 的首选波特率为 4800、9600、19200、34800、57600 和 115200。

即使您使用 64 字节 CAN FD 帧,仍然需要中等的 32000 位/秒。

您可能很难找到“太慢”的 MCU 来维持相当适中的数据速率。更值得关注的是如何缓冲和安排传输,以及系统接收 UART 数据时的实时要求。也就是说,

系统

可以承受 CAN“消息”传输和 UART 数据到达之间的延迟时间是多少?例如,是否要将所有 200 条消息作为一个数据突发进行整理并传输到 UART,或者是否应在每条消息到达时立即传输。 解决方案还取决于处理器正在执行多少其他工作,以及该工作的实时要求。但是,如果您对传入 CAN 帧和传出 UART 数据都使用 DMA 传输,则此应用程序中的软件开销可能会很小,并且在这些低数据速率下,减慢其他任务速度的总线争用也会很少。

© www.soinside.com 2019 - 2024. All rights reserved.