Usar SPI 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 à SPI (Interface Periférica Serial) no modo mestre. SPI é uma interface serial usada para a comunicação entre periféricos e circuitos integrados. Ela usa um modelo mestre/subordinado em que um dispositivo mestre controla um conjunto de dispositivos subordinados. Diferentemente do I2C, a SPI pode ser usada com periféricos mais complexos de velocidades superiores.
Os aplicativos podem acessar os periféricos chamando APIs da SPI Applibs para executar operações em uma interface mestre da SPI. O exemplo da SPI do LSM6DS3 descreve como configurar o hardware para a SPI em um dispositivo MT3620 e como usá-la em um aplicativo.
Seleção de chips
A seleção de chips gerencia a conexão entre uma interface mestre da SPI e um conjunto de dispositivos subordinados. Além disso, permite que a interface mestre envie e receba dados para cada dispositivo subordinado de forma independente. O Azure Sphere oferece suporte a configurações de níveis baixo e alto para a seleção de chips, sendo a de nível baixo a padrão. Cada interface mestre da SPI pode ser usada exclusivamente por um aplicativo. O aplicativo deve abrir a interface mestre da SPI e identificar cada dispositivo subordinado conectado antes de realizar operações de leitura e gravação na interface. As operações de leitura e gravação da SPI no Azure Sphere usam APIs de bloqueio.
Requisitos da SPI
Os aplicativos que usam a SPI devem incluir os arquivos de cabeçalho apropriados para SPI e adicionar as configurações da SPI 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 SPI_STRUCTS_VERSION 1
#include <applibs/spi.h>
#include "path-to-your-target-hardware.h"
Declare a definição de pré-processador SPI_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
Para usar as APIs da SPI, você deve adicionar o recurso SpiMaster
ao manifesto do aplicativo e, em seguida, adicionar cada controlador mestre da SPI ao recurso. Isso permite que o aplicativo acesse o controlador. 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 identificar as interfaces mestras da SPI. 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 duas interfaces mestras da SPI:
"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],
O trecho a seguir mostra como especificar as mesmas interfaces mestras da SPI em um aplicativo que direciona o Kit de Início do Avnet MT3620:
"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]
Configurar a seleção de chips e abrir uma interface mestre da SPI
Antes de executar as operações em uma interface mestre da SPI, configure a seleção de chips e abra a interface. Para configurar a seleção de chips, chame a função SPIMaster_InitConfig para inicializar a estrutura SPIMaster_Config. Depois de inicializar SPIMaster_Config, atualize o campo csPolarity
com a configuração de SPI_ChipSelectPolarity_ActiveLow ou SPI_ChipSelectPolarity_ActiveHigh.
Para abrir uma interface mestre da SPI, chame a função SPIMaster_Open. Isso aplicará as configurações padrão à interface e suas configurações de seleção de chips:
SPI_Mode_0
para a ordem de bits da SPISPI_BitOrder_MsbFirst
para o modo de comunicação
Atualizar as configurações para uma interface mestre da SPI
Após a inicialização, você poderá alterar as configurações da interface:
- Para alterar a ordem de bits, chame SPIMaster_SetBitOrder
- Para alterar a velocidade de barramento da SPI, chame SPIMaster_SetBitOrder
- Para alterar o modo de comunicação, chame SPIMaster_SetMode
Executar operações de leitura e gravação na interface mestre da SPI
O Azure Sphere dá suporte a várias opções para executar operações de leitura e gravação com a SPI. Para as operações de gravação ou leitura unidirecionais e para manter a interoperabilidade com algumas APIs do POSIX, você pode chamar as funções read(2) e write(2) do POSIX.
Você pode chamar a função SPIMaster_WriteThenRead para executar uma operação combinada de gravação e de leitura em uma transação de barramento único sem interrupções de outra transação.
Chame a função SPIMaster_TransferSequential quando precisar de um controle mais preciso sobre o intervalo 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 ativação e desativação do CS.
Fechar a interface da SPI
Para fechar a interface, chame a função close() padrão do POSIX.
Suporte à placa de desenvolvimento MT3620
Esta seção descreve as opções da SPI aplicáveis somente quando o Azure Sphere é executado na placa de desenvolvimento MT3620.
As especificações de SPI do MT3620 estão na lista de Status de suporte 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.-->
- Quando você configura a placa de desenvolvimento MT3620, pode usar qualquer porta ISU como uma interface mestre da SPI. É possível conectar até dois dispositivos subordinados a cada ISU. Quando você usa uma porta ISU como uma interface mestre do I2C, não é possível usar a mesma porta como uma interface da SPI ou do UART.
- A MT3620 dá suporte a transações SPI de até 40 MHz.
- A MT3620 não dá suporte a operações de leitura e gravação bidirecionais e simultâneas (full duplex) simultaneamente da SPI em uma transação de barramento único.