1
\$\begingroup\$

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?

\$\endgroup\$
2
\$\begingroup\$

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.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the explanation on why this connection(in my post) can potentially fail. As you said, one of my simplest options is to use a switch to disconnect the device from the bus. So, assuming the voltage levels are the same (to avoid cost of level shifter chip), I could use an analog switch like ti.com/product/TS3A5223 to connect the device's i2c lines to the main i2c bus \$\endgroup\$ – rookie Aug 8 at 6:17
1
\$\begingroup\$

You have valid concerns. You may or may not have a problem of back-powering the slave device when Vout is active but Vldo is turned off. Most likely the slave device was designed to work properly in a situation like this and not allow the presence of voltage on the I2C lines create problems when the device is not powered. However, this may not be the case. Check the slave device's documentation.

If you have different voltages for Vout and Vldo, then the best thing to do is to add an I2C level shifter in between. I have a couple of good news for you: the circuit is extremely simple and it should also solve your back-powering problem when Vldo is turned off.

You can find information on how to implement the level shifter in this Sparkfun page or in this Philips application note.

\$\endgroup\$
  • \$\begingroup\$ Yeah, I just noticed my slave device does get back-powered as you mentioned courtesy the i2c bus. Thank you for the app note link and ideas, I am reviewing it \$\endgroup\$ – rookie Aug 8 at 2:52
  • \$\begingroup\$ There is a caveat in using the n-FET level shifter in your application that you should be aware: it's only going to work to prevent back powering of the slave device if VLDO<VOUT when they are active. The reason is that the intrinsic diode of the FET only prevents back powering from the high voltage side to the low voltage side of the level shifter. I'm not sure whether or not that's the case for you. \$\endgroup\$ – joribama Aug 8 at 3:58
  • \$\begingroup\$ Yes, the Vldo will be less or equal to the Vout.. To keep things simple, I am considering using a pair of analog switches to disconnect the device from the bus. \$\endgroup\$ – rookie Aug 8 at 6:41
  • 1
    \$\begingroup\$ No need for a more sophisticated analog switch. The pair of N-FETs will do the job. \$\endgroup\$ – joribama Aug 8 at 14:58
1
\$\begingroup\$

Well, I think there are two main options here: one is to bit-bang one I2C of the I2C interfaces, the other is to split the bus in some way with a part that can isolate the slave device you want to switch off. This could probably be done with a simple CMOS bus switch or an I2C level shifter.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.