The sensors and the MUX work with 3.3v. I am using a level shifter from the MUX to the Edison (Figure 1).
The Edison shows the MUX's address but don't show the Sensor's address (I set the MUX to read just SDA0 and SCL0). So I tried different ways to connect the parts:
- I tried to put 10k and 2.2k pullup resistors on the SDA0 and SCL0 busses. It didn't work
- I tried to use the level shifter just with the sensor and it didn't work. I think it's happening because of the 10k pullup resistors of the level shifter.
- I tried to change the J9 (IOREF) jumper to 3.3v and connect the sensor straight to the Edison and it didn't work.
- With the IOREF=3.3v I connected the sensor straight to the Edison with no pullup resistor and it recognizes the sensor's address.
- With IOREF=3.3v. I hooked up the MUX and the Sensors straight to the Edison, it recognizes both MUX and Sensor's addresses.
Unfortunately I must use 5v for the GPIOs. Anyone knows why the Edison just recognizes the MUX when I am using the level shifters? I tried to turn the internal pullup resistors off but it shows me "Resource is busy."
Thank you in advance.
Thanks for reaching out.
That's weird. I don't know why this is happening, and I don't have the devices to test it. Nevertheless, I will try my best to help you.
Normally, when an I2C device is not recognized is because it is not powered, so we recommend the users to supply the I2C sensors with an external power supply, please try it and let us know if it works.
I know that you must use 5 V for the GPIOs, as a workaround if both devices are recognized using IOREF = 3.3 V, use this configuration and try to use the level shifters for the GPIOs that need 5 V.
I hope you find this useful.
Have a nice day.