
ERR005829
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
106
NXP Semiconductors
Description:
FlexCAN does not transmit a message that is enabled to be transmitted in a specific moment during
the arbitration process. The following conditions are necessary for the issue to occur:
• Only one message buffer is configured to be transmitted
• The write which enables the message buffer to be transmitted (write on Control/Status word)
happens during a specific clock during the arbitration process.
• After this arbitration process occurs, the bus goes to the Idle state and no new message is
received on the bus.
For example:
1. Message buffer 13 is deactivated on RxIntermission (write 0x0 to the CODE field from the
Control/Status word) [First write to CODE]
2. Reconfigure the ID and data fields
3. Enable the message buffer 13 to be transmitted on BusIdle (write 0xC on CODE field)
[Second write to CODE]
4. CAN bus keeps in Idle state
5. No write on the Control/Status from any message buffer happens.
During the second write to CODE (step 3), the write must happen one clock before the current
message buffer 13 to be scanned by arbitration process. In this case, it does not detect the new code
(0xC) and no new arbitration is scheduled.
The problem can be detected only if the message traffic ceases and the CAN bus enters into Idle
state after the described sequence of events.
There is no issue if any of the conditions below holds:
• Any message buffer (either Tx or Rx) is reconfigured (by writing to its CS field) just after
the Intermission field.
• There are other configured message buffers to be transmitted
• A new incoming message sent by any external node starts just after the Intermission field.
Projected Impact:
FlexCAN does not transmit a message that is enabled to be transmitted in a specific moment.
Workarounds:
To transmit a CAN frame, the CPU must prepare a message buffer for transmission by executing
the following standard 5-step procedure:
1. Check if the respective interrupt bit is set and clear it.
2. If the message buffer is active (transmission pending), write the ABORT code (0b1001) to
the CODE field of the Control/Status word to request an abortion of the transmission. Wait
for the corresponding IFLAG to be asserted by polling the IFLAG register or by the
ERR005829
FlexCAN: FlexCAN does not transmit a message that is enabled to be
transmitted in a specific moment during the arbitration process