SPI スレーブ
このモジュールには、SPI スレーブ通信のためのプラットフォーム抽象化が含まれています。
概要
Typedef |
|
|---|---|
otPlatSpiSlaveTransactionCompleteCallback)(void *aContext, uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, uint16_t aTransactionLength)
|
typedefbool(*
指定された長さで SPI トランザクションが完了したことを示します。 |
otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
|
typedefvoid(*
トランザクション完了コールバックが呼び出された後に呼び出され、 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() がまだ呼び出されていなくても、トランザクションの終了時に常に呼び出されます。このような場合、aOutputBufLen と aInputBufLen はゼロになります。
このコールバックは ISR コンテキストから呼び出すことができます。この関数の戻り値は、さらに処理が必要かどうかを示します。TRUE が返された場合、プラットフォームの spi-slave ドライバの実装は、トランザクション プロセス コールバック(otPlatSpiSlaveEnable() で設定された aProcessCallback)を呼び出す必要があります。このコールバックは、他の OpenThread API/コールバックが呼び出されるのと同じ OS コンテキストから呼び出す必要があります。
| 詳細 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| パラメータ |
|
||||||||||||
| 戻り値 |
この呼び出しの後にプロセス コールバック
aProcessCallback を呼び出す必要がある場合は TRUE、処理するものがなく、プロセス コールバックを呼び出す必要がない場合は FALSE です。 |
||||||||||||
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
トランザクション完了コールバックが呼び出された後に呼び出され、TRUE を返して、必要な処理を続行します。
otPlatSpiSlaveTransactionCompleteCallback は任意の OS コンテキスト(ISR など)の場合、このコールバックは、他の OpenThread API/コールバックと同じ OS コンテキストから呼び出されなければなりません。
| 詳細 | |||
|---|---|---|---|
| パラメータ |
|
||
関数
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 が 0xFF` バイトの場合、受信したすべてのバイトを破棄します。
| 詳細 | |||||||
|---|---|---|---|---|---|---|---|
| パラメータ |
|
||||||
| 戻り値 |
|
||||||
otPlatSpiSlavePrepareTransaction
otError otPlatSpiSlavePrepareTransaction( uint8_t *aOutputBuf, uint16_t aOutputBufLen, uint8_t *aInputBuf, uint16_t aInputBufLen, bool aRequestTransactionFlag )
次の SPI トランザクション用にデータを準備します。
データポインタは、トランザクション完了コールバックが SPI スレーブ ドライバによって呼び出されるまで、または次の otPlatSpiSlavePrepareTransaction() の呼び出し後まで、有効なままでなければなりません。
SPI マスターがトランザクションを開始する前に複数回呼び出すことができます。この関数が成功するたびに、それ以前の呼び出しの値は破棄されます。
トランザクションの完了後にこの関数を呼び出さないことは、以前にこの関数を呼び出した際に、バッファ長を 0 に設定し、aRequestTransactionFlag を false に設定して呼び出した場合と同じです。
aOutputBuf の aOutputBufLen バイトがクロックアウトされたら、マスターが SPI トランザクションを終了するまで MISO ピンをハイレベルに設定します。これは、aOutputBuf の末尾をトランザクションの長さまで 0xFF バイトでパディングすることと同等です。
aInputBufLen バイトの aInputBuf が MOSI からクロックインされると、SPI マスターがトランザクションを終了するまで、MOSI ピンからの後続の値はすべて無視されます。
SPI マスターがトランザクションを完了する前に aInputBufLen または aOutputBufLen(あるいはその両方)を使い切った場合でも、トランザクションの現在のサイズを追跡して、トランザクション完了コールバックに渡すようにする必要があります。たとえば、aInputBufLen が 10、aOutputBufLen が 20 で、SPI マスターが 30 バイトをクロックアウトする場合、値 30 がトランザクション完了コールバックに渡されます。
NULL ポインタが aOutputBuf または aInputBuf として渡された場合、そのバッファ ポインタは以前の値または現在の値から変更してはならないことを意味します。この場合、対応する length の引数は無視されます。たとえば、otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) は入力バッファ ポインタとその長さを変更しますが、出力バッファ ポインタは以前と同じままです。
トランザクションの進行中にこの関数を呼び出すと、すべての引数が無視され、戻り値は OT_ERROR_BUSY になります。
| 詳細 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| パラメータ |
|
||||||||||
| 戻り値 |
|
||||||||||
関連情報
OpenThread API リファレンスのトピックは、GitHub で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。