Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

SPI esclavo

Este módulo incluye la abstracción de la 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 especificada.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Se invoca después de que se llama a una devolución de llamada completa de la transacción y devuelve TRUE para realizar cualquier procesamiento adicional requerido.

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 especificada.

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 llamar de nuevo para que la siguiente transacción sea válida.

Tenga en cuenta que esta función siempre se llama al final de una transacción, incluso si aún no se ha llamado a otPlatSpiSlavePrepareTransaction() . 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 / devolución de llamada de OpenThread.

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
TRUE si después de esta llamada la plataforma debe invocar la devolución de llamada del proceso aProcessCallback , FALSE 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 a 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 de sistema operativo (por ejemplo, ISR), esta devolución de llamada DEBE llamarse desde el mismo contexto de sistema operativo que cualquier otra API / devolución de llamada de OpenThread.

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

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 prepara 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 que se pasará a las devoluciones de llamada.
Valores devueltos
OT_ERROR_NONE
Habilitado con éxito la interfaz SPI Slave.
OT_ERROR_ALREADY
La interfaz SPI Slave ya está habilitada.
OT_ERROR_FAILED
No se pudo 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 llame a la devolución de llamada completa de la transacción, o hasta después de la siguiente 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 se descarten los valores anteriores de llamadas anteriores.

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

Una vez que los bytes aOutputBufLen de aOutputBuf se han sincronizado, 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 lo largo de la transacción.

Una vez que se han aInputBufLen bytes de aInputBufLen de aInputBuf 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, aún se debe realizar un seguimiento del tamaño en curso de la transacción 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 de 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 se ignoren todos los argumentos 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 para leer desde el 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 devueltos
OT_ERROR_NONE
La transacción se preparó correctamente.
OT_ERROR_BUSY
Actualmente hay una transacción en curso.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () no ha sido llamado.