Compartir vía


Usar UART en aplicaciones de alto nivel

Azure Sphere admite receptores asincrónicos universales (UART) para la comunicación serial. 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 ampliamente utilizados y conocidos por su sencillez. Sin embargo, a diferencia de SPI e I2C, los UART no admiten múltiples dispositivos subordinados.

Nota

En este tema se describe cómo usar UART en una aplicación de alto nivel. Consulta Usar periféricos en una aplicación compatible con 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 llamando a las API de UART de Applibs. El UART_HighLevelApp muestra cómo comunicarse con UART en un dispositivo MT3620.

Requisitos de UART

Las aplicaciones que se comunican con UART deben incluir los archivos de encabezado adecuados y agregar la configuración de UART al manifiesto de la 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"

Declara la definición del UART_STRUCTS_VERSION preprocesador antes de incluir el archivo de encabezado. Esto especifica la versión struct que usa la aplicación.

Reemplace "path-to-your-target-hardware.h" por la ruta de acceso al archivo de encabezado del hardware.

Configuración de manifiesto de la aplicación

La configuración de UART en el manifiesto de la aplicación enumera los UART a los que accede la aplicación. Solo una aplicación puede usar un UART a la vez. Para configurar estas opciones, agregue la Uart funcionalidad al manifiesto de la aplicación y, a continuación, agregue cada UART a la funcionalidad. El manifiesto de la aplicación Azure Sphere tiene más detalles sobre el manifiesto de la aplicación.

En su código, utilice las constantes que se definen para su hardware para identificar los UART. El compilador traducirá estos valores a valores RAW al crear la aplicación.

Por ejemplo, este es un extracto de un manifiesto de aplicación que se centra en un panel de desarrollo de referencia de MT3620 (RDB) y configura dos UART en un MT3620.

"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],

El siguiente extracto muestra cómo especificar los mismos UART en una aplicación que se centra en el kit de inicio Avnet MT3620:

"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],

Configurar y abrir 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 puede pasar a funciones que realizan operaciones en el UART.

Para configurar las opciones, llame a la función función UART_InitConfig para inicializar el UART_Config Struct struct. Después de inicializar el UART_Config struct, puede cambiar la configuración de UART en la estructura.

Para abrir el UART y aplicar la configuración, llame a la función UART_Open y pase la UART_Config estructura.

Realizar operaciones de lectura y escritura en un UART

Puede usar funciones POSIX para realizar operaciones de lectura y escritura en un UART. Para realizar una operación de lectura en un UART, llame a la función read(). Para realizar 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 con MT3620

En esta sección se describen las opciones de UART que solo se aplican al ejecutar Azure Sphere en un MT3620.

Las especificaciones de UART para el MT3620 se enumeran en Estado de soporte técnico de MT3620. La guía de usuario de la placa de desarrollo MT3620 describe el diseño de los pines y las funciones de cableado.

La carpeta HardwareDefinitions del directorio de instalación del SDK de Sphere de Microsoft Azure contiene definiciones para placas de desarrollo, módulos y chips comunes de Azure Sphere. Contiene archivos de encabezado y JSON que definen las interfaces maestras para el MT3620, MT3620 RDB, junto con otro hardware MT3620. La ubicación predeterminada para la carpeta HardwareDefinitions se encuentra C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions en Windows y /opt/azurespheresdk/HardwareDefinitions en Linux.

Se admiten las siguientes opciones de configuración de UART. 8N1 (8 bits de datos, 1 bit de detención y ninguna paridad) es la configuración predeterminada:

  • Al configurar la placa de desarrollo MT3620, puede usar cualquier puerto ISU como interfaz de UART. Cuando utiliza un puerto ISU como interfaz de UART, no puede utilizar el mismo puerto que una interfaz I2C o SPI.
  • tasa en baudios: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 y 2000000.
  • Bit de datos: 5, 6, 7 y 8.
  • Bit de detención: 1 y 2.
  • Paridad: impar, par y ninguno.
  • Modo de control de flujo: RTS/CTS, XON/XOFF, y ningún control de flujo.
  • Búfer de recepción de hardware: 32 bytes.

Al usar un UART en una aplicación de alto nivel, solo se usan 4 de los 5 pin de bloque periférico ISU disponibles. El pin sin usar se puede usar como un pin de GPIO por la misma aplicación de alto nivel. Consulta Periféricos de E/S para obtener una lista de los pin de ISU que no se usan y que se pueden volver a usar para GPIO.