UART para depuración de dispositivos integrados: Mejores prácticas para dispositivos de bajo consumo

Mientras que el USB tomó protagonismo en la mayoría de los periféricos, el transmisor receptor asíncrono universal (UART) sigue vigente en el mundo de los sistemas integrados: se utiliza para depurar todo tipo de dispositivos, desde módulos GPS hasta placas Raspberry Pi y Arduino.

Sin embargo, a medida que ampliamos los límites de los diseños de consumo ultrabajo, los desarrolladores se preguntan a menudo: ¿El UART es un asesino silencioso de la batería? La respuesta es breve: No, no tiene por qué serlo. Como cualquier buena herramienta, todo depende de cómo se implemente. Veámoslo por partes.

Vigile la corriente de fuga TX/RX

Una forma sencilla de evitar el consumo innecesario de energía es controlar la corriente de fuga de los canales de transmisión (TX) y recepción (RX). Si bien las fugas elevadas no son muy comunes, siempre es mejor comprobar y abordar los posibles problemas desde el principio para evitar un consumo de energía inesperado más adelante.

Escriba y ejecute código con una mentalidad de bajo consumo

Piense en el UART como su navaja suiza de depuración: muy útil durante el desarrollo, pero no la llevaría abierta en el bolsillo todo el tiempo. Un movimiento inteligente consiste en utilizar #define en el código a fin de activar el UART para depuración y desactivarlo cuando el dispositivo esté en producción. Es un truco sencillo, pero puede ahorrarle pesadillas en el mundo real.

Imagine esto: usted y su equipo están enfocados en minimizar el consumo de energía. Realizan mediciones continuas de corriente y observan grandes progresos. Durante el desarrollo, deja el UART activado para la depuración y acepta el consumo de energía temporal. Pero luego, alguien accidentalmente fusiona ese código en la rama principal, con el UART aún activado, y se transmite a millones de dispositivos. De repente, su diseño, antes eficiente, agota las baterías como una máquina recreativa y tiene un montón de clientes descontentos.

¿Cuál es la solución? Establezca un sistema de integración continua con referencias de consumo actuales. De este modo, detectará este tipo de problemas antes de que se conviertan en errores costosos. Piense que se trata de una red de seguridad automática que controla esos amperios mucho antes de que su código llegue a producción.

Asegúrese de apagar todo

Habilitar el UART puede activar múltiples partes de su software, incluidos varios bloques de microcontroladores (MCU) y relojes. Los MCU suelen diseñarse con todo activado por defecto para facilitar el desarrollo. Sin embargo, es crucial desactivar los componentes innecesarios antes de que el MCU entre en modo de reposo. Si los relojes UART permanecen activados, pueden impedir que el MCU alcance su estado de reposo más profundo, lo que provocaría un mayor consumo de energía. Revise su árbol de relojes y asegúrese de que todos los componentes vinculados al UART estén correctamente apagados cuando no se necesiten.

Experimento Otii en acción

Comparemos dos versiones de firmware que se ejecutan en el mismo dispositivo, el Seeed Studio XIAO nRF52840 de Seeed Technology. Preparamos un script de ejemplo que inicia el módulo, configura la memoria flash, ejecuta una breve secuencia de parpadeo del LED y, luego, coloca el módulo en su modo de energía más bajo. Una versión tiene el UART activado, mientras que la otra funciona sin UART. Con Otii Ace Pro de Qoitech, medimos el consumo actual para analizar y comparar el consumo de energía de ambas versiones a diferentes niveles de voltaje.

En la Figura 1, se observa el dispositivo enviando mensajes UART de forma activa, mientras que la Figura 2 muestra la MCU en modo reposo. La línea azul indica que el UART está activada, mientras que la línea naranja muestra que está desactivada. La diferencia muestra el impacto que el UART puede tener en el consumo de energía.

Figura 1: Dispositivo SeeedStudio XIAO nRF52840 activo con comunicación UART | Activada (gráfico azul) | Desactivada (gráfico naranja). (Fuente de la imagen: Qoitech)

Figura 2: Dispositivo XIAO nRF52840 en modo de menor potencia (parte seleccionada del gráfico) con comunicación UART | Activada (gráfico azul) | Desactivada (gráfico naranja). (Fuente de la imagen: Qoitech)

En modo activo, el consumo de corriente promedio aumentó de 460 μA a 1.34 mA (como se muestra en la Figura 1). En modo de reposo, el consumo de corriente pasa de 2.27 μA a 2.19 μA (Figura 2). Si bien puede parecer una diferencia insignificante, los períodos de reposo prolongados típicos de los dispositivos IoT hacen que este aumento sea significativo para la duración de la batería. Es evidente que el firmware está optimizado para cuando el UART esté desactivado.

Estimación de la duración de la batería utilizando Otii

Para ilustrar el impacto en la duración de la batería, utilizamos el estimador de duración de la batería de la aplicación de escritorio Otii. Se asume un período activo por hora, en el que el dispositivo se activa, ejecuta la secuencia de parpadeo y, luego, se desactiva durante casi 3600 segundos.

En la Figura 3, el UART está desactivado y, en la Figura 4, está activado, lo que demuestra la diferencia significativa en la duración de la batería dependiendo de si el UART se utiliza o no.

Figura 3: Estimación de la duración de la batería con la comunicación UART desactivado. (Fuente de la imagen: Qoitech)

Figura 4: Estimación de la duración de la batería con la comunicación del UART activado. (Fuente de la imagen: Qoitech)

¡La diferencia es enorme! La duración estimada de la batería baja de 5.9 años a solo 11.6 días cuando se deja activado el UART.

La clave es asegurarse de que todo lo relacionado con el UART esté apagado antes de que el MCU entre en modo de reposo. Integrar esto en su proceso de integración continua con Otii Product Suite le ayudará a evitar lanzamientos accidentales con el UART activado, lo que podría reducir considerablemente la duración de la batería de su dispositivo.

Información sobre el autor

Image of Qoitech

Qoitech offers the Otii product series, designed to help companies extend battery life throughout the prototype, development, and maintenance phases, getting insights beyond datasheets. With real-time measurements, Otii enables the optimization of devices, battery profiling, and selecting the most suitable batteries. Whether you're working from home, your desk, or outside, Otii provides a versatile on-the-bench solution.

Used by developers and teams in 3,500+ companies across more than 65 countries, Otii consists of powerful hardware options: Otii Arc, supporting up to 5V, and Otii Ace, supporting up to 25V. Coupled with the Otii Pro software, enhanced with two robust add-ons - the Battery Toolbox and Automation Toolbox - Qoitech delivers a comprehensive solution to enhance battery performance and overall device efficiency.

By leveraging Qoitech's Otii products, companies can confidently optimize battery usage, extend battery life, and streamline their development processes, resulting in improved product reliability and customer satisfaction. Qoitech empowers developers worldwide to achieve their battery life goals and deliver exceptional IoT devices.

More posts by Qoitech
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum