通过GPIO引脚为设备供电通常不是一个好主意。在非常低的权力体制下,也许您可以摆脱它,但是除非您有非常严格的限制,否则我不建议您这样做。
您已经注意到,您已经检查过ADC的要求是否低于引脚的驱动能力。通常,这是很多人不用费心检查的事情。如果消耗量在要求的限制之内,那么您可能会感到满意。但是,请确保GPIO驱动功能中也包含ADC的任何瞬态电流要求。您至少需要在ADC电源上进行相当大的去耦。请记住,GPIO输出不是低阻抗电源线,并且响应瞬态电流要求的速度较慢。
其次,由于您使用的是ADC,而且那不是uC内置的ADC(对于非常低的功耗,您应该这样做),所以我假设您有一些要求,这些要求并非如此。 t由内部ADC满足。GPIO,不是电源线,更重要的是,它是微控制器的GPIO,肯定会被uC的时钟频率,其谐波以及可能的次谐波所污染。由于您还将通过它驱动大量电流,因此,如果还引入其他效果,我也不会感到惊讶。您甚至可能最终看到SPI / I2C /的小组件,这取决于您使用的GPIO以及去耦的强度。如果ADC的分辨率和噪声性能很重要,
高端FET更好,更安全。您也可以考虑使用任意数量的具有Enable控制的电源相关IC,例如LDO等。靠近ADC电源的LDO也可能有助于改善性能。但是请注意,这意味着您的ADC必须在稍低的电压下运行。当然,这也将通过简单的晶体管开关来实现,并且在低Rdson FET的情况下,效果会小得多,但它仍然存在。
您应该注意的一件事是,将未供电的IC的数字线路连接到供电的uC的GPIO并不是一个好主意。您最终将通过其数字IO为ADC供电,从而导致奇怪的甚至潜在的危险行为。具体来说,如果您的ADC即使关闭也没有响应,我会感到惊讶。这能够引起长期的劣化,并且首先具有节电的优点。为了使其关闭良好,您应该为两个之间的每条数字线路使用电平转换缓冲器,以禁用(三态)输出。既可以使用EN引脚,也可以使用带有其他机制的缓冲器来禁用此功能(例如,如果一侧的电源接地,则SN74LVC1T45处于三态)。该方案是否有用取决于缓冲区处于关闭状态的消耗,处于打开状态的消耗,占空比(要为其开启的时间的一部分)以及ADC消耗(900uA)您可以这样做来节省。如果您非常小心,则可以通过在关闭ADC之前使连接到ADC的uC IO处于三态,从而避免使用缓冲区,从而产生大致相同的效果。