Usar UARTs em aplicativos de alto nível
Importante
Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).
O Azure Sphere dá suporte para receptores-transmissores assíncronos universais (UARTs) para comunicação serial. Um UART é um tipo de circuito integrado usado para enviar e receber dados por meio de uma porta serial em um computador ou dispositivo periférico. Os UARTs são amplamente utilizados e conhecidos pela simplicidade. No entanto, diferentemente de SPI e I2C, os UARTs não dão suporte para vários dispositivos subordinados.
Observação
Este tópico descreve como usar UARTs em um aplicativo de alto nível. Confira Usar periféricos em um aplicativo com funcionalidade de tempo real para obter informações sobre o uso de UART em RTApps.
Os aplicativos de alto nível do Azure Sphere podem se comunicar com UARTs chamando as APIs de UART de Applibs. O exemplo de UART_HighLevelApp demonstra como comunicar-se com UARTs em um dispositivo MT3620.
Requisitos de UART
Os aplicativos que se comunicam com UARTs devem incluir os arquivos de cabeçalho apropriados e adicionar as configurações de UART ao manifesto do aplicativo.
Todos os aplicativos devem definir hardware de destino deles e incluir o arquivo de cabeçalho da definição de hardware correspondente.
Arquivos de cabeçalho
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
Declare a definição de pré-processador UART_STRUCTS_VERSION
antes de incluir o arquivo de cabeçalho. Isso especifica a versão da estrutura que é usada pelo aplicativo.
Substitua "path-to-your-target-hardware.h" pelo caminho para o arquivo de cabeçalho do seu hardware.
Configurações do manifesto do aplicativo
As configurações de UART no manifesto do aplicativo listam os UARTs que são acessados pelo aplicativo. Apenas um aplicativo pode usar um UART por vez. Para definir essas configurações, adicione a funcionalidade Uart
ao manifesto do aplicativo e, em seguida, adicione cada UART à funcionalidade. O manifesto do aplicativo do Azure Sphere tem mais detalhes sobre o manifesto do aplicativo.
Em seu código use as constantes definidas para seu hardware para identificar os UARTs. O compilador converterá esses valores em valores brutos quando você criar o aplicativo.
Por exemplo, veja um trecho de um manifesto do aplicativo que direciona uma RDB (placa de desenvolvimento de referência) do MT3620 e configura dois UARTs em um MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
O seguinte trecho mostra como especificar os mesmos UARTs em um aplicativo que direciona o Kit de Início do Avnet MT3620:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configurar e abrir um UART
Antes de executar operações em um UART, você deve definir as configurações e abrir o UART. Quando você abre um UART, é retornado um descritor de arquivo que você pode passar para as funções que executam operações no UART.
Para definir as configurações, chame a função UART_InitConfig para inicializar o struct UART_Config. Depois de inicializar o struct UART_Config, você pode alterar as configurações do UART no struct.
Para abrir o UART e aplicar as configurações, chame a função UART_Open e passe o struct UART_Config.
Executar operações de leitura e gravação em um UART
Você pode usar as funções POSIX para realizar operações de leitura e gravação em um UART. Para executar uma operação de leitura em um UART, chame a função read(). Para executar uma operação de gravação em um UART, chame a função write().
Fechar um UART
Para fechar o UART, chame a função POSIX close().
Suporte à placa de desenvolvimento MT3620
Esta seção descreve as opções do UART que se aplicam exclusivamente à execução do Azure Sphere em um MT3620.
As especificações de UART do MT3620 estão na lista de Status de suporte para MT3620. O Guia do usuário da placa de desenvolvimento MT3620 descreve o layout e as funções do pino para fiação.
A pasta HardwareDefinitions no diretório de instalação do SDK do Microsoft Azure Sphere contém definições para placas, módulos e chips de desenvolvimento comuns do Azure Sphere. Ele contém arquivos de cabeçalho e JSON que definem as interfaces mestras para o MT3620, MT3620 RDB, juntamente com outro hardware MT3620. O local padrão para a pasta HardwareDefinitions é C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
no Windows e /opt/azurespheresdk/HardwareDefinitions
no Linux.
O repositório de Exemplos do Azure Sphere no GitHub contém arquivos de cabeçalho e JSON que definem interfaces mestras SPI para o chip MT3620 e o RDB MT3620, juntamente com outro hardware MT3620.-->
Há suporte para as configurações de UART a seguir. 8N1 (8 bits de dados, 1 bit de parada e nenhuma paridade) é a configuração padrão:
- Quando você configura a placa de desenvolvimento MT3620, pode usar qualquer porta ISU como uma interface UART. Quando você usa uma porta ISU como uma interface de UART, não pode usar a mesma porta como uma interface de I2C ou SPI.
- taxa de transmissão: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 e 2000000.
- Bit de dados: 5, 6, 7 e 8.
- Bit de parada: 1 e 2.
- Paridade: ímpar, par e nenhuma.
- Modo de controle de fluxo: RTS / CTS, XON / XOFF e sem controle de fluxo.
- Buffer de recebimento de hardware: 32 bytes.
Ao usar um UART em um aplicativo de alto nível, apenas 4 dos 5 pinos de bloco periférico ISU disponíveis são usados. O pino não utilizado pode ser usado como um pino GPIO pelo mesmo aplicativo de alto nível. Consulte periféricos de E/S para obter uma lista dos pinos ISU não utilizados que podem ser reutilizados para GPIO.