Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

SPI Slave

Este módulo incluye la abstracción de plataforma para la comunicación esclava SPI.

Resumen

Typedefs

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Indica que una transacción SPI se ha completado con la longitud dada.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Se invoca después de que se llama una devolución de llamada completa de la transacción y devuelve TRUE para realizar cualquier procesamiento adicional requerido.

Las funciones

otPlatSpiSlaveDisable (void)
void
Apague y desactive la interfaz esclava SPI.
otPlatSpiSlaveEnable ( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inicialice la interfaz esclava SPI.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Prepare los datos para la próxima transacción SPI.

Typedefs

otPlatSpiSlaveTransactionCompleteCallback

bool(* otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)

Indica que una transacción SPI se ha completado con la longitud dada.

Los datos escritos en el esclavo se han escrito en el puntero indicado por el argumento aInputBuf a la llamada anterior a otPlatSpiSlavePrepareTransaction() .

Una vez que se llama a esta función, otPlatSpiSlavePrepareTransaction() no es válido y se debe volver a llamar para que la próxima transacción sea válida.

Tenga en cuenta que esta función siempre se llama al final de una transacción, incluso si otPlatSpiSlavePrepareTransaction() aún no se ha llamado. En tales casos, aOutputBufLen y aInputBufLen serán cero.

Esta devolución de llamada se puede llamar desde el contexto ISR. El valor de retorno de esta función indica si se requiere algún procesamiento adicional. Si se devuelve TRUE , la implementación del controlador spi-slave de la plataforma debe invocar la devolución de llamada del proceso de transacción ( aProcessCallback establecido en otPlatSpiSlaveEnable() ) que, a diferencia de esta devolución de llamada, debe llamarse desde el mismo contexto del sistema operativo que cualquier otra API OpenThread / devolución de llamada.

Detalles
Parámetros
[in] aContext
El puntero de contexto pasó a otPlatSpiSlaveEnable() .
[in] aOutputBuf
Valor de aOutputBuf de la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Valor de aOutputBufLen de la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Valor de aInputBuf de la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Valor de aInputBufLen de la última llamada a otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Longitud de la transacción completada, en bytes.
Devoluciones
VERDADERO si después de que esta llamada regresa, la plataforma debe invocar la devolución de llamada del proceso aProcessCallback , FALSO si no hay nada que procesar y no es necesario invocar la devolución de llamada del proceso.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Se invoca después de que se llama una devolución de llamada completa de la transacción y devuelve TRUE para realizar cualquier procesamiento adicional requerido.

A diferencia de otPlatSpiSlaveTransactionCompleteCallback que se puede llamar desde cualquier contexto del sistema operativo (por ejemplo, ISR), esta devolución de llamada DEBE llamarse desde el mismo contexto del sistema operativo que cualquier otra API / devolución de llamada de OpenThread.

Detalles
Parámetros
[in] aContext
El puntero de contexto pasó a otPlatSpiSlaveEnable() .

Las funciones

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Apague y desactive la interfaz esclava SPI.

otPlatSpiSlaveEnable

 otError otPlatSpiSlaveEnable(
  otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,
  otPlatSpiSlaveTransactionProcessCallback aProcessCallback,
  void *aContext
)

Inicialice la interfaz esclava SPI.

Tenga en cuenta que el esclavo SPI no está completamente listo hasta que se prepare una transacción utilizando otPlatSPISlavePrepareTransaction() .

Si otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all bytes 0xFF` y descartará todos los bytes recibidos.

Detalles
Parámetros
[in] aCompleteCallback
Puntero a la devolución de llamada completa de la transacción.
[in] aProcessCallback
Puntero para procesar la devolución de llamada.
[in] aContext
Puntero de contexto para pasar a devoluciones de llamada.
Valores de retorno
OT_ERROR_NONE
Habilitado correctamente la interfaz SPI Slave.
OT_ERROR_ALREADY
La interfaz SPI Slave ya está habilitada.
OT_ERROR_FAILED
Error al habilitar la interfaz SPI Slave.

otPlatSpiSlavePrepareTransaction

 otError otPlatSpiSlavePrepareTransaction(
  uint8_t *aOutputBuf,
  uint16_t aOutputBufLen,
  uint8_t *aInputBuf,
  uint16_t aInputBufLen,
  bool aRequestTransactionFlag
)

Prepare los datos para la próxima transacción SPI.

Los punteros de datos DEBEN permanecer válidos hasta que el controlador esclavo SPI otPlatSpiSlavePrepareTransaction() devolución de llamada completa de la transacción, o hasta después de la próxima llamada a otPlatSpiSlavePrepareTransaction() .

Esta función se puede llamar más de una vez antes de que el maestro SPI inicie la transacción. Cada llamada exitosa a esta función hará que los valores anteriores de las llamadas anteriores sean descartados.

No llamar a esta función después de una transacción completada es lo mismo que si se llamara previamente a esta función con ambas longitudes de búfer establecidas en cero y aRequestTransactionFlag establecido en false .

Una vez que los bytes aOutputBufLen de aOutputBuf se hayan desconectado, el pin MISO se establecerá en alto hasta que el maestro finalice la transacción SPI. Este es el equivalente funcional de aOutputBuf el final de aOutputBuf con 0xFF bytes a la longitud de la transacción.

Una vez que los bytes aInputBufLen de aInputBuf se han registrado desde MOSI, todos los valores posteriores del pin MOSI se ignoran hasta que el maestro SPI finaliza la transacción.

Tenga en cuenta que incluso si aInputBufLen o aOutputBufLen (o ambos) se agotan antes de que el maestro SPI finalice una transacción, el tamaño continuo de la transacción aún debe mantenerse para pasar a la devolución de llamada completa de la transacción. Por ejemplo, si aInputBufLen es igual a 10 y aOutputBufLen igual a 20 y el maestro SPI aOutputBufLen 30 bytes, el valor 30 se pasa a la devolución de llamada completa de la transacción.

Si se pasa un puntero NULL como aOutputBuf o aInputBuf , significa que ese puntero del búfer no debe cambiar de su valor anterior / actual. En este caso, se debe ignorar el argumento de longitud correspondiente. Por ejemplo, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) cambia el puntero del búfer de entrada y su longitud, pero mantiene el puntero del búfer de salida igual que antes.

Cualquier llamada a esta función mientras una transacción está en progreso hará que todos los argumentos sean ignorados y el valor de retorno sea OT_ERROR_BUSY .

Detalles
Parámetros
[in] aOutputBuf
Datos que se escribirán en el pin MISO
[in] aOutputBufLen
Tamaño del búfer de salida, en bytes.
[in] aInputBuf
Datos a leer del pin MOSI
[in] aInputBufLen
Tamaño del búfer de entrada, en bytes.
[in] aRequestTransactionFlag
Establecer en verdadero si se debe establecer la interrupción del host
Valores de retorno
OT_ERROR_NONE
La transacción se preparó con éxito.
OT_ERROR_BUSY
Una transacción está actualmente en progreso.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () no ha sido llamado.