I have a CAN bus consisting of only two devices. Each device is transmitting a periodic status message. I am getting periodic error frames (about 1 error frame every 10 transmissions.) When I look at the CAN bus waveform with an oscilloscope I see this:
Does this look like a collision to you?
I thought the CAN bus protocol establishes that a device does not transmit on the bus if the bus is dominant. Even if two devices try to transmit the transmission will stop once one of the devices has loss arbitration.
Edit: Thanks for the responses. The schematics are very simple. I have a CAN Bus Transceiver connected to a PIC MCU. The same circuit has worked on other applications. There is only two nodes on the bus.
Perhaps this is a better screen capture:
Node 1 begins to transmit on the bus. It sends it's 29 bit identifier, then the DLC (both ok), it then begins to send its data fields D0 - D7 (D0 contains a number and D1-D7 happen to have all 0s). The electrical signal is good on the bus, but for some reason, the scope is unable to decode it. Perhaps the other node is also unable to decode the message and thinks the bus is recessive. I did check the voltage level are higher than the thresholds. It appears node 2 begins to transmit while node 1 is still transmitting it's data fields. After 5 dominant bits node 1 tries to send a recessive bit, but the bus is held high by Node 2. This causes a bit stuffing error and an error frame is sent.
After the error frame is sent, node 1 retransmits the exact same message and it is successful every time.
Here is a comparison of the two exact same massages. Black is the good message, blue is the error frame