PR8-19, no I2C response, Pi nor Arduino

Hello,

I’m reconfiguring a system that used a small computer & arduino to interface with the board to use a raspberry pi (CM4, with IO board). However, I can’t get the board to return the address with i2cdetect -y 1 on the pi or the default i2c scanner on the arduino. On the pi, that is including a bi-directional SparkFun Logic Level Converter (BOB-12009). I’ve verified the relays still work when directly applied to power, I just can’t seem to get any sort of communication up and running. Due to enclosure limitations I can’t fit an NCD I2C shield (for the pi, the arduino actually does have one), but am open to working that out if I know for sure it’ll make the system function.

With a logic analyzer, I can see i2cdetect & the arduino scanner both do send data on the SDA, prompting the SCL, just it’s always a NACK. On the pi the logic doesn’t make it through the level shifter for whatever reason as well…

Note, I2C is enabled on the pi, not on any blacklists, and the pins are still functioning.

Thank you!

Hi @ghill can you share pictures of your setup?


Probably easier if I just draw it out as I don’t have any breadboard (small jumper) wires so it’s quite messy. Note the Pi CM4IO board is an image from the internet, so disregard the green jumper cable.

Hi @ghill, The only thing I noticed is that the GND terminal coming from the relay board might not need to be connected to the GND terminal of the Raspberry Pi. It should likely only be connected to the GND of the Logic Level Converter. The other connections seem correct.

On the jumpers, try enabling the 4.7kΩ pull-up resistors and then try the scan again. If this doesn’t work, I would recommend purchasing the I2C shield for the Raspberry Pi, we offer some models:

Thanks,
Eduardo M.

Thanks for assisting @Eduardo_Mtz, unfortunately removing the ground didn’t change anything and I’ve had the pull-up resistors enabled (the image on the drawing also not mine).

Do the shields do anything other than level shifting?

Hi @ghill , When you make the connection, does the “I2C Power LED” of the PR8-19 light up?
Screenshot from 2024-06-28 09-50-55

Yes it does. On I2C IN, GND = 0V, 5V+ = 5.16V, SDA = 4.86V, SCL = 4.95V. Note that is with the pull-up resistors enabled.

@Eduardo_Mtz
I’ve retrieved the old setup that definitely used to function and have encountered the same issue. The slave device doesn’t ever ACK the signal, otherwise the address transmit works as it should and displays proper behavior on shorting SDA or SCL to ground. While the MCP23017’s voltage levels on each pin seem good and the LEDs light up, is there any other way to ensure functionality of the board?

Thank you for your continued support

Hi @ghill Do you have another I2C device available to verify that the connections are correct? You could even load some basic code onto an Arduino to configure it as a slave, something like this:

#include <Wire.h>
 
byte TxByte = 0xAA;
 
void I2C_TxHandler(void)
{
  Wire.write(TxByte);
}
 
void setup() {
  Wire.begin(0x55); // Initialize I2C (Slave Mode: address=0x55 )
  Wire.onRequest(I2C_TxHandler);
}
 
void loop() {
  // Nothing To Be Done Here
}

If you could share pictures of the actual connection diagram that you have, it would be helpful to take a look.

Note: Unfortunately, we don’t have detailed information about the electronics within the Logic Level Converter. This limits our ability to assist you if it’s the source of the problem.

Thanks,
Eduardo M.

@Eduardo_Mtz Apologies for the delay, holiday and all.

Pi to configured Arduino worked just fine, which was nice to see (thank you for your code, also tried with a standard I2C scanner). This was tried both with the SparkFun converter and with the “PCA9306 I2C Data and Power Level Shifter 0.3VDC to 5VDC Bus Handler I2C Mini Module” (PR13-15). Connection is (now) literally just Pi (GPIO2 = SDA, GPIO3 = SCL) to converter (with VIN = 3.3 pin 1 from Pi) to relay board (I2C IN). I’ve tried this now with another compute module and board as well but the Pi->Arduino test was bittersweet in that it then does seem like a relay board issue?

Hi @ghill I’m pleased to hear that the example I shared with you was helpful. Unfortunately I don’t see anything wrong with the connections from my end. Perhaps we should take a closer look at the issue. Here are a couple of options:

  1. You could try using one of our I2C shields.
  2. You could also fill out an RMA request here: NCD Login - NCD.io

Thanks,
Eduardo M.

Oh well, thank you for your help regardless. The board has functioned for quite some time 5+ years) so I don’t believe nor expect it’d qualify for any sort of repair, I’ll see about possibly getting a replacement.

New board works, some issue with the old one then (possibly was run on top of static bag at some point).

1 Like