Part Number: AM263P4-Q1
We are currently evaluating CAN communication on our development board and have encountered an issue whose root cause is unclear. We would appreciate your feedback and analysis.
The following test setup and observations were made:
- CAN0, CAN1, and CAN2 are externally connected together on the same bus to perform a loopback test.
- CAN0 is controlled by Core0-0, while CAN1 and CAN2 are controlled by Core1-1.
- The following CAN IDs are transmitted every 5 ms:
ID Channel-------------------------0x600 CAN00x500 CAN10x400 CAN20x1C006000 CAN00x1C005000 CAN10x1C004000 CAN2
-
When monitoring the bus traffic, only the extended ID 0x1C005000, which should be transmitted from CAN1, is missing.
-
If only CAN0 and CAN1 are connected together, 0x1C005000 is transmitted correctly.
-
If only CAN1 and CAN2 are connected together, 0x1C005000 is not transmitted.
-
If we change the following setting in
MCAN_initOperModeParams():initParams.darEnable = TRUE; -> FALSE; - then 0x1C005000 is transmitted successfully even when CAN0, CAN1, and CAN2 are connected together on the same bus.
My understanding is that when automatic retransmission is disabled (darEnable = TRUE), a CAN frame that loses arbitration may not be retransmitted. Therefore, if multiple CAN controllers start transmission at the same time, a lower-priority message may never appear on the bus.
Is this understanding correct?
If so, could you please explain why only the extended ID 0x1C005000 is affected? We would expect arbitration to impact any lower-priority message, but in our case only this specific extended ID is consistently missing.
We are using MCU+ SDK AM263Px version 9.2.00.56.