6 votos

STM32F103 modo de bajo consumo (parada)

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

He consultado el documento de ST sobre cómo reducir al máximo el consumo de energía del STM32F2 y he intentado seguir sus recomendaciones:

  • Ajuste de todos los pines no utilizados a AIN
  • Apagar los ADCs
  • Apagar el USB
  • Utilizando PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFE); para entrar en modo en modo STOP mientras se puede despertar con EXTI

La cosa es que el consumo de energía sigue siendo de 4,6mA (por debajo de los 15 en el modo de reposo estándar de _WFI, y alrededor de 30 cuando se hacen cosas). Las hojas de datos parecen sugerir que el consumo de energía en STOP debería ser inferior a 0,5mA.

He puesto un osciloscopio en el oscilador externo y efectivamente se para.

¿Hay algo obvio que me esté perdiendo? ¿Hay alguna manera de comprobar lo que podría estar causando el consumo extra de energía?

ACTUALIZACIÓN : He creado 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 de 4,3mA. He comprobado el circuito también - es REALMENTE básico y he medido el voltaje a través de cada resistencia (y es cero).

¿Alguna idea? Ahora mismo estoy pensando que es el regulador de voltaje LD1117 el que tiene la culpa.

6voto

Hackja4fun Puntos 21

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 y 3,3v que puedo encontrar tienen una corriente de reposo de 5mA. ¡Acabo de soldar un MIC5205 (que está clasificado para 150mA) y ahora consume 0,12mA! \o /

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X