Use UARTs em aplicativos de alto nível
Importante
Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) 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 a UARTs (transmissores-receptores) assíncronos universais para comunicação serial. Um UART é um tipo de circuito integrado que é usado para enviar e receber dados através de uma porta serial em um computador ou dispositivo periférico. UARTs são amplamente utilizados e conhecidos por sua simplicidade. No entanto, ao contrário de SPI e I2C, UARTs não suportam vários dispositivos subordinados.
Nota
Este tópico descreve como usar UARTs em um aplicativo de alto nível. Consulte Usar periféricos em um aplicativo com capacidade 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 APIs UART do Applibs. O exemplo de UART_HighLevelApp demonstra como se comunicar com UARTs em um dispositivo MT3620.
Requisitos UART
Os aplicativos que se comunicam com UARTs devem incluir os arquivos de cabeçalho apropriados e adicionar configurações UART ao manifesto do aplicativo.
Todos os aplicativos devem definir seu hardware de destino e incluir o arquivo de cabeçalho de 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 do UART_STRUCTS_VERSION
pré-processador antes de incluir o arquivo de cabeçalho. Isso especifica a versão struct que é usada pelo aplicativo.
Substitua "path-to-your-target-hardware.h" pelo caminho para o arquivo de cabeçalho do seu hardware.
Configurações de manifesto do aplicativo
As configurações de UART no manifesto do aplicativo listam as UARTs que são acessadas pelo aplicativo. Apenas um aplicativo pode usar um UART de cada vez. Para definir essas configurações, adicione o Uart
recurso ao manifesto do aplicativo e, em seguida, adicione cada UART ao recurso. O manifesto do aplicativo Azure Sphere tem mais detalhes sobre o manifesto do aplicativo.
No código, use as constantes definidas para o hardware para identificar as UARTs. O compilador traduzirá esses valores em valores brutos quando você criar o aplicativo.
Por exemplo, aqui está um trecho de um manifesto de aplicativo que tem como alvo uma placa de desenvolvimento de referência (RDB) MT3620 e configura duas UARTs em uma MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
O trecho a seguir mostra como especificar as mesmas UARTs em um aplicativo destinado ao Avnet MT3620 Starter Kit:
"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, um descritor de arquivo é retornado que você pode passar para funções que executam operações no UART.
Para definir as configurações, chame a função UART_InitConfig para inicializar o UART_Config struct. Depois de inicializar a UART_Config struct, você pode alterar as configurações UART na struct.
Para abrir o UART e aplicar as configurações, chame a função UART_Open e passe a UART_Config struct.
Executar operações de leitura e gravação em um UART
Você pode usar funções POSIX para executar 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 MT3620
Esta seção descreve as opções UART que só se aplicam ao executar o Azure Sphere em um MT3620.
As especificações UART para o MT3620 estão listadas no Status de suporte do MT3620. O guia do usuário da placa de desenvolvimento MT3620 descreve o layout do pino e as funções da 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 Azure Sphere Samples no GitHub contém arquivos de cabeçalho e JSON que definem interfaces mestras SPI para o chip MT3620 e RDB MT3620, juntamente com outro hardware MT3620.-->
As seguintes configurações de UART são suportadas. 8N1 (8 bits de dados, 1 bit de parada e sem paridade) é a configuração padrão:
- Ao configurar a placa de desenvolvimento MT3620, você pode usar qualquer porta ISU como uma interface UART. Quando você usa uma porta ISU como uma interface UART, você não pode usar a mesma porta que uma interface 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.
- Stop bit: 1 e 2.
- Paridade: ímpar, par e nenhum.
- 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.