Electronic – Multiple rails I2C bus device from PMIC

i2cldolow-power

I want to use a PMIC chip in my project. As any PMIC, it has a couple of outputs: buck Vout, and an LDO out. The PMIC is operated over the I2C bus. The MCU acts as the host device and runs on Vout, so I have the I2C lines from my MCU pulled up to Vout.
The LDO output is controllable, in the interest of saving power and not losing quiescent current, I would like to use the LDO output to power another slave device. Here is a block diagram of how I would like to connect the MCU and slave device:
enter image description here
This slave device also operates over I2C. I only have one I2C bus, so I can only connect the device on that bus. Assuming the voltage levels are the same on Vout and VLDO, I am not sure the configuration I have will completely turn off the device, since the lines are still remain pulled up to Vout. Is this the right way to implement it? If not, how can I correctly configure it? In case my LDO and Buck outputs are not the same, how can this be connected?

Best Answer

The letter of the I2C spec says that the powered-down device is not supposed to drag down the I2C lines. In practice, this may not be the case, depending on how the chip designer implemented their I2C I/O pads.

I2C is supposed to be open-drain. However, sometimes designers will use a 'pseudo-open-drain', that is, a regular I/O pad that's wired to use output enable to make low / high-Z to form the I2C signal. The problem is, regular I/O pads have protection diodes that will kill the bus when the device is powered off.

Here's a clue: if the part has a Vi(h) spec on the I2C pads of, say, VccIO+0.5V, or they have no special statement about I2C vs. power-off, chances are there are protection diodes on the I2C pads that will be forward-biased by I2C on power-down.

The safest thing to do is to put an isolation switch between the powered-down I2C section and the main section, and disconnect the I2C domains from each other when the LDO is powered off.

You have options for the disconnect. You can use a level shifter with an enable, a signal switch (e.g., USB 2:1 mux like this one: http://www.ti.com/lit/ds/symlink/ts3usb221a.pdf) or even a pair of N-channel FETs for the cheapest solution.

If you can have a separate I2C bus for that peripheral and the PMIC, even better.