Hi!
I'm using a barebone ATmega328P (@8Mhz internal) connected to a MAX30102 MH-ET Live module. Both the MCU and the MAX30102 are powered by the same 2x AAA battery. The MAX30102 module has two voltage regulators: one that convert voltages from 1.8-5.5V to 3.3V and the other is a 1.8V LDO. The SDA and SCL pin of the MAX30102 is pulled up to the 3.3V lines on the module through 4.7k resistors.
My question is: Given that the MCU is using voltage directly from the 2x AAA battery which ranges from 2.65-3.2V but the I2C lines on the MAX30102 module is constantly 3.3V. Will there be any problems with these two devices communicating through I2C ? I don't have any problems using it so far.
The answer I can come up with: So looking through the datasheet of the Atmega328P and the MAX30102 I can find that:
For the MAX30102: Vdd = 1.8V (from 1.8V LDO)
- V_IH = 0.7 *Vdd = 1.26V
- V_IL = 0.3*Vdd = 0.54V
- V_OL = 0.2V
For the Atmega328P: with Vcc from 2.65 - 3.2V
- V_IH = 0.6*Vcc = 1.59 - 1.92V
- V_IL = 0.3*Vcc = 0.795 - 0.96V
- V_OL = 0.2V (at Vcc = 3V, I_OL = 6mA and t = 25degC)
(for the Atmega328P they just put the graphs in the datasheet, not exact formula)
=>So because the I2C protocol sends data by pulling the line LOW, when the MAX30102 pulls the line low with V_OL = 0,2 V, the Atmega328P should be able to receive data because V_OL (MAX30102) < V_IL (Atmega328P). And the same things would work vice versa so there shouldn't be any problems with this circuit right ?
- I'm a student so any answers would be greatly appreciated. My English isn't very good so I'm sorry about that