Circuit is a Raspberry Pi 4A SPI master node talking with one MCP23S17 device. I'm testing the single-circuit version in a protoboard.
We are using A bank GPIOs for reading, and B bank GPIOs for writing. From them, two GPIOs will be used with wires, one belongs to the input bank and the other one belongs to the output pins group. So Out_1 and In_1 both will have one wire connected at each pin, as can be seen in the picture.
At the end of the wire it could be contact between out_1 wire and in_1 wire or not. So in_1 wire could be reading from out_1 pin or not connected to anything ('Z' state/open circuit).
The input pin is configured with an internal pull-up in order to read VDD when not connected.
Normally out_1 will ever be writing '0', so every time in_1 is connected to out_1 --> in_1 will ever read a '0' value.
The circuit can be seen in the following pictures, when it reads '1':
When it reads GND:
This circuit is working at 1 Mhz. As you can see MCP is fed with Raspberry supply pins. They don't need extra capacitors because the Raspberry provides 100 nF at their 3.3 V and 5 V pins.
In the pictures it can be seen that Reset and Address signals have no pull-up, because they will be by the moment to VDD or GND constantly, with any value change. Resistors will be added to the final design where Rst will come from another digital source, instead of VDD.
The application works making thousands of writing/reading in a loop.
It can be working fine during most of the time, for hours.
The problem:
Suddenly the device is reaching too high a temperature, I think it's close to getting burned. Here, reading fails. Even the two contiguous GPIO pins start changing their input values when they are not connected to anything.
When it ocurrs I can see how the multimeter reads 2.8 V instead of 3.3 V from the VDD Raspberry pin. So, it seems to be an extra current consumption, but I don't know from which pin and why.
This situation stops if the device is reset. After making a reset, the temperature falls back to normal and it works fine.
What could be happening? Why is the device getting this power consumption? Does it need resistors at address or reset pins?
simulate this circuit – Schematic created using CircuitLab
Added after posting and some new tests:
I have realized when overcurrent starts. By the moment during a week under test I can say when it happens: when I handle wires and push one of them into the GPIO input pin hole. My Python control software gives me feedback about when an input toggles its input value. I can see on the screen how when overheating has started, a long toggle-switching is produced before becoming stable. The longer the toggle time is, the closer is the start of the undesired behavior.
I have done a hardware debouncing to an input with a 1 μF capacitor and toggle has minimized until being almost completely avoided.