Electronic – Powering an IC from a GPIO line


I've got a low power application which will be powered from a Li coin cell. I've achieved satisfactory sleeping current with my chosen MCU.

The application ADC IC however is a different matter: 900µA while inactive — way too much for a coin cell application.

So I thought why not isolate the power to the ADC when it's not in use. Two ideas came to mind: a high-side FET on the ADC's Vdd or just connecting the ADC's Vdd (or Vss) pin to one of the MCU GPIO pins (assuming current is within the MCU's source/sink spec).

I assumed there would be plenty of articles, app notes etc discussing this idea, but I've yet to find anything on line. Before I start experimenting, can anyone point me to any relevant articles/app notes online? Or is it just a bad idea? and if so why?

(Ya, know most MCUs have ADCs built in. For reasons beyond the scope of the query, I really must use this external ADC IC.)


Best Answer

Powering a device through a GPIO pin is usually a bad idea. In the very low power regime, perhaps you could get away with it, but I would not recommend it unless you have very severe constraints.

You've already noted that you've checked that the ADC's requirement is lower than the pin's drive capability. That is typically what lot of people don't bother checking. If the consumption is within the required limits, then you may be fine on that count. However, make sure that any transient current requirements from the ADC are also contained within the GPIO drive capability. You would at the very least require reasonably heavy decoupling on the ADC supply. Remember the fact that the GPIO output isn't a low impedance supply line, and will be slower to respond to transient current requirements.

Secondly, since you're using an ADC, and at that an ADC that isn't built into a uC (which would be what you should be doing for very low power consumption), I'm presuming you have some requirements which aren't satisfied by the internal ADC. The GPIO, not being a supply line, and more importantly, being a GPIO of a microcontroller, will most definitely be contaminated by atleast the clock frequency of the uC, its harmonics, and possibly subharmonics. Since you're also going to be driving some substantial current through it, I would not be surprised if other effects are brought in as well. You may even end up seeing small components of your SPI/I2C/what have you in the supply, depending on which GPIO you use and how heavy the decoupling is. If ADC resolution and noise performance is important, then perhaps this is not such a good idea even if the GPIOs seem to be capable of driving the IC.

The high side FET is a much better bet, and is safer. You could also consider using any number of power related ICs which have Enable control, such as LDOs and the like. An LDO close to the ADC supply may also help with improving performance. Note, though, that this means your ADC will have to run at a slightly lower voltage. This will happen with a simple transistor switch as well, and with a low Rdson FET the effect will, admittedly, be much smaller, but it will exist.

One thing that you should note is that connecting an unpowered IC's digital lines to GPIOs of a powered uC is not a good idea. You will end up powering up your ADC through its digital IOs and cause strange, and potentially dangerous behaviour. Specifically, I would be surprised if your ADC did not respond even when OFF. This is capable of causing long term degradation, and eats into the advantage of power saving in the first place. In order to make it turn off well, you should use a level translating buffer for every digital line between the two with the ability to disable (tristate) the outputs. This can be done either using an EN pin, perhaps, or using a buffer with other mechanisms to disable (The SN74LVC1T45 tristates if the supply on one side is pulled to ground, for instance). Whether the scheme is useful depends on the consumption of the buffer in it's OFF state, the consumption in it's ON state, and the duty cycle (the fraction of time you want to turn it ON for), and the ADC consumption (900uA) that you can save by doing this. If you are very careful, you may be able to avoid the need for the buffers by tristating the uC IOs that are connected to the ADC before shutting it off, and thereby producing about the same effect.