Espere a que STM32L073RZ se congele en modo de parada

3

Con mi STM32 estoy intentando configurar un modo de suspensión profunda y uso RTC para generar interrupciones (en realidad cada 30 segundos).

Cuando se inicia mi STM, este configura el RTC y entra directamente en modo de parada. Después de 30 segundos, la placa se está despertando y usa Serial para configurar el módulo de Radio LoRa RN2483 con la comunicación Serial y también usa I2C para leer y escribir algunos datos. Pero para la configuración del RN2483, tenemos que esperar la respuesta (tarda unos 3 segundos).

Después de eso, el STM entra de nuevo en modo de suspensión profunda. Esto es un bucle. Si este período entre dos de Deepsleep toma demasiado tiempo (debido a la espera o la impresión, por ejemplo), el próximo DeepSleep estará mal configurado y el STM nunca volverá a activarse y el consumo de energía es alto.

¿Alguien tiene alguna idea?

¿Quizás necesito revisar algunos registros de sueño profundo o algo así?

EDITAR: Esta es una foto de mi máquina de estado.

Para la configuración de DeepSleep, este es mi script a continuación

void STM32_DeepSleep(void){
    //Clear bits
    EXTI->PR &= 0xFF840000;
    //Enter in stopmode
    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON | PWR_CR_CWUF | PWR_CR_ULP | PWR_CR_FWU , PWR_STOPENTRY_WFI);
}

Después de algunas investigaciones, el problema proviene de la función __WFI (). Debido a un largo tiempo antes, el __WFI () se congela. Tal vez un perro guardián dentro del STM32 haga que el script se congele?

    
pregunta Simon NOWAK

0 respuestas

Lea otras preguntas en las etiquetas