Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

MEMS supply voltage - please check this appnote

Status
Not open for further replies.

sgergo

New Member
Hi to all,

here is an appnote with the recommended circuitry on page 9. SCL_x and SDA_x are pulled up to 1.8V and both connected to an MCU which has a supply voltage of 3V. If I'm not wrong this MCU's pins will be around 3V when log=high.

However, in the datasheet of this chip, the maximum voltage on the I2C pins are VDD_IO (page 16) which is rated 1.8V at page 13.

Now I'm confused: is the appnote wrong? Any tips would be highly appreciated.
 
You'd be right IF the I2C protocal actually had an active high.

I2C protocal dictates that device pins operate in open-drain mode. This means the pins can go either LO or Hi-Z(Hi-Impedance, the Z being the variable commonly used for impedance in equations). They can only drive the line LO or release the line- they can't actually drive it HI.

Whenever a device wants the line to go HI, it instead releases the line by going Hi-Z and it is the pull-up resistor on the line that then takes over that pulls the line high. So if the pull-up resistor is pulling up to 1.8V, it doesn't matter how high the MCU voltage is since it never actually drives the line with that voltage. It only ever drives it to ground or releases it to Hi-Z.

You might be wondering why it does this but it makes using multi-master protocols easier. Since if you are sending a LO and detect that the line is HI, it means some other device is trying to sending something and is producing collisions. It's trickier do to if two colliding devices are both trying to actively drive the line LO or HI at the same time. CAN buses use a similar concept too in the form of dominant and recessive bits where the dominant logic state will override the passive state if both appear on the line at the same time. In I2C, it also lets the slave control the clock somewhat by holding the line LO when the master wants the clock line to go HI, thereby allowing the slave to delay responses until it is done it's work.

THe main issue to check in this case is whether 1.8V is high enough to be interpreted as a logic HI by the MCU when it is running at 3V (which it probably should be but always best to check). If the MCU is capable of running off 1.8V then it is probably true but you could still check the logic thresholds to be sure.
 
Last edited:
Hi dknguyen,

many thanks for the explanation. Googled up open drain and now I understand the theory behind I2C. Never used an I2C device before, only SPI.

Cheers!
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top