Utilizar UARTs em aplicações de alto nível
O Azure Sphere suporta transmissores recetores assíncronos universais (UARTs) para comunicação em série. Um UART é um tipo de circuito integrado que é utilizado para enviar e receber dados através de uma porta de série num computador ou dispositivo periférico. As UARTs são amplamente utilizadas e conhecidas pela sua simplicidade. No entanto, ao contrário do SPI e do I2C, os UARTs não suportam vários dispositivos subordinados.
Nota
Este tópico descreve como utilizar UARTs numa aplicação de alto nível. Veja Utilizar periféricos numa aplicação com capacidade em tempo real para obter informações sobre a utilização de UART no RTApps.
As aplicações de alto nível do Azure Sphere podem comunicar com UARTs ao chamar APIs UART do Applibs. O exemplo de UART_HighLevelApp demonstra como comunicar com UARTs num dispositivo MT3620.
Requisitos de UART
As aplicações que comunicam com UARTs têm de incluir os ficheiros de cabeçalho adequados e adicionar definições UART ao manifesto da aplicação.
Todas as aplicações têm de definir o hardware de destino e incluir o ficheiro de cabeçalho de definição de hardware correspondente.
Ficheiros 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é-processamento antes de incluir o ficheiro de cabeçalho. Isto especifica a versão de estrutura que é utilizada pela aplicação.
Substitua "path-to-your-target-hardware.h" pelo caminho para o ficheiro de cabeçalho do hardware.
Definições do manifesto da aplicação
As definições de UART no manifesto da aplicação listam as UARTs que são acedidas pela aplicação. Apenas uma aplicação pode utilizar um UART de cada vez. Para configurar estas definições, adicione a Uart
capacidade ao manifesto da aplicação e, em seguida, adicione cada UART à capacidade. O manifesto da aplicação do Azure Sphere tem mais detalhes sobre o manifesto da aplicação.
No seu código, utilize as constantes definidas para o seu hardware para identificar as UARTs. O compilador irá traduzir estes valores para valores não processados quando criar a aplicação.
Por exemplo, eis um excerto de um manifesto de aplicação que visa um quadro de desenvolvimento de referência (RDB) MT3620 e configura dois UARTs num MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
O seguinte excerto mostra como especificar os mesmos UARTs numa aplicação que tem como destino o Avnet MT3620 Starter Kit:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configurar e abrir um UART
Antes de realizar operações num UART, tem de configurar as definições e abrir o UART. Quando abre um UART, é devolvido um descritor de ficheiros que pode transmitir para funções que executam operações no UART.
Para configurar as definições, chame a função função função UART_InitConfig para inicializar a estrutura UART_Config Struct . Depois de inicializar a estrutura UART_Config, pode alterar as definições de UART na estrutura.
Para abrir o UART e aplicar as definições, chame a função UART_Open e transmita a estrutura UART_Config.
Executar operações de leitura e escrita num UART
Pode utilizar funções POSIX para realizar operações de leitura e escrita num UART. Para executar uma operação de leitura num UART, chame a função read(). Para executar uma operação de escrita num UART, chame a função write().
Fechar um UART
Para fechar o UART, chame a função POSIX close().
Suporte de MT3620
Esta secção descreve as opções de UART que só se aplicam ao executar o Azure Sphere num MT3620.
As especificações UART para o MT3620 estão listadas no Estado de Suporte do MT3620. O guia do utilizador do quadro de desenvolvimento MT3620 descreve o esquema de pinos e as funções para cablagem.
A pasta HardwareDefinitions no diretório de instalação do SDK do Microsoft Azure Sphere contém definições para quadros de desenvolvimento, módulos e chips comuns do Azure Sphere. Contém ficheiros de cabeçalho e JSON que definem as interfaces mestras para o RDB MT3620, MT3620, juntamente com outro hardware MT3620. A localização predefinida para a pasta HardwareDefinitions é C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
no Windows e /opt/azurespheresdk/HardwareDefinitions
no Linux.
São suportadas as seguintes definições de UART. 8N1 (8 bits de dados, 1 bit de paragem e sem paridade) é a predefinição:
- Quando configurar o quadro de programador MT3620, pode utilizar qualquer porta ISU como uma interface UART. Quando utiliza uma porta ISU como uma interface UART, não pode utilizar a mesma porta que uma interface I2C ou SPI.
- taxa de baud: 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 paragem: 1 e 2.
- Paridade: ímpar, par, e nenhum.
- Modo de controlo de fluxo: RTS/CTS, XON/XOFF e sem controlo de fluxo.
- Memória intermédia de receção de hardware: 32 bytes.
Ao utilizar um UART numa aplicação de alto nível, são utilizados apenas 4 dos 5 pinos de blocos periféricos ISU disponíveis. O pin não utilizado pode ser utilizado como um pin GPIO pela mesma aplicação de alto nível. Veja Periféricos de E/ S para obter uma lista dos pinos ISU não utilizados que podem ser reutilizados para GPIO.