STM32F103 modo de bajo consumo (parada)

5

Tengo un proyecto en el que estoy tratando de reducir el consumo de energía lo más posible (en un STM32F103RCT6).

Miré el documento de ST sobre cómo reducir al mínimo el consumo de energía del STM32F2 y traté de seguir sus recomendaciones:

  • Configuración de todos los pines no utilizados en AIN
  • Desactivar los ADC
  • apaga el USB
  • utilizando PWR_EnterSTOPMode (PWR_Regulator_LowPower, PWR_STOPEntry_WFE); ir en el modo STOP mientras se puede despertar con EXTI

Lo cierto es que el consumo de energía sigue siendo de 4,6 mA (en comparación con 15 en el modo estándar de suspensión de WFI, y alrededor de 30 cuando realmente estamos haciendo cosas). Las hojas de datos parecen sugerir que el consumo de energía en STOP debería estar por debajo de 0,5 mA.

He puesto un alcance en el oscilador externo y eso realmente se detiene.

¿Hay algo obvio que me esté perdiendo? ¿Hay alguna forma de que compruebe qué podría estar causando el consumo de energía adicional?

ACTUALIZACIÓN : se me ocurrió un programa de prueba muy simple, derivado del código de ejemplo de ST:

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure;


int main(void)
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_Init(GPIOE, &GPIO_InitStructure);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
                         RCC_APB2Periph_GPIOE, DISABLE);  

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

  while (1) PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
}

El consumo de energía con esto sigue siendo 4.3mA. También he comprobado el circuito: es REALMENTE básico y he medido el voltaje en cada resistencia (y es cero).

¿Alguna idea? ¡Actualmente estoy pensando que en realidad es el regulador de voltaje LD1117 el que tiene la culpa!

    
pregunta Gordon Williams

1 respuesta

4

Wilhelmsen y Chris tenían razón: era el circuito.

Sin embargo, no eran resistencias, IO externas, etc. Era el Regulador de Voltaje LD1117 que no había considerado antes.

Resulta que casi todos los reguladores de voltaje LDO de 1A, 3.3v que puedo encontrar tienen una corriente de reposo de 5mA. ¡Acabo de soldar un MIC5205 (que está clasificado para 150 mA) y ahora extrae 0.12 mA! \ o /

    
respondido por el Gordon Williams

Lea otras preguntas en las etiquetas