I have three sensors on a board. Two of the sensors are the same model and firmware with the same address (MLX90397). I used an LTC4316 to translate the address of one of the MLX90397s.
In Linux (Raspberry Pi Zero), when I used
i2cdetect -y 1 all sensors show up correctly.
When I attempt to write to the sensor behind the translator, I receive no errors from the I2C bus API. However, when I attempt to read back from its memory to confirm the read, it doesn't return the asked number of bytes.
The non-translated sensor, however, works just fine.
My bus runs on 3.3 V and I have hooked up 2.2 kΩ pull-up resistors. Is this value too low?
The PCB looks like this:
The chip on the far left is the non-translated sensor. The chip to the left of the middle is the third sensor. To the right of the middle line is the translator, and just before the connector (all the way to the right) is my translated sensor. I'm stating this to demonstrate that the trace isn't too long.
I tried to test every address in the address space for read/write and all addresses except the three fail to READ/WRITE and the one behind the translator fails to READ.
What else should I try?