Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

SPIスレーブ

このモジュールには、SPIスレーブ通信のプラットフォーム抽象化が含まれています。

概要

Typedef

otPlatSpiSlaveTransactionCompleteCallback )(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength) typedef
bool(*
指定された長さでSPIトランザクションが完了したことを示します。
otPlatSpiSlaveTransactionProcessCallback )(void *aContext) typedef
void(*
トランザクション完了コールバックが呼び出された後に呼び出され、 TRUEを返し、さらに必要な処理を実行します。

関数

otPlatSpiSlaveDisable (void)
void
SPIスレーブインターフェイスをシャットダウンして無効にします。
otPlatSpiSlaveEnable (otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback,otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext)
SPIスレーブインターフェースを初期化します。
otPlatSpiSlavePrepareTransaction (uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag)
次のSPIトランザクション用にデータを準備します。

Typedef

otPlatSpiSlaveTransactionCompleteCallback

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

指定された長さでSPIトランザクションが完了したことを示します。

スレーブに書き込まれたデータは、で示されるポインタに書き込まれたaInputBufの以前の呼び出しに引数otPlatSpiSlavePrepareTransaction()

この関数が呼び出されると、 otPlatSpiSlavePrepareTransaction()は無効になり、次のトランザクションを有効にするために再度呼び出す必要があります。

この関数は、 otPlatSpiSlavePrepareTransaction()がまだ呼び出されていない場合でも、トランザクションの最後に常に呼び出されることに注意してください。このような場合、 aOutputBufLenaInputBufLenはゼロになります。

このコールバックは、ISRコンテキストから呼び出すことができます。この関数からの戻り値は、さらに処理が必要かどうかを示します。場合はTRUEプラットフォームSPIスレーブドライバの実装がトランザクション処理コールバックを呼び出す必要があります返されます( aProcessCallbackで設定otPlatSpiSlaveEnable()このコールバックとは異なり、他のOpenThreadのAPI /コールバックが呼び出されたのと同じOSのコンテキストから呼び出さなければなりません)。

詳細
パラメーター
[in] aContext
otPlatSpiSlaveEnable()渡されるコンテキストポインタ。
[in] aOutputBuf
aOutputBufへの最後の呼び出しからotPlatSpiSlavePrepareTransaction()
[in] aOutputBufLen
aOutputBufLenへの最後の呼び出しからotPlatSpiSlavePrepareTransaction()
[in] aInputBuf
[in] aInputBufLen
[in] aTransactionLength
完了したトランザクションの長さ(バイト単位)。
戻り値
この呼び出しが戻った後、プラットフォームがプロセスコールバックaProcessCallback呼び出す必要がある場合はTRUE、処理するものがなく、プロセスコールバックを呼び出す必要がない場合はFALSE。

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

トランザクション完了コールバックが呼び出された後に呼び出され、 TRUEを返し、さらに必要な処理を実行します。

任意のOSコンテキスト(ISRなど)からotPlatSpiSlaveTransactionCompleteCallbackことができるotPlatSpiSlaveTransactionCompleteCallbackとは異なり、このコールバックは、他のOpenThread API /コールバックと同じOSコンテキストから呼び出す必要があります。

詳細
パラメーター
[in] aContext
otPlatSpiSlaveEnable()渡されるコンテキストポインタ。

関数

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

SPIスレーブインターフェイスをシャットダウンして無効にします。

otPlatSpiSlaveEnable

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

SPIスレーブインターフェースを初期化します。

otPlatSPISlavePrepareTransaction()を使用してトランザクションが準備されるまで、SPIスレーブは完全に準備ができていないことに注意してください。

otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all場合otPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all 0xFF`バイトotPlatSPISlavePrepareTransaction() is not called before the master begins a transaction, the resulting SPI transaction will send all 、受信したすべてのバイトを破棄します。

詳細
パラメーター
[in] aCompleteCallback
トランザクション完了コールバックへのポインタ。
[in] aProcessCallback
コールバックを処理するためのポインタ。
[in] aContext
コールバックに渡されるコンテキストポインタ。
戻り値
OT_ERROR_NONE
SPIスレーブインターフェイスを正常に有効にしました。
OT_ERROR_ALREADY
SPIスレーブインターフェースはすでに有効になっています。
OT_ERROR_FAILED
SPIスレーブインターフェイスを有効にできませんでした。

otPlatSpiSlavePrepareTransaction

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

次のSPIトランザクション用にデータを準備します。

データポインタは、トランザクション完了コールバックがSPIスレーブドライバによって呼び出されるまで、またはotPlatSpiSlavePrepareTransaction()への次の呼び出しの後まで有効である必要があります。

この関数は、SPIマスターがトランザクションを開始する前に複数回呼び出される場合があります。この関数の呼び出しが成功するたびに、以前の呼び出しの以前の値が破棄されます。

トランザクションの完了後にこの関数を呼び出さないことは、この関数が以前に呼び出され、両方のバッファー長がゼロに設定され、 aRequestTransactionFlagfalse設定されている場合とaRequestTransactionFlagです。

いったんaOutputBufLenのバイトaOutputBufクロックアウトされたマスタがSPIトランザクションを終了するまで、MISOピンがセットハイでなければなりません。これは、トランザクションの長さまで0xFFバイトでaOutputBufの終わりをパディングすることと機能的に同等です。

aInputBufLenバイトがMOSIからクロックインされると、SPIマスターがトランザクションを終了するまで、MOSIピンからの後続のすべての値は無視されます。

SPIマスターがトランザクションを終了する前にaInputBufLenまたはaOutputBufLen (または両方)が使い果たされた場合でも、トランザクションの進行中のサイズを追跡して、トランザクション完了コールバックに渡す必要があることに注意してください。たとえば、 aInputBufLen 10に等しく、 aOutputBufLen 20に等しく、30バイトアウトSPIマスタークロックは、値30は、取引完了コールバックに渡されます。

NULLポインターがaOutputBufまたはaInputBufとして渡された場合、そのバッファーポインターは以前の/現在の値から変更されるべきではないことを意味します。この場合、対応する長さの引数は無視する必要があります。たとえば、 otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false)は、入力バッファーポインターとその長さを変更しますが、出力バッファーポインターは以前と同じままです。

トランザクションの進行中にこの関数を呼び出すと、すべての引数が無視され、戻り値はOT_ERROR_BUSYになりOT_ERROR_BUSY

詳細
パラメーター
[in] aOutputBuf
MISOピンに書き込むデータ
[in] aOutputBufLen
出力バッファのサイズ(バイト単位)
[in] aInputBuf
MOSIピンから読み取るデータ
[in] aInputBufLen
入力バッファのサイズ(バイト単位)
[in] aRequestTransactionFlag
ホスト割り込みを設定する必要がある場合はtrueに設定します
戻り値
OT_ERROR_NONE
トランザクションは正常に準備されました。
OT_ERROR_BUSY
トランザクションは現在進行中です。
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable()が呼び出されていません。