I have made a circuit that uses this ADC powered with 3.3V (MCP3422): Datasheet
Now I would like to communicate with it over I2C using an Arduino Mega.
The problem is that the Arduino's I2C is operating on 5V level and the I2C bus of the ADC (can handle up to 5V supply but is only supplied with 3.3V) is on 3.3V level only.
Now I guess in order to ensure a stable communication I should use an I2C Bus Voltage-Level Translator like e.g. the PCA9306: Datasheet
As far as I know the Arduino Mega has internal 50 kOhm pullups that can be disabled.
In addition there are fixed 10 kOhm pullups on the Arduino Mega that can not be avoided/disabled (so I can not connect the two devices directly).
Now my plan is to disable the 50 kOhm resistors on the Arduino and use the PCA9306 level-shifter.
One the V_ref1 side of the PCA9306 I will attach my 3.3V circuit I2C domain and on the V_ref2 side of the PCA9306 the Arduino 5V I2C domain will be connected.
I will use 5.1 kOhm pullups on both sides of the PCA9306 (because I have them here and also I want to make sure the current draw will be limited to less than 10mA).
Question:
Thank you very much.
Now I would like to communicate with it over I2C using an Arduino Mega.
The problem is that the Arduino's I2C is operating on 5V level and the I2C bus of the ADC (can handle up to 5V supply but is only supplied with 3.3V) is on 3.3V level only.
Now I guess in order to ensure a stable communication I should use an I2C Bus Voltage-Level Translator like e.g. the PCA9306: Datasheet
As far as I know the Arduino Mega has internal 50 kOhm pullups that can be disabled.
In addition there are fixed 10 kOhm pullups on the Arduino Mega that can not be avoided/disabled (so I can not connect the two devices directly).
Now my plan is to disable the 50 kOhm resistors on the Arduino and use the PCA9306 level-shifter.
One the V_ref1 side of the PCA9306 I will attach my 3.3V circuit I2C domain and on the V_ref2 side of the PCA9306 the Arduino 5V I2C domain will be connected.
I will use 5.1 kOhm pullups on both sides of the PCA9306 (because I have them here and also I want to make sure the current draw will be limited to less than 10mA).
Question:
- Do you have experience with the PCA9306? Any Pitfalls I should know about? Or would you even recommend another method to interface both of my I2C domains? The use of the PCA9306 seems pretty straightforward (at least regarding the datasheet).
- Will I be able to limit the current draw of the PCA9306 to about 10mA? As far as I understand the current draw of the device is mainly determined by the pullup resistors that are used. If I'm not mistaken I should be able to limit the current consumption down to <10mA (~3.25mA) when using the 5.1 kOhm pullups on both sides if my calculation is right.Would really appreciate it if someone could confirm this.
- Do you see any problems with this approach? The resistor values I have chosen should not be a problem I guess? Im not really concerned regarding bus speed.
Thank you very much.