Compartir a través de


Uso de SPI en aplicaciones de alto nivel

Importante

Esta es la documentación de Azure Sphere (heredado). Azure Sphere (heredado) se retira el 27 de septiembre de 2027 y los usuarios deben migrar a Azure Sphere (integrado) en este momento. Use el selector de versiones situado encima de la TOC para ver la documentación de Azure Sphere (integrado).

Azure Sphere es compatible con la interfaz de periféricos serie (SPI) en modo maestro. SPI es una interfaz serie que se usa para la comunicación entre periféricos y circuitos integrados. SPI usa un modelo maestro/subordinado en el que un dispositivo maestro controla un conjunto de dispositivos subordinados. A diferencia de I2C, SPI puede usarse con dispositivos periféricos de velocidad superior más complejos.

Para realizar operaciones en una interfaz maestra SPI, las aplicaciones pueden tener acceso a los periféricos mediante SPI con una llamada a las API de SPI en las bibliotecas de aplicaciones. En el ejemplo SPI LSM6DS3 se describe cómo configurar el hardware para SPI en un dispositivo MT3620 y cómo usar SPI en una aplicación.

Chip Select

Chip Select administra la conexión entre una interfaz maestra SPI y un conjunto de dispositivos subordinados, y permite a la interfaz maestra enviar y recibir datos a cada dispositivo subordinado de forma independiente. Azure Sphere admite las configuraciones activa baja y activa alta de Chip Select; activa baja es el valor predeterminado. Únicamente una aplicación puede usar cada interfaz maestra SPI. La aplicación debe abrir la interfaz maestra SPI e identificar cada dispositivo subordinado conectado antes de realizar las operaciones de lectura y escritura en la interfaz. Para las operaciones de lectura y escritura de SPI en Azure Sphere se utilizan API de bloqueo.

Requisitos de SPI

Las aplicaciones que usan SPI deben incluir los archivos de encabezado adecuados para SPI y agregar la configuración de SPI al manifiesto de aplicación.

Todas las aplicaciones deben establecer su hardware de destino e incluir el archivo de encabezado de definición de hardware correspondiente.

Archivos de encabezado

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

Declare la definición de preprocesador SPI_STRUCTS_VERSION antes de incluir el archivo de encabezado. Especifica la versión de la estructura que utiliza la aplicación.

Reemplace "rutaDeAccesoAlHardwareDeDestino.h" por la ruta de acceso al archivo de encabezado de su hardware.

Configuración del manifiesto de aplicación

Para usar las API de SPI, debe agregar la funcionalidad SpiMaster al manifiesto de aplicación y, después, agregar cada controlador maestro SPI a la funcionalidad. Esto permite que la aplicación tenga acceso al controlador. El manifiesto de aplicación de Azure Sphere tiene más detalles sobre el manifiesto de aplicación.

En el código, use las constantes que se definen para el hardware a fin de identificar las interfaces maestras SPI. El compilador traducirá estos valores a valores sin formato al compilar la aplicación.

Por ejemplo, el siguiente es un extracto de un manifiesto de aplicación que tiene como destino una placa de desarrollo de referencia (RDB) MT3620 y configura dos interfaces maestras SPI:

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

En el siguiente extracto se muestra cómo especificar las mismas interfaces maestras SPI en una aplicación dirigida a Avnet MT3620 Starter Kit:

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

Configuración de Chip Select y apertura de una interfaz maestra SPI

Antes de realizar operaciones en una interfaz maestra SPI, debe configurar Chip Select y abrir la interfaz. Para configurar Chip Select, llame a la función SPIMaster_InitConfig para inicializar la estructura SPIMaster_Config. Después de inicializar SPIMaster_Config, actualice el campo csPolarity con los valores SPI_ChipSelectPolarity_ActiveLow o SPI_ChipSelectPolarity_ActiveHigh.

Para abrir una interfaz maestra SPI, llame a la función SPIMaster_Open. Esto aplicará la configuración predeterminada a la interfaz y aplicará la configuración de Chip Select:

  • SPI_Mode_0 para el orden de bits de SPI
  • SPI_BitOrder_MsbFirst para el modo de comunicación

Actualización de la configuración de una interfaz maestra SPI

Después de la inicialización puede cambiar la configuración de la interfaz:

Operaciones de lectura y escritura en la interfaz maestra SPI

Azure Sphere admite varias opciones para realizar operaciones lectura y escritura con SPI. Para las operaciones de escritura o lectura unidireccionales y para mantener la interoperabilidad con algunas API de POSIX, puede llamar a las funciones read(2) y write(2) POSIX.

Puede llamar a SPIMaster_WriteThenRead para realizar una operación combinada de escritura y después lectura en una sola transacción del bus sin interrupción de otra transacción.

Llame a la función SPIMaster_TransferSequential cuando necesite un control más preciso sobre el tiempo entre las operaciones de lectura o escritura. Esto le permite realizar varias operaciones de lectura y escritura entre un par de CS habilitar y deshabilitar estados.

Cierre de la interfaz SPI

Para cerrar la interfaz, llame a la función POSIX estándar close().

Compatibilidad de MT3620

En esta sección se describen las opciones de SPI que solo se aplican cuando Azure Sphere se ejecuta en la placa de desarrollo MT3620.

Las especificaciones de SPI para la placa MT3620 se enumeran en Estado de compatibilidad de MT3620. En la guía del usuario de la placa de desarrollo MT3620, se describe la distribución y la función de los pines realizar el cableado.

La carpeta HardwareDefinitions del directorio de instalación del SDK de Microsoft Azure Sphere contiene definiciones para paneles de desarrollo, módulos y chips comunes de Azure Sphere. Contiene archivos JSON y encabezados que definen las interfaces maestras para el RDB MT3620, MT3620, junto con otro hardware MT3620. La ubicación predeterminada de la carpeta HardwareDefinitions está C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions en Windows y /opt/azurespheresdk/HardwareDefinitions en Linux.

El repositorio de ejemplos de Azure Sphere en GitHub contiene archivos JSON y encabezados que definen interfaces maestras SPI para el chip MT3620 y RDB MT3620, junto con otros hardware MT3620.>

  • Al configurar la placa de desarrollo MT3620, puede usar cualquier puerto ISU como interfaz maestra SPI. Puede conectar hasta dos dispositivos subordinados a cada ISU. Cuando se usa un puerto ISU como interfaz maestra SPI, no se puede usar el mismo puerto que la interfaz I2C o UART.
  • La placa MT3620 admite transacciones de SPI de hasta 40 MHz.
  • La placa MT3620 no admite operaciones SPI de lectura y escritura bidireccionales (dúplex completo) simultáneas en una sola transacción del bus.