器件型号: AM263P4-Q1
我们目前正在开发板上评估 CAN 通信、但遇到了根本原因不清楚的问题。 我们非常感谢您的反馈和分析。
测试设置和观察结果如下:
- CAN0、CAN1 和 CAN2 在同一总线上从外部连接在一起以执行环回测试。
- CAN0 由 Core0-0 控制、而 CAN1 和 CAN2 由 Core1-1 控制。
- 以下 CAN ID 每 5ms 发送一次:
ID 通道----------------------------0x600 CAN00x500 CAN10x400 CAN20x1C006000 CAN00x1C005000 CAN10x1C004000 CAN2
-
在监控总线流量时、仅 缺少应从 CAN1 传输的扩展 ID 0x1C005000。
-
如果只有 CAN0 和 CAN1 连接在一起、则 0x1C005000 被正确发送。
-
如果只有 CAN1 和 CAN2 连接在一起、则 不发送 0x1C005000。
-
如果我们在
MCAN_initOperModeParams():initParams.darEnable = true;-> false 中更改以下设置; - 即使 CAN0、CAN1 和 CAN2 在同一总线上连接在一起、也会成功发送 0x1C005000。
我的理解是,当自动重传被禁用时 (darEnable = TRUE),失去仲裁的 CAN 帧可能不会重传。 因此、如果多个 CAN 控制器同时开始传输、则总线上可能永远不会出现优先级较低的消息。
这种理解是否正确?
如果是、您能解释为什么扩展 ID 0x1C005000 只 受影响? 我们期望仲裁会影响任何优先级较低的消息、但在本例中、始终缺少这个特定的扩展 ID。
我们使用的是 MCU+ SDK AM263Px 版本 9.2.00.56。