The issue encountered in CAN bus communication involves the use of the SJA1000 chip. While data transmission is completely normal, the received data is incorrect. For example, when sending two bytes, 0x00 and 0xFF, the SJA1000 receives 0x00 and 0x00. However, when sending data such as 0x00, 0x11, 0x22, or 0xFF, 0xFF, the SJA1000 receives the data correctly. Why is this happening?
Dear Frank,
Bit Stuffing or Frame Interpretation Issue:
0xFF
(which is all ones).Timing or Synchronization Problems:
Transceiver Issues:
Electrical Noise or Signal Integrity:
Incorrect Configuration of SJA1000 Registers:
With Best Regards,
Jozef
0xFF received erroneous waveform
0xFF receives the correct waveform
The yellow color represents one of the data lines.
Green represents the RD line.
Purple represents the CS line.
As can be seen in the picture, the yellow signal has an ascending pulse but does not remain.
During the test, it was found that when using an oscilloscope probe to measure the ALE signal, the received data was correct. However, when the probe was not used to test the ALE signal, the received data was incorrect. The ALE signal is normal. The controller we use communicates with the SJA1000 via a TI level conversion chip, which converts 3.3V to 5V.
Dear Frank,
This behavior suggests a signal integrity issue, possibly due to:
Weak Pull-up/Pull-down or Floating Lines:
Impedance Mismatch or Reflections:
Timing Issues:
Add a Pull-up or Pull-down Resistor to the ALE line:
Review Level Shifter Specs:
Try Adding a Small Capacitor (e.g., 10–100 pF):
With Best Regards,
Jozef