In a project, I am using a CAN bus with several devices on it. The CAN bus is terminated with 120 Ohms at both ends. When all devices are booted up, the CAN waveform looks like I would expect:
- When idle, both CAN wires are at about 2.5V (recessive)
- When a device is sending, I see the typical square waves in opposite directions: CANL goes low and CANH goes high (dominant) and then both go back to 2.5V again.
However, when one of the microcontrollers is in JTAG mode (i.e., the device is waiting to be programmed), then a pullup on the STANDBY pin of the CAN transceiver (MCP2542) makes sure that the transceiver goes into standby mode. In that mode, both CAN wires are pulled to ground. The good old CAN square waves are no more. It looks like the other devices are trying to drive CANH high, but CANL doesn't really move.
What does it mean for the other devices, if one (or multiple) devices are (and stay) in standby mode? Are the other devices on the bus still able to communicate?
One of my concerns is, that the microcontroller is in JTAG mode. So the CAN controller is not initialized, no program is running, and thus the device cannot wakeup from standby - if that would be required.
Another concern is that the amperage used to drive both CAN wires low during standby is about twice as much as for the normal recessive level.
Is there a requirement that devices must wakeup from standby? Or can a device stay in standby for an indefinite amount of time while all other devices happily use the CAN bus?
As soon as the microcontroller is programmed, we drive the standby pin of the transceiver low and thus the transceiver exits standby mode. Then the bus starts showing normal voltage levels.