Usare SPI in applicazioni di alto livelloUse SPI in high-level applications

Azure Sphere supporta l'interfaccia SPI (Serial Peripheral Interface) in modalità master.Azure Sphere supports Serial Peripheral Interface (SPI) in master mode. SPI è un'interfaccia seriale usata per la comunicazione tra periferiche e circuiti integrati.SPI is a serial interface used for communication between peripherals and integrated circuits. Usa un modello master/subordinato in cui un dispositivo master controlla un set di dispositivi subordinati.SPI uses a master/subordinate model where a master device controls a set of subordinate devices. Diversamente da I2C, l'interfaccia SPI può essere usata con periferiche più complesse e a velocità più elevate.In contrast to I2C, SPI can be used with more complex higher speed peripherals.

Le applicazioni possono accedere alle periferiche tramite SPI effettuando una chiamata alle API SPI Applibs per eseguire operazioni su un'interfaccia master SPI.Applications can access peripherals through SPI by calling Applibs SPI APIs to perform operations on an SPI master interface. L'esempio LSM6DS3 SPI descrive come configurare l'hardware per SPI su un dispositivo MT3620 e usare SPI in un'applicazione.The LSM6DS3 SPI sample describes how to configure the hardware for SPI on an MT3620 device and use SPI in an application.

Selezione chipChip select

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.Chip select manages the connection between an SPI master interface and a set of subordinate devices; and allows the master interface to send and receive data to each subordinate device independently. Per selezione chip, Azure Sphere supporta le impostazioni attiva-bassa e attiva-alta, con attiva-bassa come impostazione predefinita.Azure Sphere supports the active-low and active-high settings for chip select, with active-low as the default setting. Ogni interfaccia master SPI può essere usata esclusivamente da un'unica applicazione.Each SPI master interface can be used exclusively by one application. L'applicazione deve aprire l'interfaccia master SPI e identificare ogni dispositivo subordinato connesso prima di eseguire operazioni di lettura e scrittura.The application must open the SPI master interface and identify each connected subordinate device before performing read and write operations on the interface. Le operazioni di lettura e scrittura SPI in Azure Sphere usano API bloccanti.The SPI read and write operations on Azure Sphere use blocking APIs.

Requisiti di SPISPI requirements

Le applicazioni che usano SPI devono includere i file di intestazione appropriati per SPI e aggiungere le impostazioni di SPI al manifesto dell'applicazione.Applications that use SPI must include the appropriate header files for SPI, and add SPI settings to the application manifest.

Tutte le applicazioni devono impostare il relativo hardware di destinazione e includere il corrispondente file di intestazione di definizione dell'hardware.All applications must set their target hardware and include the corresponding hardware definition header file.

File di intestazioneHeader files

 #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.Declare the SPI_STRUCTS_VERSION preprocessor definition before including the header file. Specifica la versione dello struct usato dall'applicazione.This specifies the struct version that is used by the application.

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

Impostazioni del manifesto dell'applicazioneApplication manifest settings

Per usare le API SPI, è necessario aggiungere la funzionalità SpiMaster al manifesto dell'applicazione, quindi aggiungere ogni controller master SPI alla funzionalità.To use the SPI APIs, you must add the SpiMaster capability to the application manifest, and then add each SPI master controller to the capability. In questo modo l'applicazione può accedere al controller.This enables the application to access the controller. Nell'argomento Manifesto dell'applicazione di Azure Sphere sono disponibili informazioni più dettagliate sul manifesto dell'applicazione.The Azure Sphere application manifest topic has more details about the application manifest.

Nel codice usare le costanti definite per l'hardware in uso per identificare le interfacce master SPI.In your code, use the constants that are defined for your hardware to identify the SPI master interfaces. Il compilatore convertirà questi valori in valori non elaborati quando si compila l'app.The compiler will translate these values to raw values when you build the 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:For example, here's an excerpt from an application manifest that targets an MT3620 reference development board (RDB) and configures two SPI master interfaces:

"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:The following excerpt shows how to specify the same SPI master interfaces in an application that targets the Avnet MT3620 Starter Kit:

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

Configurare selezione chip e aprire un'interfaccia master SPIConfigure chip select and open an SPI master interface

Prima di eseguire operazioni con un'interfaccia master SPI, è necessario configurare selezione chip e aprire l'interfaccia.Before you perform operations on an SPI master interface, you must configure chip select and open the interface. Per configurare selezione chip, chiamare la funzione SPIMaster_InitConfig per inizializzare lo struct SPIMaster_Config.To configure chip select, call the SPIMaster_InitConfig function to initialize the SPIMaster_Config struct. Dopo aver inizializzato SPIMaster_Config, aggiornare il campo csPolarity con l'impostazione SPI_ChipSelectPolarity_ActiveLow o SPI_ChipSelectPolarity_ActiveHigh.After you initialize SPIMaster_Config, update the csPolarity field with the SPI_ChipSelectPolarity_ActiveLow or SPI_ChipSelectPolarity_ActiveHigh setting.

Per aprire un'interfaccia master SPI, chiamare la funzione SPIMaster_Open.To open an SPI master interface, call the SPIMaster_Open function. In questo modo all'interfaccia verranno applicate le impostazioni predefinite e le impostazioni di selezione chip:This will apply the default settings to the interface and apply your chip select settings:

  • SPI_Mode_0 per l'ordine di bit di SPISPI_Mode_0 for the SPI bit order
  • SPI_BitOrder_MsbFirst per la modalità di comunicazioneSPI_BitOrder_MsbFirst for the communication mode

Aggiornare le impostazioni per un'interfaccia master SPIUpdate the settings for an SPI master interface

Dopo l'inizializzazione è possibile cambiare le impostazioni dell'interfaccia:After initialization you can change the settings for the interface:

Eseguire operazioni di lettura e scrittura nell'interfaccia master SPIPerform read and write operations on the SPI master interface

Azure Sphere supporta diverse opzioni per eseguire operazioni di lettura e scrittura con SPI.Azure Sphere supports several options for performing read and write operations with 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).For one-way read or write operations and to maintain interoperability with some POSIX APIs, you can call the POSIX read(2) and write(2) functions.

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.You can call the SPIMaster_WriteThenRead function to perform a combined write then read operation in a single bus transaction without interruption from another transaction.

Se è necessario un controllo più preciso sull'intervallo tra le operazioni di lettura o scrittura, chiamare la funzione SPIMaster_TransferSequential.Call the SPIMaster_TransferSequential function when you need more precise control over the timing between read or write operations. In questo modo è possibile inviare più operazioni di lettura e scrittura tra una coppia di stati di abilitazione e disabilitazione di selezione chip.This allows you to issue multiple read and write operations between a pair of CS enable and disable states.

Chiudere l'interfaccia SPIClose the SPI interface

Per chiudere l'interfaccia, è necessario chiamare la funzione POSIX close() standard.To close the interface, call the standard POSIX function close().

Supporto di MT3620MT3620 support

Questa sezione descrive le opzioni di SPI applicabili solo quando si esegue Azure Sphere sulla scheda di sviluppo MT3620.This section describes the SPI options that only apply when running Azure Sphere on the MT3620 development board.

Le specifiche di SPI per MT3620 sono indicate in MT3620: stato del supporto.The SPI specifications for the MT3620 are listed in MT3620 Support Status. Il manuale utente della scheda di sviluppo MT3620 descrive il layout dei pin e le funzioni per il cablaggio.The MT3620 development board user guide describes the pin layout and functions for wiring.

Il repository Azure Sphere Samples in GitHub contiene file di intestazione e JSON che definiscono le interfacce master SPI per ilThe Azure Sphere Samples repo on GitHub contains header and JSON files that define SPI master interfaces for the MT3620 RDB, insieme ad altri componenti hardware di MT3620.MT3620 RDB, along with other MT3620 hardware.

  • Quando si configura la scheda di sviluppo MT3620, è possibile usare qualsiasi porta ISU come interfaccia master SPI.When you configure the MT3620 dev board, you can use any ISU port as an SPI master interface. È possibile connettere fino a due dispositivi subordinati a ogni ISU.You can connect up to two subordinate devices to each ISU. Se si usa una porta ISU come interfaccia master SPI, non è possibile usare la stessa porta come interfaccia I2C o UART.When you use an ISU port as an SPI master interface, you can't use the same port as an I2C or UART interface.
  • La scheda MT3620 supporta transazioni SPI fino a 40 MHz.The MT3620 supports SPI transactions that are up to 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.The MT3620 doesn't support simultaneous bidirectional read and write (full-duplex) SPI operations within a single bus transaction.