I have some problems with CAN on USBizi100
From time to time, board stops to receive messages till I reinitialize CAN object, or to send directly a soft reset to controller through CAN1CMR register.
I know there is traffic on the CAN network, because I have another board (EM) connected.
The problem occurs only If i have acceptance filter enabled.
With filter disable,the board receives millions messages with no gaps between.
I’m almost sure acceptance filter is correctly set, because I have a lot of EM modules running in the same manners for more than one year
I found an errata sheet for LPC23xx describing one CAN problem .
The document could be found here: http://ics.nxp.com/support/documents/microcontrollers/pdf/errata.lpc2387.pdf
"3.16 CAN.1: Data Overrun condition can lock the CAN controller
Each CAN controller provides a double Receive Buffer (RBX) per CAN channel to store
incoming messages until they are processed by the CPU. Software task should read and
save received data as soon as a message reception is signaled.
In cases where both receive buffers are filled and the contents are not read before the
third message comes in, a CAN Data Overrun situation is signaled. This condition is
signaled via the Status register and the Data Overrun Interrupt (if enabled).
In a Data Overrun condition, the CAN controller is locked from further message reception.
- Recovering from this situation is only possible with a soft reset to the CAN controller.
- If software cannot read all messages in time before a third message comes in, it is
recommend to change the acceptance filtering by adding further acceptance filter
group(s) for messages, which are normally rejected. With this approach, the third
incoming message is accepted and the Data Overrun condition is avoided. These
additional messages are received with the corresponding group index number can be
easily identified and rejected by software.
Could be USBizi affected by this bug, or could be something else?