[SOLVED: Pi was defective] PR33-43 MCP-3428 needs general call reset from RPi

EDIT: It turns out that my Raspberry Pi was defective, as I tried this with a different one and it worked without issue.

I’m having trouble communicating with the MCP3428 chips on my PR33-43 board. I’m using an I2C bus from a Raspberry Pi (which seems to have no issue communicating with other devices, including your MCP4725 DAC). I try to use i2cset (and the equivalent smbus python functions) to set the initial config for the 0x68 address chip (for which I configured one of the jumpers on the board; the other is a different address). I have the pull-up jumpers removed because the Raspberry Pi master already has them. No matter what I try, I always get back an error that the write failed.

I attached my Bus Pirate to the I2C chain in sniffer mode, and it reports that the chip never ACKs the initial (proper) address byte (0xD0 including the R/W bit). The strange thing is that when I connect the board just to my Bus Pirate, I am able to set configuration and then read back the ADC values like the datasheet promises. Do you know why the board would work with a little USB dongle but not with the Pi?

For additional information, I attached the Pi to common ground and am using the 5V rail on the GPIO header to supply the 5V input on the board.

can you try this code


I actually already tried this among other things. It never gets past bus.write_byte(0x68, 0x10) before I get OSError 121. My I2C bus sniffer indicates that the MCP3428 never ACKs the address byte. The confusing thing is that the the other devices I have on that bus work, and I can communicate with the MCP3428 with my USB Bus Pirate but not with the Pi.

does it come up with an i2c address
i2cdetect -y 1

It turns out that my Raspberry Pi was defective and on its last legs; today it couldn’t even boot. I tried this out on a different Pi and it worked fine.