Skip to main content
dgand
Associate
March 9, 2021
Question

Drive I2C bus powered in 1.8V with an uc powered in 3.3V

  • March 9, 2021
  • 3 replies
  • 3064 views

Hi everyone,

Do you know if I can drive a 1.8V I2C bus if my uc is powered in 3.3V?

Thanks for your answer.

This topic has been closed for replies.

3 replies

Danish1
Lead III
March 9, 2021

Let's hope 12.8 V is a misprint and you really mean 2.8 V

I2C drivers are open-drain, so as long as you use external pull-up resistors things should be fine.

You might need to run the bus more slowly than would normally be dictated by the (stray) capacitance because you need to reliably wait until the line floats back above the logic threshold of any 3.3 V devices connected to the bus. You don't say which stm32. The data-sheet for your stm32 will say worst-case (highest) logic-high threshold for the pins you are using for I2C.

Hope this helps,

Danish

dgand
dgandAuthor
Associate
March 9, 2021

Thanks for your answer.

Effectively, I mean 1.8V like in the title. Also, I use a STM32L462 and externals pull-up.

Effectively, I have found information in the data sheet. For the stm32, the logic-high threshold is computed with this formula: 0.49 * VDD +0.26.

In my case the threshold level is 1.877.

I think that my problem become from that.

Thank for your help.

Daniel

Danish1
Lead III
March 10, 2021

Could you pull-up to (approximately) 1.8 + 0.3 V = 2.1 V?

This will only be 0.3 V above the Vdd of your low-voltage devices, so shouldn't turn-on the ESD protection diodes or cause any other issues.

But it will be above the stm32 threshold from that formula.

How do you get 2.1 V?

Instead of each pull-up resistor, have a pull-up to 3.3 V and a pull-down to 0 V on each of SCL and SDA.

e.g. 5.6k pull-up and 10k pull-down will give 2.11 V at 3.6 k impedance.

Of course this wastes power, approx half a milliamp.

If you pull to between 1.8 and 3.3 V there will be less power wastage, but you have to consider if the 1.8 V line will always sink that current which you are feeding in from the potential divider.

Depending on your budget and design-requirements, you could also consider I2C level-shifters which do exist.

Regards,

Danish