SPI 從屬處
這個模組包含 SPI 從屬通訊的平台抽象化機制。
摘要
Typedefs |
|
|---|---|
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 交易準備資料。
|
Typedefs
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,平台螺旋驅動程式實作必須叫用交易程序回呼 (在 otPlatSpiSlaveEnable() 中設定 aProcessCallback),與此回呼不同,必須從呼叫任何其他 OpenThread API/回呼的 OS 環境相同的 OS 環境中呼叫。
| 詳細說明 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 參數 |
|
||||||||||||
| 傳回 |
如果此呼叫之後傳回平台應叫用程序回呼
aProcessCallback,則為 TRUE;如果沒有可處理且無須叫用程序回呼,則為 FALSE。 |
||||||||||||
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
呼叫交易完成回呼後叫用,並傳回 TRUE,以進行所需的進一步處理。
與可從任何 OS 結構定義呼叫的 otPlatSpiSlaveTransactionCompleteCallback 不同 (例如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 all0xFF` 位元組,並捨棄所有收到的位元組。
| 詳細說明 | |||||||
|---|---|---|---|---|---|---|---|
| 參數 |
|
||||||
| 傳回值 |
|
||||||
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 位元組處理完畢後,MISO 圖釘將設為較高的金額,直到主要節點完成 SPI 交易為止。這相當於在交易期間與 aOutputBuf 結尾填補的 0xFF 個位元組。
當 MOSI 中將 aInputBuf 的 aInputBufLen 位元組加上時,系統會忽略 MOSI PIN 碼的所有後續值,直到 SPI 主要程序完成交易為止。
請注意,即使 aInputBufLen 或 aOutputBufLen (或兩者) 在 SPI 主要完成交易前已用盡,仍必須追蹤交易的持續大小,以便傳送至交易完成回呼。舉例來說,如果 aInputBufLen 等於 10,而 aOutputBufLen 等於 20,而 SPI 主影格為 30 個位元組,則值 30 會傳遞至交易完成回呼。
如果 NULL 指標是以 aOutputBuf 或 aInputBuf 的形式傳入,代表緩衝區指標不應從先前的值/目前值變更。在這種情況下,應該忽略對應的長度引數。例如,otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) 會變更輸入緩衝區指標及其長度,但輸出緩衝區指標則與之前相同。
若在交易進行期間呼叫這個函式,將會造成所有引數遭到忽略,而且傳回值會是 OT_ERROR_BUSY。
| 詳細說明 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 參數 |
|
||||||||||
| 傳回值 |
|
||||||||||
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。