Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Escravo SPI

Este módulo inclui a abstração da plataforma para comunicação escrava SPI.

Resumo

Typedefs

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
Indica que uma transação SPI foi concluída com o comprimento especificado.
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
Chamado depois que um retorno de chamada completo da transação é chamado e retorna TRUE para fazer qualquer processamento adicional necessário.

Funções

otPlatSpiSlaveDisable (void)
void
Encerre e desative a interface escrava SPI.
otPlatSpiSlaveEnable ( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
Inicialize a interface escrava SPI.
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
Prepare os dados para a próxima transação SPI.

Typedefs

otPlatSpiSlaveTransactionCompleteCallback

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

Indica que uma transação SPI foi concluída com o comprimento especificado.

Os dados gravados no escravo foram gravados no ponteiro indicado pelo argumento aInputBuf da chamada anterior para otPlatSpiSlavePrepareTransaction() .

Depois que essa função é chamada, otPlatSpiSlavePrepareTransaction() é inválido e deve ser chamado novamente para que a próxima transação seja válida.

Observe que essa função sempre é chamada no final de uma transação, mesmo que otPlatSpiSlavePrepareTransaction() ainda não tenha sido chamado. Nesses casos, aOutputBufLen e aInputBufLen serão zero.

Esse retorno de chamada pode ser chamado no contexto ISR. O valor de retorno desta função indica se é necessário outro processamento. Se TRUE for retornado, a implementação do driver spi-slave da plataforma deve chamar o retorno de chamada do processo de transação ( aProcessCallback definido em otPlatSpiSlaveEnable() ) que, diferentemente desse retorno de chamada, deve ser chamado no mesmo contexto do SO que qualquer outra API / retorno de chamada OpenThread é chamada.

Detalhes
Parâmetros
[in] aContext
Ponteiro de contexto passado para otPlatSpiSlaveEnable() .
[in] aOutputBuf
Valor de aOutputBuf da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aOutputBufLen
Valor de aOutputBufLen da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aInputBuf
Valor de aInputBuf da última chamada para otPlatSpiSlavePrepareTransaction() .
[in] aInputBufLen
Valor de aInputBufLen da última chamada para otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
Comprimento da transação concluída, em bytes.
Devoluções
TRUE se depois que essa chamada retornar, a plataforma deve chamar o retorno de chamada do processo aProcessCallback , FALSE se não houver nada a processar e não for necessário chamar o retorno de chamada do processo.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

Chamado depois que um retorno de chamada completo da transação é chamado e retorna TRUE para fazer qualquer processamento adicional necessário.

Ao contrário de otPlatSpiSlaveTransactionCompleteCallback que pode ser chamado de qualquer contexto do SO (por exemplo, ISR), esse retorno de chamada DEVE ser chamado do mesmo contexto do SO que qualquer outra API / retorno de chamada OpenThread.

Detalhes
Parâmetros
[in] aContext
Ponteiro de contexto passado para otPlatSpiSlaveEnable() .

Funções

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

Encerre e desative a interface escrava SPI.

otPlatSpiSlaveEnable

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

Inicialize a interface escrava SPI.

Observe que o escravo SPI não está totalmente pronto até que uma transação seja preparada usando otPlatSPISlavePrepareTransaction() .

Se otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all bytes 0xFF` e descartará todos os bytes recebidos.

Detalhes
Parâmetros
[in] aCompleteCallback
Ponteiro para retorno de chamada completo da transação.
[in] aProcessCallback
Ponteiro para processar o retorno de chamada.
[in] aContext
Ponteiro de contexto a ser passado para retornos de chamada.
Retornar valores
OT_ERROR_NONE
Ativada com sucesso a interface SPI Slave.
OT_ERROR_ALREADY
A interface do escravo SPI já está ativada.
OT_ERROR_FAILED
Falha ao ativar a interface do SPI Slave.

otPlatSpiSlavePrepareTransaction

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

Prepare os dados para a próxima transação SPI.

Os ponteiros de dados DEVEM permanecer válidos até que a transação de retorno de chamada completa seja chamada pelo driver escravo SPI, ou até após a próxima chamada para otPlatSpiSlavePrepareTransaction() .

Esta função pode ser chamada mais de uma vez antes que o mestre SPI inicie a transação. Cada chamada bem-sucedida para esta função fará com que os valores anteriores das chamadas anteriores sejam descartados.

Não chamar esta função após uma transação concluída é o mesmo que se essa função tivesse sido chamada anteriormente com os comprimentos de buffer definidos como zero e aRequestTransactionFlag definido como false .

Após o tempo aOutputBufLen de aOutputBufLen bytes de aOutputBuf , o pino MISO deve ser definido alto até que o mestre conclua a transação SPI. Esse é o equivalente funcional do preenchimento do final de aOutputBuf com 0xFF bytes até o comprimento da transação.

Uma vez aInputBufLen bytes de aInputBuf foram cronometrados a partir MOSI, todos os valores subsequentes do pino MOSI são ignorados até que o mestre SPI terminar a transacção.

Observe que, mesmo que aInputBufLen ou aOutputBufLen (ou ambos) sejam esgotados antes que o mestre SPI conclua uma transação, o tamanho contínuo da transação ainda deve ser mantido para ser passado para o retorno de chamada completo da transação. Por exemplo, se aInputBufLen é igual a 10 e aOutputBufLen igual a 20 e o mestre SPI aOutputBufLen 30 bytes, o valor 30 é passado para o retorno de chamada completo da transação.

Se um ponteiro NULL for passado como aOutputBuf ou aInputBuf , significa que esse ponteiro de buffer não deve mudar de seu valor anterior / atual. Nesse caso, o argumento de comprimento correspondente deve ser ignorado. Por exemplo, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) altera o ponteiro do buffer de entrada e seu comprimento, mas mantém o ponteiro do buffer de saída igual ao anterior.

Qualquer chamada para esta função enquanto uma transação estiver em andamento fará com que todos os argumentos sejam ignorados e o valor de retorno seja OT_ERROR_BUSY .

Detalhes
Parâmetros
[in] aOutputBuf
Dados a serem gravados no pino MISO
[in] aOutputBufLen
Tamanho do buffer de saída, em bytes
[in] aInputBuf
Dados a serem lidos do pino MOSI
[in] aInputBufLen
Tamanho do buffer de entrada, em bytes
[in] aRequestTransactionFlag
Defina como true se a interrupção do host deve ser configurada
Retornar valores
OT_ERROR_NONE
A transação foi preparada com sucesso.
OT_ERROR_BUSY
Uma transação está em andamento no momento.
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () não foi chamado.