am62x 是否可以 使用 M4 内核 来 控制 MCAN1 或 MCAN2 以 更 高效地持续传输数据包? 测试 现在 仅为 888 FPS。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
am62x 是否可以 使用 M4 内核 来 控制 MCAN1 或 MCAN2 以 更 高效地持续传输数据包? 测试 现在 仅为 888 FPS。
我使用的 SDK 版本是 mcu_plus_sdk_am62x_09_00_00_19、当前用于传输数据包的 MCAN 示例是 examples\drivers\mcan\mcan_loopback_interrupt\am62x-sk\m4fss0-0_freertos、我已经修改过。
从回环检测的内部更改为不使用回路、发送 CAN 或 CANFD 帧在发送代码中添加了一个 while 环路、并屏蔽接收到的代码仅保留 SEND 功能、只要无法实现总线错误导致的中途错误帧。 am62x 的 MCAN1和 MCAN2的 TX 和 RX 首先连接到收发器、然后通过收发器连接到计算机的 CAN 卡。
在计算机端、在主机的波特率设置与 am62x 的波特率设置一致后打开端口、然后继续接收帧。 在主机的后台监控中、可以发现 am62x 发送的数据帧速度尚未上升、从而保持为每秒888帧。 我的测试代码将为 attached.e2e.ti.com/.../5826.mcan_5F00_loopback_5F00_interrupt.c、 
CANFD 数据包 时间 计算
我 可以 根据 波特 率计算不同类型数据包的时间、 计算 公式 如下:
数据包 时间 = 仲裁 字段 位 时间 *仲裁 字段 位 时间 + 数据字段 位 时间 * 数据字段位时间
以 具有 最低 位数的 CANFD 数据包 为例 、当 仲裁 域的波特率 为 1Mbps (位 时间为 1us) 、 数据 域的波特率 为 5Mbps (位 时间为 200ns)时、 数据包 时间 = 1us * 26 + 33 * 200ns = 32.6us 。
成功发送数据包后、 下一 帧 只能 在 帧 间隔 (3 位)之后发送、 也就是说、 仲裁 部分 需要在 最初的 基础上增加3位、 然后就 可以 计算出每秒发送的帧数。 然后、 上述最小位数的传输时间 = 1us * (26 + 3) + 33 * 200ns = 35.6us、 这 意味着 最多可 在 一 秒内发送1000000us / 35.6us = 28089帧数据包。 换句话说 、 在 1M/5M 波特 率下、 可以 发送 CANFD 标准加速 帧、并且最多 可以 发送28089帧。 但 在 前面的 测试中、 控制 MCAN 发送 数据包的 M4内核的速度 显然 不 符合标准。 以下屏幕截图显示了我的 syscfg 配置。
