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)
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):
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:
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.
analog in
resultó en la menor toma de corriente (puede causar problemas de EMI si no se conecta, tenga eso en cuenta).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).
fgrieu
burro
bitsmack