Condividi tramite


Usare SPI in applicazioni di alto livello

Importante

Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).

Azure Sphere supporta l'interfaccia SPI (Serial Peripheral Interface) in modalità master. SPI è un'interfaccia seriale usata per la comunicazione tra periferiche e circuiti integrati. Usa un modello master/subordinato in cui un dispositivo master controlla un set di dispositivi subordinati. Diversamente da I2C, l'interfaccia SPI può essere usata con periferiche più complesse e a velocità più elevate.

Le applicazioni possono accedere alle periferiche tramite SPI effettuando una chiamata alle API SPI Applibs per eseguire operazioni su un'interfaccia master SPI. L'esempio LSM6DS3 SPI descrive come configurare l'hardware per SPI su un dispositivo MT3620 e usare SPI in un'applicazione.

Selezione chip

Selezione chip gestisce la connessione tra un'interfaccia master SPI e un set di dispositivi subordinati e consente all'interfaccia master di inviare e ricevere dati in ogni dispositivo subordinato in modo indipendente. Per selezione chip, Azure Sphere supporta le impostazioni attiva-bassa e attiva-alta, con attiva-bassa come impostazione predefinita. Ogni interfaccia master SPI può essere usata esclusivamente da un'unica applicazione. L'applicazione deve aprire l'interfaccia master SPI e identificare ogni dispositivo subordinato connesso prima di eseguire operazioni di lettura e scrittura. Le operazioni di lettura e scrittura SPI in Azure Sphere usano API bloccanti.

Requisiti di SPI

Le applicazioni che usano SPI devono includere i file di intestazione appropriati per SPI e aggiungere le impostazioni di SPI al manifesto dell'applicazione.

Tutte le applicazioni devono impostare il relativo hardware di destinazione e includere il corrispondente file di intestazione di definizione dell'hardware.

File di intestazione

 #define SPI_STRUCTS_VERSION 1
 #include <applibs/spi.h>
 #include "path-to-your-target-hardware.h"

Dichiarare la definizione del preprocessore SPI_STRUCTS_VERSION prima di includere il file di intestazione. Specifica la versione dello struct usato dall'applicazione.

Sostituire "path-to-your-target-hardware.h" con il percorso del file di intestazione dell'hardware in uso.

Impostazioni del manifesto dell'applicazione

Per usare le API SPI, è necessario aggiungere la funzionalità SpiMaster al manifesto dell'applicazione, quindi aggiungere ogni controller master SPI alla funzionalità. In questo modo l'applicazione può accedere al controller. Il manifesto dell'applicazione Azure Sphere contiene altri dettagli sul manifesto dell'applicazione.

Nel codice usare le costanti definite per l'hardware in uso per identificare le interfacce master SPI. Il compilatore convertirà questi valori in valori non elaborati quando si compila l'app.

Ad esempio, di seguito è riportato un estratto di un manifesto dell'applicazione che ha come destinazione una scheda di sviluppo di riferimento (Reference Development Board, RDB) MT3620 e configura due interfacce master SPI:

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

Nell'estratto seguente viene illustrato come specificare le stesse interfacce master SPI in un'applicazione che ha come destinazione Avnet MT3620 Starter Kit:

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

Configurare selezione chip e aprire un'interfaccia master SPI

Prima di eseguire operazioni con un'interfaccia master SPI, è necessario configurare selezione chip e aprire l'interfaccia. Per configurare selezione chip, chiamare la funzione SPIMaster_InitConfig per inizializzare lo struct SPIMaster_Config. Dopo aver inizializzato SPIMaster_Config, aggiornare il campo csPolarity con l'impostazione SPI_ChipSelectPolarity_ActiveLow o SPI_ChipSelectPolarity_ActiveHigh.

Per aprire un'interfaccia master SPI, chiamare la funzione SPIMaster_Open. In questo modo all'interfaccia verranno applicate le impostazioni predefinite e le impostazioni di selezione chip:

  • SPI_Mode_0 per l'ordine di bit di SPI
  • SPI_BitOrder_MsbFirst per la modalità di comunicazione

Aggiornare le impostazioni per un'interfaccia master SPI

Dopo l'inizializzazione è possibile cambiare le impostazioni dell'interfaccia:

Eseguire operazioni di lettura e scrittura nell'interfaccia master SPI

Azure Sphere supporta diverse opzioni per eseguire operazioni di lettura e scrittura con SPI. Per le operazioni di lettura o scrittura unidirezionali e per mantenere l'interoperabilità con alcune API POSIX, è possibile chiamare le funzioni POSIX read(2) e write(2).

Per eseguire un'operazione combinata di scrittura e quindi lettura in una singola transazione di bus senza interruzioni da altre transazioni, è possibile chiamare SPIMaster_WriteThenRead.

Se è necessario un controllo più preciso sull'intervallo tra le operazioni di lettura o scrittura, chiamare la funzione SPIMaster_TransferSequential. In questo modo è possibile eseguire più operazioni di lettura e scrittura tra una coppia di stati di abilitazione e disabilitazione cs.

Chiudere l'interfaccia SPI

Per chiudere l'interfaccia, è necessario chiamare la funzione POSIX close() standard.

Supporto di MT3620

Questa sezione descrive le opzioni di SPI applicabili solo quando si esegue Azure Sphere sulla scheda di sviluppo MT3620.

Le specifiche di SPI per MT3620 sono indicate in MT3620: stato del supporto. Il manuale utente della scheda di sviluppo MT3620 descrive il layout dei pin e le funzioni per il cablaggio.

La cartella HardwareDefinitions nella directory di installazione di Microsoft Azure Sphere SDK contiene definizioni per schede di sviluppo, moduli e chip di Azure Sphere comuni. Contiene file di intestazione e JSON che definiscono le interfacce master per MT3620, MT3620 RDB, insieme ad altri hardware MT3620. Il percorso predefinito per la cartella HardwareDefinitions si trova C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions in Windows e /opt/azurespheresdk/HardwareDefinitions in Linux.

Il repository di esempi di Azure Sphere in GitHub contiene file di intestazione e JSON che definiscono interfacce master SPI per il chip MT3620 e MT3620 RDB, insieme ad altri hardware MT3620.>

  • Quando si configura la scheda di sviluppo MT3620, è possibile usare qualsiasi porta ISU come interfaccia master SPI. È possibile connettere fino a due dispositivi subordinati a ogni ISU. Se si usa una porta ISU come interfaccia master SPI, non è possibile usare la stessa porta come interfaccia I2C o UART.
  • La scheda MT3620 supporta transazioni SPI fino a 40 MHz.
  • Le operazioni SPI bidirezionali di lettura e scrittura (full-duplex) simultanee all'interno di una singola transazione di bus non sono supportate da MT3620.