Google is committed to advancing racial equity for Black communities. See how.
Esta página se ha traducido con Cloud Translation API.
Switch to English

SPI esclavo

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

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 ha finalizado con la longitud dada.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Se invoca después de una devolución de llamada completa la transacción se llama y vuelve TRUE a hacer ningún tipo de procesamiento adicional requerida.

funciones

otPlatSpiSlaveDisable (void)
void
Apagar y desactivar la interfaz SPI esclavo.
otPlatSpiSlaveEnable ( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inicializar la interfaz SPI esclavo.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Preparar los datos para la siguiente 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 ha finalizado con la longitud dada.

Los datos escritos en el esclavo se ha escrito al puntero indica la aInputBuf argumento a la llamada anterior a otPlatSpiSlavePrepareTransaction() .

Una vez que esta función se llama, otPlatSpiSlavePrepareTransaction() no es válido y debe ser llamado de nuevo para la siguiente transacción sea válida.

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

Esta devolución de llamada puede ser llamado desde un contexto ISR. El valor de retorno de esta función indica si se requiere ningún otro proceso. Si TRUE se devuelve la implementación del controlador esclavo SPI-plataforma debe invocar el proceso de transacción de devolución de llamada ( aProcessCallback encuentra en otPlatSpiSlaveEnable() ), que a diferencia de esta devolución de llamada debe ser llamado desde el mismo contexto que cualquier otro sistema operativo API OpenThread / devolución de llamada.

detalles
parámetros
[in] aContext
Contexto puntero pasado a otPlatSpiSlaveEnable() .
[in] aOutputBuf
Valor de aOutputBuf desde la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Valor de aOutputBufLen desde la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Valor de aInputBuf desde la última llamada a otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Valor de aInputBufLen desde la última llamada a otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Longitud de la transacción completada, en bytes.
Devoluciones
TRUE si después de esta llamada devuelve la plataforma debe invocar el proceso de devolución de llamada aProcessCallback , FALSE si no hay nada que el proceso y no hay necesidad de invocar la devolución de llamada de proceso.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Se invoca después de una devolución de llamada completa la transacción se llama y vuelve TRUE a hacer ningún tipo de procesamiento adicional requerida.

A diferencia de otPlatSpiSlaveTransactionCompleteCallback que puede ser llamado desde cualquier contexto OS (por ejemplo, ISR), esta devolución de llamada debe ser llamado desde el mismo contexto OS como cualquier otro API OpenThread / devolución de llamada.

detalles
parámetros
[in] aContext
Contexto puntero pasado a otPlatSpiSlaveEnable() .

funciones

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Apagar y desactivar la interfaz SPI esclavo.

otPlatSpiSlaveEnable

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

Inicializar la interfaz SPI esclavo.

Tenga en cuenta que esclavo SPI no es totalmente listo hasta una transacción se prepara utilizando otPlatSPISlavePrepareTransaction() .

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

detalles
parámetros
[in] aCompleteCallback
Puntero a la transacción completa de devolución de llamada.
[in] aProcessCallback
Puntero a devolución de llamada proceso.
[in] aContext
puntero de contexto que se pasa a las devoluciones de llamada.
Valores devueltos
OT_ERROR_NONE
Éxito habilitado la interfaz SPI esclavo.
OT_ERROR_ALREADY
interfaz SPI esclavo ya está habilitado.
OT_ERROR_FAILED
No se pudo activar la interfaz SPI esclavo.

otPlatSpiSlavePrepareTransaction

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

Preparar los datos para la siguiente transacción SPI.

Punteros de datos deberán permanecer válidas hasta que la transacción de devolución de llamada completa es llamado por el controlador esclavo SPI, o hasta después de la siguiente llamada a otPlatSpiSlavePrepareTransaction() .

Esta función puede ser llamado más de una vez antes de que el maestro SPI inicia la transacción. Cada llamada con éxito a esta función hará que los valores anteriores de las llamadas anteriores a ser descartados.

No llamar a esta función después de una transacción completada es el mismo que si esta función era conocida anteriormente con las dos longitudes de autonomía ajustado a cero y aRequestTransactionFlag conjunto de false .

Una vez aOutputBufLen bytes de aOutputBuf se ha registrado hacia fuera, el pasador MISO será de alta hasta que el maestro finaliza la transacción SPI. Este es el equivalente funcional de relleno al final de aOutputBuf con 0xFF bytes a la longitud de la transacción.

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

Tenga en cuenta que incluso si aInputBufLen o aOutputBufLen (o ambos) se agotan antes de que el maestro SPI termina una transacción, el tamaño actual de la transacción aún debe mantenerse un registro de ser pasado a la transacción completa de devolución de llamada. Por ejemplo, si aInputBufLen es igual a 10 y aOutputBufLen igual a 20 y el maestro relojes SPI fuera 30 bytes, el valor 30 se pasa a la operación completa de devolución de llamada.

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

Cualquier llamada a esta función, mientras que una transacción está en curso hará que todos los argumentos para ser ignorado y el valor de retorno para ser OT_ERROR_BUSY .

detalles
parámetros
[in] aOutputBuf
Los datos que se escriben en pin MISO
[in] aOutputBufLen
Tamaño del búfer de salida, en bytes
[in] aInputBuf
Los datos que se leen desde el pin MOSI
[in] aInputBufLen
Tamaño de la entrada de amortiguamiento, en bytes
[in] aRequestTransactionFlag
Se establece en true si la interrupción de host debe ser conjunto
Valores devueltos
OT_ERROR_NONE
Transacción se preparó con éxito.
OT_ERROR_BUSY
Una transacción es actualmente en curso.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () no ha sido llamado.