Indicación LED de fondo en modo de bajo consumo

1

Estoy desarrollando un dispositivo STM32L4 que la mayor parte de su tiempo duerme en el modo STOP2, se activa cuando se interrumpe, hace algún trabajo (envía datos en la radio) y vuelve a dormir.

Me gustaría agregar alguna indicación con LED, pero no quiero que esta indicación sea intrusiva. Para parpadeos raros que indican que el dispositivo está encendido, uso LPTIM1 que funciona muy bien. El LED parpadea en el pin de salida del temporizador, el dispositivo no tiene que despertarse, etc. Ahora quiero parpadear otro LED cuando se produce una interrupción en el pin GPIO. Intenté encender el led antes de hacer el trabajo principal y apagarlo justo antes de ir a STOP2, pero las cosas suceden tan rápido que los parpadeos son apenas visibles. Quiero que el LED esté encendido durante unos 100 ms. Añadir demoras no es lo que me gustaría hacer porque puede producirse una interrupción de GPIO o radio y agregar algún tipo de sección crítica solo para que parpadee un LED parece algo extraño.

La mejor idea con la que llegué es usar el retardo analógico con un par de MOSFET (la simulación indica que debería haber aproximadamente 100 ms de pulso en el LED cada vez que un pulso más corto llega al diodo), pero es posible que exista una manera de hacerlo ¿software? ¿Puede haber algunas prácticas recomendadas para implementar la indicación de 'fondo' en dispositivos STM32 de bajo consumo?

simular este circuito : esquema creado usando CircuitLab

    
pregunta asavartsov

1 respuesta

1

LPUART1 está disponible en STOP2, puede usar la salida de TX para enviar un impulso. A una frecuencia de reloj de 32768 Hz, puede configurarlo a tan solo 90 baudios. La transmisión de un byte 0xFF disminuiría la salida de TX por 9 veces el tiempo de bit (bit de inicio + 8 bits de datos). Puede invertir la salida de TX en el registro LPUART->CR2 o conectar el LED entre TX y V DD .

Por supuesto, no funcionaría si recibes datos en LPUART1 mientras duermes, porque la velocidad en baudios sería incorrecta.

    
respondido por el berendi

Lea otras preguntas en las etiquetas