Consumo de corriente en MCU

Estoy usando STM32F051 MCU en mi proyecto. El requisito del sistema es un consumo mínimo de corriente. Las señales que estoy procesando son de muy baja frecuencia (casi DC) Disminuyo la frecuencia del sistema de 48 MHz a 8 MHz (apago PLL) y apenas veo una disminución en la corriente de mi placa. Disminución de aproximadamente 5 mA. En la hoja de datos, hablan de ~25 mA de disminución comparando 48 MHz con 8 MHz. ¿Sabes por qué?

Estoy usando GPIO, 3 temporizadores, UART y ADC (3 canales)

¿La aplicación utiliza un modo de suspensión cuando está inactiva? Eso podría explicarlo. Algunos sistemas operativos integrados hacen eso.
no, solo modo ejecución
No es una respuesta, sino algo en lo que pensar: hice un proyecto sustancial basado en un STM32F1 que incluía muchas técnicas de ahorro de energía. Más tarde, exploré la serie STM32L1, que era mucho, mucho mejor en cuanto a bajo consumo de energía. Si no está bloqueado en su uC, es posible que desee buscar en un STM32L0 o STM32L1...

Respuestas (3)

Estoy usando el F051 en dos proyectos y encontré que los valores de la hoja de datos son bastante precisos, aunque no he hecho una inspección completa como hice con otros micros.

Mis puntos de muestra son muy limitados, pero se tomaron con solo un conjunto mínimo de periféricos activos (suma de Ivdd e Ivdda):

  • Usando el oscilador interno:
    • 1 MHz: 0,96 mA
    • 0,5 MHz: 0,75 mA
  • HSE en derivación:
    • 1 MHz: 0,79 mA
    • 0,5 MHz: 0,54 mA

Y los valores en la hoja de datos están bastante cerca de eso. Es un poco complicado encontrar los valores que son realistas, pero la tabla de valores típicos en modo de ejecución con el procesamiento de datos que se ejecuta desde flash es bastante útil:

consumo de corriente típico en modo de ejecución

Entonces, este le dice que con los periféricos deshabilitados (que está cerca de su caso de uso) obtendría alrededor de 8 mA al reducir la frecuencia de 48 MHz a 8 MHz.

El ADC es un componente un poco derrochador que no estoy seguro de cómo escala con la frecuencia, pero sospecho que no escala muy bien.

Debería ver una caída de 17 mA al cambiar a 8 Mhz.

La hoja de datos especifica 22 mA a 48 MHz con PLL y todos los periféricos habilitados (pero no en uso). Y 4.4 mA @ 8Mhz con PLL deshabilitado y todos los periféricos habilitados.
Esto tampoco tiene en cuenta ninguna corriente utilizada por ADC/DAC o GPIO.

Cualquier GPIO pull-up/down o impulsado debe agregarse a esto. También se deben agregar muestras del ADC y la carga en el DAC.

Cualquier pin que no use, ¿debo configurarlo como predeterminado (GPIO IN) o configurarlo como Analog_in o de lo contrario?
@Daniel_ee571 para otros miembros de la familia STM32 al ponerlos analog inresultó en la menor toma de corriente (puede causar problemas de EMI si no se conecta, tenga eso en cuenta).
@Daniel_ee571 Ver AN4538. Aunque no para F051, estará en la dirección correcta.

Incluso si uso mi MCU a una frecuencia de reloj de 1 Hz (¡eso es muy lento!) pero conecto una resistencia + LED a GND a una de las salidas y hago que el LED se ilumine, puedo hacer que la configuración use digamos 10 mA. Apague el LED y consume 1 uA.

Mi punto es: el consumo de corriente de cualquier MCU no solo depende de la frecuencia de reloj que esté usando, sino también de lo que esté conectado a las salidas. Si una salida tiene que entregar corriente (como en mi ejemplo de LED anterior), verá que la corriente vuelve a la corriente de suministro.

Además, una MCU en espera consumirá mucha menos corriente que la misma MCU ejecutando algunos cálculos pesados.

Debe determinar dónde se consume la corriente. Apague tantos bloques como sea posible y vuelva a encenderlos uno por uno para determinar qué bloque consume cuánto.

También tenga en cuenta que el consumo de corriente puede variar mucho, la mayoría de los productos de bajo consumo dependen de un ciclo de trabajo bajo . Digamos que una MCU consume 10 mA cuando está activa, pero solo está activa durante 1 segundo cada 5 minutos. Entonces la corriente promedio es:

1 seg / (5 x 60 seg) * 10 mA = 1/300 * 10 mA = 33 uA

Esa es la corriente promedio, por lo que cuando funciona con una batería, eso podría resultar en una vida útil de la batería de muchos meses (dependiendo de la batería, por supuesto).

El consumo de corriente del núcleo dependerá del reloj. Pero, por supuesto, esa corriente es una gota en el océano en comparación con cosas como GPIO y LED.