Has the bus been terminated
correctly (with 120-Ω) at either ends (only)? The bus must be terminated only at
either ends and with a 120-Ω resistor. In other words, no more than two
terminator resistors may be present on the bus, unless split termination is
followed, in which case there will be two resistors on either ends. While
designing a CAN bus system, it is important that the termination resistors can
be enabled/disabled from outside the system enclosure. This scheme makes it easy
when nodes have to be added or removed to/from the network.
Are all CAN nodes configured for
the same bit-rate? Mis-matched node bit rates would repeatedly introduce error
frames on the bus. Capture the output of the CANTX pin on the oscilloscope to
physically verify the bit-time.
Have you tried a lower bit-rate?
Say, 50 kbps, for example? Timing issues concerning propagation delays may be
caught trying a lower bit-rate. Ensure that the NBTP and DBTP registers have the
programmed value.
Have you tried to reduce the bus
length and number of nodes?
Before the occurrence of the
error condition, were any error-frames seen on the bus? This could point to
timing violations or noise issues.
How many nodes are there in the
bus? (In non-self-test mode, there must be at least two nodes on the network,
due to the acknowledge (ACK) requirement mandated by the CAN protocol).