cancel
Showing results for 
Search instead for 
Did you mean: 

I2C operating voltages

VThan.2
Associate III

 I have my MCU running at 1.8V and in I2C operation mode I have disabled the internal pull ups on the pins. Externally I have added pullups to 1.1V as my target device has been operating at 1.1V. Will this cause any issues?

1 ACCEPTED SOLUTION

Accepted Solutions

It shouldn't, I think. Since your target device is running at 1.1 volts, the maximum voltage it should see is the 1.1 volts from the pullup. Your target may have higher voltage input and output tolerance, but you haven't specified what it is.

Coming back the other way, the question would be if the I2C input can read 1.1 volts as a logic 1. That you can find out in the processor's voltage range definitions.

I typically run at 3.3 volts for the MCU, and 5 volts for board to board communications. Some modules I use are 5.0 volts only. I picked 5 volts because it's both common, and running 5 volt I2C should give me a higher noise margin.

To do the translation, I use a PCA9517 (relatively inexpensive SO-8 surface mount package). It has two separate VCC pins, and will translate easily from one supply voltage to another, or the same, in which case it provides buffering and offloads line capacitance.

I checked the specs, and the chip is designed to go from as low as 0.8 volts on the A side, to 2.5 volts+ on the B side. So it would allow you to go from your MCU to 3.3 volts, but because you have to use the chip in an A->B hookup (B <-> B not allowed), and the limitation of the B side is 2.5 volts. This doesn't work for you.

However, that doesn't mean that there aren't some of the PCA95xx chips that won't work, but it is an idea.

Because I use 3.3 volts to 5, then 5 to 3.3, the voltage levels match. I drive the B side with the processor (2.7 to 5.0 volts VCC), and then run the A side (5.0 volts) to all the other A sides. B can't be paralleled, but A can be. Due to the voltages you use, it won't work for you.

Look at the NVT2002DP, which is available in a TSSOP-8 (can be hand soldered) package. It may just be what you need if you decide to go that way. I think you have to drive it B (processor) to A (1.1 volt device), because VCCA has to be less than VCCB. I can do that with the PCA9517.

Good luck, though.

View solution in original post

11 REPLIES 11

It shouldn't, I think. Since your target device is running at 1.1 volts, the maximum voltage it should see is the 1.1 volts from the pullup. Your target may have higher voltage input and output tolerance, but you haven't specified what it is.

Coming back the other way, the question would be if the I2C input can read 1.1 volts as a logic 1. That you can find out in the processor's voltage range definitions.

I typically run at 3.3 volts for the MCU, and 5 volts for board to board communications. Some modules I use are 5.0 volts only. I picked 5 volts because it's both common, and running 5 volt I2C should give me a higher noise margin.

To do the translation, I use a PCA9517 (relatively inexpensive SO-8 surface mount package). It has two separate VCC pins, and will translate easily from one supply voltage to another, or the same, in which case it provides buffering and offloads line capacitance.

I checked the specs, and the chip is designed to go from as low as 0.8 volts on the A side, to 2.5 volts+ on the B side. So it would allow you to go from your MCU to 3.3 volts, but because you have to use the chip in an A->B hookup (B <-> B not allowed), and the limitation of the B side is 2.5 volts. This doesn't work for you.

However, that doesn't mean that there aren't some of the PCA95xx chips that won't work, but it is an idea.

Because I use 3.3 volts to 5, then 5 to 3.3, the voltage levels match. I drive the B side with the processor (2.7 to 5.0 volts VCC), and then run the A side (5.0 volts) to all the other A sides. B can't be paralleled, but A can be. Due to the voltages you use, it won't work for you.

Look at the NVT2002DP, which is available in a TSSOP-8 (can be hand soldered) package. It may just be what you need if you decide to go that way. I think you have to drive it B (processor) to A (1.1 volt device), because VCCA has to be less than VCCB. I can do that with the PCA9517.

Good luck, though.

Nikita91
Lead II

What MCU do you use at 1.8V ?

Have a look to your MCU datasheet: Electrical characteristics/operating conditions/IO ports characteristics.

Locate your pin and look at: I/O input high level voltage.

In L4R5 it is:0.7xVDDIOx so 0.7*1.8=1.26V

So an input is recognizes as high if the input voltage is >= 1.26V

Your pullup at 1.1V is too low.

Danish1
Lead II

Quite often you're allowed to exceed a device's Vdd by 0.3 V (considered too low to turn on a device's ESD protection diodes).

If that's the case, then you might consider pulling up to somewhere between 1.3 V and 1.4 V to satisfy your MCU but not have ESD-diode problems with your 1.1 V device.

@VThan.2​ "I have my MCU running at 1.8V ... my target device has been operating at 1.1V."

What do you mean by "target device" here? Is it not the same as your "MCU"?

A diagram might clarify things...

The I2C is a communication bus. So here it is used to link the MCU to another chip, the target.

That's not the normal usage of "Target".

"Slave" (or PC alternative) would be the more usual term.

Anyhow, if this "target" runs at 1.1V, then it makes sense to pull-up to 1.1V - so as not to over-drive that "target".

The question then is whether 1.1V is sufficient to guarantee a '1' being recognised at the high level by the MCU - as you said, the MCU datasheet would answer that question.

If 1.1V isn't going to be recognised by the MCU, then a voltage translator will be needed.

Some chips have an overvoltage capability. Many of the processor pins can tolerate 5.0 volts when run on 3.3 volts VCC. If the I2C slave device does have overvoltage tolerance to 1.8 volts, then running the pullups to 1.8 volts guarantees the right voltage margin for a logic 1 at the processor (please do check), and will not harm the I2C slave device. As mentioned before, the 1.1 volts from processor to slave may be fine at 1.1 volts, but the 1.8 volts needed by the processor will not work when driven from a 1.1 volt supply.

If you can get them, then the NVT2002DP chip will work in an SO8 package. If you're using another style package (WCLSP?) style, and the board is assembled in factory with a solder paste stencil, then you can use a different package.

S.Ma
Principal

Bidir voltage translator would be recommended. Wondering what max bit rate can be acheived at 1.1v

Limited by processor and I2C slave. The voltage translator seems built for rather high bit rates.