I am implementing PMBus (variation of SMBus and I2C) communication using a Raspberry Pi 4B+ (RPi) as the master.
I am having issues with the slave power supply (PSU) irregularly answering the acknowledge bit of a simple I2C scan using the i2cdetect
command.
My setup: I am using a P82B96 chip to isolate both I2C bus sides. The RPi side is 3.3 V and the slave side is 5 V.
What I tried :
- Plugging another I2C device in parallel with the power supply. That device is recognized as expected.
- Lowering the frequency of the bus. The PSU is stated for 100 kHz maximum on this bus. I tried frequencies ranging from 10 kHz to 400 kHz. I actually have a strange thing happening at high frequencies (400 kHz): The slave is recognized but it's impossible to communicate with it. I am assuming it's a bug.
- Changing from hardware I2C to software I2C ports on the Raspberry Pi side. Pulled up with 1.8 kΩ to 3.3 V.
- Changing the address of the PSU.
- Swapping the RPi for a new one, swapping out the PSU.
- Rebuilding the cables I made.
Here are two oscilloscope pictures of the bus when the slaves acknowledges and doesn't :
Here's also a picture of the terminal running the scans. Nothing has changed between the 2 scans and they are time spaced by probably 5 seconds. You can see my dummy I2C device at the address 5a
.
After doing research this doesn't sound like a common issue. It would be nice if anyone has suggestions on this issue.
Edit: Schematic