SPI voltage drain when connected in a bus

I have a 16x2 LCD screen (HD44780 type) connected to an LPC832 driver chip, and a Sony Spresense driving the signal to the LPC832 over SPI. All that works Ok. I had the BP connected “in vivo” - or active in the circuit with the Spresense, and the LPC832 - and the SPI signals sent to the LPC832 by either the BP or the Spresense were not getting processed. When I looked at SPI signals on the 'scope, where I expected voltages to be about 3.3v, they were half or less. When I disconnected the BP probes from the SPI pins, everything worked, again.

I’m not a bona-fide EE, but I remember reading that low-impedance probes can “vampire” part of a signal. I think. So, while this isn’t a direct problem with BP - the BP works fine, if I disconnect the Sony SPI pins, too - I’m curious why it works this way. If SPI’s a bus topology, shouldn’t I be able to connect multiple devices simultaneously? Where is the gap in my understanding?

1 Like

SPI is a direct drive bus, as opposed to a open drain bus like I2C.

In I2C (1 wire, some others) a pull-up resistor holds the wire high (3.3v? 5v? etc), the devices just pull it low to ground.

In SPI the pins are actively driving the wire high or low. When one device is high and the other is low it leads to contention. When this happens the result is unpredictable and may very well damage the pins of one or both devices. The Bus Pirate buffers will chew through other device’s pin, which is why we have a 330 ohm series resistor to limit the possible current source or sink to reasonable levels.

2 Likes