I'm running a PCF8523 RTC directly on the battery supply that can vary from 3-4.28 V. The RTC must communicate over fast mode I2C with a microcontroller running at 3 V IO.
The RTC VIH is 0.7xVDD = 2.996 V so conceivably I could just use the 3 V supply for pullups to the RTC and it should work but it feels quite marginal having the pullups so close to the VIH limit hence (though maybe not)? I'd like to use a level translator to go from 3 V to 3-4.28 V.
I found this application note AN104441 from NXP that describes a level shifter circuit using one discrete N-channel enhancement MOSFET. It seems to be appropriate for my use case but the example demonstrates translating from a lower voltage to a higher voltage and I'm wondering if I'm safe going from 3 V to 3-4.28 V with this circuit.
The final paragraph on page 4 suggests that I'm fine:
Supply voltages other than 3.3 V for VDD1 and 5 V for VDD2 can also be applied, e.g., 2 V for VDD1 and 10 V for VDD2 is feasible. In normal operation VDD2 must be equal to or higher than VDD1 (VDD2 is allowed to fall below VDD1 during switching power on/off).
My questions:
- Am I overthinking it by using level translation or should I just use 3 V pullups?
- Am I okay using the method suggested in AN10441?
- Based on AN10441 method what would happen if VDD1 < VDD2?
- Are there any special considerations I should make for my choice of N type MOSFET?