Uso de UART en aplicaciones de alto nivel
Importante
Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).
Azure Sphere es compatible con receptores-transmisores asincrónicos universales (UART) para la comunicación en serie. Un UART es un tipo de circuito integrado que se usa para enviar y recibir datos a través de un puerto serie en un equipo o dispositivo periférico. Los UART son muy utilizados y conocidos por su sencillez. Sin embargo, a diferencia de SPI y I2C, los UART no admiten varios dispositivos subordinados.
Nota:
Este tema describe cómo usar UART en una aplicación de alto nivel. Consulte Uso de periféricos en una aplicación con respuesta en tiempo real para obtener información sobre el uso de UART en RTApps.
Las aplicaciones de alto nivel de Azure Sphere pueden comunicarse con UART mediante una llamada a las API UART de Applibs. El ejemplo UART_HighLevelApp muestra cómo comunicarse con UART en un dispositivo MT3620.
Requisitos de UART
Las aplicaciones que se comunican con los UART deben incluir los archivos de encabezado adecuados y agregar la configuración de los UART al manifiesto de aplicación.
Todas las aplicaciones deben establecer su hardware de destino e incluir el archivo de encabezado de definición de hardware correspondiente.
Archivos de encabezado
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
Declare la definición de preprocesador UART_STRUCTS_VERSION
antes de incluir el archivo de encabezado. Especifica la versión de la estructura que utiliza la aplicación.
Reemplace "rutaDeAccesoAlHardwareDeDestino.h" por la ruta de acceso al archivo de encabezado de su hardware.
Configuración del manifiesto de aplicación
La configuración de UART en el manifiesto de aplicación enumera los UART a los que la aplicación tiene acceso. Solo una aplicación puede utilizar un UART a la vez. Para configurar estas opciones, agregue la funcionalidad Uart
al manifiesto de aplicación y, a continuación, agregue cada UART a la funcionalidad. El manifiesto de aplicación de Azure Sphere tiene más detalles sobre el manifiesto de aplicación.
En el código, use las constantes que se definen para el hardware a fin de identificar los UART. El compilador traducirá estos valores a valores sin formato al compilar la aplicación.
Por ejemplo, el siguiente es un extracto de un manifiesto de aplicación que tiene como destino una placa de desarrollo de referencia (RDB) MT3620 y configura dos UART en una MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
En el siguiente extracto se muestra cómo especificar los mismos UART en una aplicación dirigida a Avnet MT3620 Starter Kit:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configuración y apertura de un UART
Antes de realizar operaciones en un UART, debe configurar las opciones y abrir el UART. Al abrir un UART, se devuelve un descriptor de archivo que pueden pasar a las funciones que realizan operaciones en el UART.
Para configurar las opciones, llame a la función UART_InitConfig para inicializar la estructura UART_Config. Después de inicializar la estructura UART_Config, puede cambiar la configuración del UART en la estructura.
Para abrir el UART y aplicar la configuración, llame a la función UART_Open y pase la estructura UART_Config.
Operaciones de lectura y escritura en un UART
Puede usar funciones POSIX para realizar operaciones de lectura y escritura en un UART. Para llevar a cabo una operación de lectura en un UART, llame a la función read(). Para llevar a cabo una operación de escritura en un UART, llame a la función write().
Cerrar un UART
Para cerrar el UART, llame a la función POSIX close().
Compatibilidad de MT3620
En esta sección describen las opciones de UART que solo se aplican cuando Azure Sphere se ejecuta en una placa de desarrollo MT3620.
Las especificaciones de UART para la placa MT3620 se enumeran en Estado de compatibilidad de MT3620. En la guía del usuario de la placa de desarrollo MT3620, se describe la distribución y la función de los pines realizar el cableado.
La carpeta HardwareDefinitions del directorio de instalación del SDK de Microsoft Azure Sphere contiene definiciones para paneles de desarrollo, módulos y chips comunes de Azure Sphere. Contiene archivos JSON y encabezados que definen las interfaces maestras para el RDB MT3620, MT3620, junto con otro hardware MT3620. La ubicación predeterminada de la carpeta HardwareDefinitions está C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
en Windows y /opt/azurespheresdk/HardwareDefinitions
en Linux.
El repositorio de ejemplos de Azure Sphere en GitHub contiene archivos JSON y encabezados que definen interfaces maestras SPI para el chip MT3620 y RDB MT3620, junto con otros hardware MT3620.>
Se admiten las siguientes configuraciones de UART. 8N1 (8 bits de datos, 1 bit de parada y sin paridad) es la configuración predeterminada:
- Al configurar la placa de desarrollo MT3620, puede usar cualquier puerto ISU como interfaz UART. Cuando se usa un puerto ISU como interfaz UART, no se puede usar el mismo puerto que la interfaz I2C o SPI.
- baud rate : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 15000000 y 2000000.
- Bit de datos: 5, 6, 7 y 8.
- Bit de detención: 1 y 2.
- Paridad: impar, par y ninguna.
- Modo de control de flujo: RTS/CTS, XON/XOFF y ningún control de flujo.
- Búfer de recepción de hardware: 32 bytes.
Cuando se usa un UART en una aplicación de alto nivel, solo se usan 4 de los 5 pines de bloque periférico ISU disponibles. La patilla sin usar se puede usar como un patilla GPIO mediante la misma aplicación de alto nivel. Consulte Periféricos de E/S para obtener una lista de las patillas ISU sin usar que se pueden reutilizar para GPIO.