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 トランザクションが完了したことを示します。

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

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

この関数は、otPlatSpiSlavePrepareTransaction() が呼び出されていない場合でも、トランザクションの終了時に常に呼び出されます。この場合、aOutputBufLenaInputBufLen はゼロになります。

このコールバックは ISR コンテキストから呼び出すことができます。この関数からの戻り値は、追加の処理が必要かどうかを示します。TRUE が返された場合、プラットフォームの spi-slave ドライバ実装はトランザクション プロセスのコールバック(otPlatSpiSlaveEnable() で設定される aProcessCallback)を呼び出す必要があります。このコールバックは、他の OpenThread API と同じ OS コンテキストから呼び出される必要があります。コールバックが呼び出されます。

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

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

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

任意の OS コンテキストから呼び出せる otPlatSpiSlaveTransactionCompleteCallback とは異なり( ISR)、このコールバックは、他の 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 all0xFF` バイトの場合、受信したすべてのバイトを破棄します。

詳細
パラメータ
[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 に設定して関数を呼び出した場合と同じです。

aOutputBufaOutputBufLen バイトがクロックされると、マスターが SPI トランザクションを完了するまで MISO ピンは高値に設定されます。これは、aOutputBuf の末尾に 0xFF バイトのデータをトランザクションの長さまでパディングする機能的なものです。

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

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

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

トランザクションの実行中にこの関数を呼び出すと、すべての引数が無視され、戻り値は 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() が呼び出されていない。

リソース

OpenThread API リファレンスのトピックは、GitHub で入手できるソースコードに基づいています。 詳細については、ドキュメントをご覧ください。