Tengo una placa de circuito con STM32L433 que tiene alrededor de 320uA de consumo de corriente de línea de base en el modo STOP 2. Solo LSE con un cristal de 32 kHz está activo.
La placa tiene alimentación Vdda analógica separada que está desactivada para el modo de parada. (atado al suelo). Antes de deshabilitar Vdda, ADC, DAC y OPAMP se deshabilitan y sus pines se ponen en modo OD bajo.
La configuración se realizó con el software STM32CubeMX.
¿Alguna idea de cómo depurar esto? Desconecté y medí prácticamente todos los periféricos externos para ver qué es la corriente de dibujo, pero parece que el STM32L433 es el culpable.
Estoy midiendo la corriente con un osciloscopio usando una resistencia de 2ohm en serie con la batería. El LDO podría ser responsable de 20uA de la misma, que aún deja 300uA sin contabilizar.
EDIT:
~ 120uA de esto estaba usando STOP 0 en lugar de STOP 2. Esto fue dejado de alguna experimentación. Ahora estoy a 200uA. También he desconectado los chips BMI160 y DRV2603. Y no son el problema.
EDIT2
He soldado otra placa con solo un STM32L433 y un LDO LP5907-3.0 y un par de condensadores de desacoplamiento. EL MISMO PROBLEMA.
Este es el código mínimo que utilicé para configurar los GPIO
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE()
;
__HAL_RCC_GPIOH_CLK_ENABLE()
;
__HAL_RCC_GPIOA_CLK_ENABLE()
;
__HAL_RCC_GPIOB_CLK_ENABLE()
;
GPIO_InitStruct.Pin = 0xFFFFFFFF;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOA, GPIO_InitStruct.Pin, GPIO_PIN_SET);
GPIO_InitStruct.Pin = 0xFFFFFFFF;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOB, GPIO_InitStruct.Pin, GPIO_PIN_SET);
GPIO_InitStruct.Pin = 0xFFFFFFFF;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOC, GPIO_InitStruct.Pin, GPIO_PIN_SET);
GPIO_InitStruct.Pin = 0xFFFFFFFF;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOH, GPIO_InitStruct.Pin, GPIO_PIN_SET);
//BOOT0 PIN
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
EDIT3
El pin USB DM flota cuando el USB es el modo de bajo consumo. Esto causó el drow actual visto 200uA. Al tirar de este pin hacia abajo, se extrae el 200uA. Ahora estoy tratando de encontrar una manera de evitar esto en el firmware.