Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

SPI Slave

Questo modulo include l'astrazione della piattaforma per la comunicazione slave SPI.

Sommario

Typedef

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Indica che una transazione SPI è stata completata con la lunghezza specificata.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Richiamato dopo la chiamata di una callback di transazione completata e restituisce TRUE per eseguire qualsiasi ulteriore elaborazione richiesta.

Funzioni

otPlatSpiSlaveDisable (void)
void
Arrestare e disabilitare l'interfaccia slave SPI.
otPlatSpiSlaveEnable (otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inizializza l'interfaccia slave SPI.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Prepara i dati per la prossima transazione SPI.

Typedef

otPlatSpiSlaveTransactionCompleteCallback

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

Indica che una transazione SPI è stata completata con la lunghezza specificata.

I dati scritti nello slave sono stati scritti nel puntatore indicato dall'argomento aInputBuf alla chiamata precedente a otPlatSpiSlavePrepareTransaction() .

Una volta chiamata questa funzione, otPlatSpiSlavePrepareTransaction() non è valido e deve essere richiamato di nuovo affinché la transazione successiva sia valida.

Notare che questa funzione viene sempre chiamata alla fine di una transazione, anche se otPlatSpiSlavePrepareTransaction() non è stata ancora chiamata. In questi casi, aOutputBufLen e aInputBufLen saranno zero.

Questa richiamata può essere chiamata dal contesto ISR. Il valore restituito da questa funzione indica se è necessaria un'ulteriore elaborazione. Se viene restituito TRUE l'implementazione del driver spi-slave della piattaforma deve richiamare il callback del processo di transazione ( aProcessCallback impostato in otPlatSpiSlaveEnable() ) che a differenza di questo callback deve essere chiamato dallo stesso contesto del sistema operativo in cui viene chiamato qualsiasi altra API / callback OpenThread.

Dettagli
Parametri
[in] aContext
Puntatore di contesto passato a otPlatSpiSlaveEnable() .
[in] aOutputBuf
Valore di aOutputBuf dall'ultima chiamata a otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Valore di aOutputBufLen dall'ultima chiamata a otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Valore di aInputBuf dall'ultima chiamata a otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Valore di aInputBufLen dall'ultima chiamata a otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Lunghezza della transazione completata, in byte.
ritorna
TRUE se dopo la restituzione di questa chiamata la piattaforma dovrebbe richiamare il callback del processo aProcessCallback , FALSE se non c'è nulla da elaborare e non è necessario richiamare il callback del processo.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Richiamato dopo la chiamata di una callback di transazione completata e restituisce TRUE per eseguire qualsiasi ulteriore elaborazione richiesta.

A differenza di otPlatSpiSlaveTransactionCompleteCallback che può essere chiamato da qualsiasi contesto del sistema operativo (ad esempio, ISR), questo callback DEVE essere chiamato dallo stesso contesto del sistema operativo di qualsiasi altra API / callback OpenThread.

Dettagli
Parametri
[in] aContext
Puntatore di contesto passato a otPlatSpiSlaveEnable() .

Funzioni

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Arrestare e disabilitare l'interfaccia slave SPI.

otPlatSpiSlaveEnable

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

Inizializza l'interfaccia slave SPI.

Notare che lo slave SPI non è completamente pronto fino a quando una transazione non viene preparata utilizzando otPlatSPISlavePrepareTransaction() .

Se otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all byte 0xFF` e scarterà tutti i byte ricevuti.

Dettagli
Parametri
[in] aCompleteCallback
Puntatore alla richiamata completa della transazione.
[in] aProcessCallback
Puntatore per elaborare la richiamata.
[in] aContext
Puntatore di contesto da passare ai callback.
Valori restituiti
OT_ERROR_NONE
Abilitato con successo l'interfaccia SPI Slave.
OT_ERROR_ALREADY
L'interfaccia SPI Slave è già abilitata.
OT_ERROR_FAILED
Impossibile abilitare l'interfaccia SPI Slave.

otPlatSpiSlavePrepareTransaction

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

Prepara i dati per la prossima transazione SPI.

I puntatori ai dati DEVONO rimanere validi fino a quando il callback completo della transazione non viene chiamato dal driver slave SPI o fino alla successiva chiamata a otPlatSpiSlavePrepareTransaction() .

Questa funzione può essere chiamata più di una volta prima che il master SPI avvii la transazione. Ogni chiamata riuscita a questa funzione provocherà l'eliminazione dei valori precedenti delle chiamate precedenti.

Non chiamare questa funzione dopo una transazione completata è come se questa funzione fosse stata chiamata in precedenza con entrambe le lunghezze del buffer impostate su zero e aRequestTransactionFlag impostato su false .

Una volta che aOutputBufLen byte di aOutputBuf è stato sincronizzato, il pin MISO deve essere impostato alto fino a quando il master non termina la transazione SPI. Questo è l'equivalente funzionale del riempimento della fine di aOutputBuf con 0xFF byte per la lunghezza della transazione.

Una volta che aInputBufLen byte di aInputBuf sono stati sincronizzati da MOSI, tutti i valori successivi dal pin MOSI vengono ignorati fino a quando il master SPI termina la transazione.

Si noti che anche se aInputBufLen o aOutputBufLen (o entrambi) si esauriscono prima che il master SPI termini una transazione, la dimensione in corso della transazione deve essere comunque tenuta traccia per essere passata alla callback completa della transazione. Ad esempio, se aInputBufLen è uguale a 10 e aOutputBufLen uguale a 20 e il master SPI esegue il clock di 30 byte, il valore 30 viene passato alla callback completa della transazione.

Se un puntatore NULL viene passato come aOutputBuf o aInputBuf , significa che quel puntatore al buffer non dovrebbe cambiare dal suo valore precedente / corrente. In questo caso, l'argomento della lunghezza corrispondente dovrebbe essere ignorato. Ad esempio, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) modifica il puntatore del buffer di input e la sua lunghezza ma mantiene il puntatore del buffer di output come prima.

Qualsiasi chiamata a questa funzione mentre è in corso una transazione farà sì che tutti gli argomenti vengano ignorati e il valore restituito sarà OT_ERROR_BUSY .

Dettagli
Parametri
[in] aOutputBuf
Dati da scrivere sul pin MISO
[in] aOutputBufLen
Dimensioni del buffer di output, in byte
[in] aInputBuf
Dati da leggere dal pin MOSI
[in] aInputBufLen
Dimensioni del buffer di input, in byte
[in] aRequestTransactionFlag
Impostato su true se deve essere impostato l'interrupt host
Valori restituiti
OT_ERROR_NONE
La transazione è stata preparata con successo.
OT_ERROR_BUSY
È attualmente in corso una transazione.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () non è stato chiamato.