Share via


Usar UARTs em aplicativos de alto nível

O Azure Sphere dá suporte a UARTs (receptores assíncronos) universais para comunicação serial. Um UART é um tipo de circuito integrado que é usado para enviar e receber dados por meio de uma porta serial em um computador ou dispositivo periférico. Os UARTs são amplamente usados e conhecidos por sua simplicidade. No entanto, ao contrário de SPI e I2C, os UARTs não dão suporte a 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 em tempo real para obter informações sobre o uso do UART em RTApps.

Aplicativos de alto nível do Azure Sphere podem se comunicar com UARTs chamando APIs UART do Applibs. O exemplo 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 de struct usada pelo aplicativo.

Substitua "path-to-your-target-hardware.h" pelo caminho para o arquivo de cabeçalho do hardware.

Configurações do manifesto do aplicativo

As configurações UART no manifesto do aplicativo listam os UARTs acessados pelo aplicativo. Somente um aplicativo pode usar um UART por vez. Para configurar essas configurações, adicione o Uart recurso ao manifesto do aplicativo e adicione cada UART à funcionalidade. O manifesto do aplicativo 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 traduzirá esses valores em valores brutos ao compilar o aplicativo.

Por exemplo, aqui está um trecho de um manifesto de aplicativo que tem como destino um RDB (conselho de desenvolvimento de referência) mt3620 e configura dois UARTs em um MT3620.

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

O trecho a seguir mostra como especificar os mesmos UARTs em um aplicativo que tem como destino o Kit inicial 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 configurar 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 na UART.

Para configurar 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 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 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 de fechar().

Suporte a 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 de usuário do painel de desenvolvimento MT3620 descreve o layout do pino e as funções para a fiação.

A pasta HardwareDefinitions no diretório de instalação do SDK do Microsoft Azure Sphere contém definições para placas de desenvolvimento comuns do Azure Sphere, módulos e chips. Ele contém arquivos de cabeçalho e JSON que definem as interfaces master para o MT3620, MT3620 RDB, juntamente com outros hardwares MT3620. O local padrão da pasta HardwareDefinitions está C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions no Windows e /opt/azurespheresdk/HardwareDefinitions no Linux.

O repositório Exemplos do Azure Sphere no GitHub contém arquivos de cabeçalho e JSON que definem interfaces de master SPI para o chip MT3620 e o RDB MT3620, juntamente com outros hardwares MT3620.-->

Há suporte para as seguintes configurações UART. 8N1 (8 bits de dados, 1 bit de parada e nenhuma 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, não pode usar 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, 100000, 1152000, 1500000 e 2000000.
  • Bit de dados: 5, 6, 7 e 8.
  • Bit de parada: 1 e 2.
  • Paridade: estranho, mesmo, e nenhum.
  • Modo de controle de fluxo: RTS/CTS, XON/XOFF e nenhum 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éricos de 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 usados que podem ser reutilizados para GPIO.