Partilhar via


Use SPI 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 à SPI (Serial Peripheral Interface) no modo mestre. SPI é uma interface serial usada para comunicação entre periféricos e circuitos integrados. O SPI usa um modelo mestre/subordinado onde um dispositivo mestre controla um conjunto de dispositivos subordinados. Em contraste com o I2C, o SPI pode ser usado com periféricos mais complexos de alta velocidade.

Os aplicativos podem acessar periféricos por meio do SPI chamando APIs do Applibs SPI para executar operações em uma interface mestre SPI. O exemplo de SPI LSM6DS3 descreve como configurar o hardware para SPI em um dispositivo MT3620 e usar SPI em um aplicativo.

Seleção de chip

Chip select gerencia a conexão entre uma interface mestre SPI e um conjunto de dispositivos subordinados; e permite que a interface mestre envie e receba dados para cada dispositivo subordinado de forma independente. O Azure Sphere dá suporte às configurações ativo-baixo e ativo-alto para seleção de chip, com ativo-baixo como a configuração padrão. Cada interface mestre SPI pode ser usada exclusivamente por um aplicativo. O aplicativo deve abrir a interface mestre SPI e identificar cada dispositivo subordinado conectado antes de executar operações de leitura e gravação na interface. As operações de leitura e gravação SPI no Azure Sphere usam APIs de bloqueio.

Requisitos do SPI

Os aplicativos que usam SPI devem incluir os arquivos de cabeçalho apropriados para SPI e adicionar configurações de SPI 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 SPI_STRUCTS_VERSION 1
 #include <applibs/spi.h>
 #include "path-to-your-target-hardware.h"

Declare a definição do SPI_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

Para usar as APIs SPI, você deve adicionar o SpiMaster recurso ao manifesto do aplicativo e, em seguida, adicionar cada controlador mestre SPI ao recurso. Isso permite que o aplicativo acesse o controlador. 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 interfaces mestras SPI. 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 interfaces mestre SPI:

"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],

O trecho a seguir mostra como especificar as mesmas interfaces mestre SPI em um aplicativo destinado ao Avnet MT3620 Starter Kit:

"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]

Configurar chip, selecionar e abrir uma interface mestre SPI

Antes de executar operações em uma interface mestre SPI, você deve configurar a seleção de chip e abrir a interface. Para configurar a seleção de chip, chame a função SPIMaster_InitConfig para inicializar a SPIMaster_Config struct. Depois de inicializar SPIMaster_Config, atualize o csPolarity campo com a configuração SPI_ChipSelectPolarity_ActiveLow ou SPI_ChipSelectPolarity_ActiveHigh.

Para abrir uma interface mestre SPI, chame a função SPIMaster_Open . Isso aplicará as configurações padrão à interface e aplicará as configurações de seleção do chip:

  • SPI_Mode_0 para a ordem de bits SPI
  • SPI_BitOrder_MsbFirst para o modo de comunicação

Atualizar as configurações de uma interface mestre SPI

Após a inicialização, você pode alterar as configurações da interface:

Executar operações de leitura e gravação na interface mestre SPI

O Azure Sphere suporta várias opções para executar operações de leitura e escrita com SPI. Para operações unidirecionais de leitura ou gravação e para manter a interoperabilidade com algumas APIs POSIX, você pode chamar as funções POSIX read(2) e write(2).

Você pode chamar a função SPIMaster_WriteThenRead para executar uma operação combinada de gravação e leitura em uma única transação de barramento sem interrupção de outra transação.

Chame a função SPIMaster_TransferSequential quando precisar de um controle mais preciso sobre o tempo entre as operações de leitura ou gravação. Isso permite que você execute várias operações de leitura e gravação entre um par de estados de habilitação e desativação de CS.

Feche a interface SPI

Para fechar a interface, chame a função POSIX padrão close().

Suporte MT3620

Esta seção descreve as opções SPI que só se aplicam ao executar o Azure Sphere na placa de desenvolvimento MT3620.

As especificações SPI para o MT3620 estão listadas em MT3620 Status de suporte. 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.-->

  • Ao configurar a placa de desenvolvimento MT3620, você pode usar qualquer porta ISU como uma interface mestre SPI. Você pode conectar até dois dispositivos subordinados a cada ISU. Quando você usa uma porta ISU como uma interface mestre SPI, você não pode usar a mesma porta que uma interface I2C ou UART.
  • O MT3620 suporta transações SPI de até 40 MHz.
  • O MT3620 não suporta operações SPI bidirecionais simultâneas de leitura e gravação (full-duplex) em uma única transação de barramento.