Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एसपीआई गुलाम

इस मॉड्यूल में SPI दास संचार के लिए मंच अमूर्तता शामिल है।

सारांश

typedefs

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)
एसपीआई गुलाम इंटरफेस को इनिशियलाइज़ करें।
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 लेनदेन दी गई लंबाई के साथ पूरा हो गया है।

दास को पत्र लिखा डेटा सूचक ने संकेत दिया करने के लिए लिखा गया है aInputBuf करने के लिए पिछले कॉल करने के लिए तर्क otPlatSpiSlavePrepareTransaction()

इस फ़ंक्शन को कॉल करने के बाद, otPlatSpiSlavePrepareTransaction() अमान्य है और मान्य होने के लिए अगले लेनदेन के लिए फिर से कॉल किया जाना चाहिए।

ध्यान दें कि इस फ़ंक्शन को हमेशा लेनदेन के अंत में कहा जाता है, भले ही otPlatSpiSlavePrepareTransaction() अभी तक नहीं बुलाया गया हो। ऐसे मामलों में, aOutputBufLen और aInputBufLen शून्य होंगे।

इस कॉलबैक को आईएसआर संदर्भ से बुलाया जा सकता है। इस फ़ंक्शन से वापसी मान इंगित करता है कि क्या किसी और प्रसंस्करण की आवश्यकता है। यदि TRUE को प्लेटफ़ॉर्म वापस कर दिया जाता है, तो spi-slave ड्राइवर कार्यान्वयन को लेन-देन प्रक्रिया callback ( aProcessCallback को otPlatSpiSlaveEnable() ) में सेट करना होगा जो इस कॉलबैक के विपरीत उसी OS संदर्भ से कॉल किया जाना चाहिए जिसे किसी अन्य OpenThread API / कॉलबैक कहा जाता है।

विवरण
पैरामीटर
[in] aContext
संदर्भ सूचक otPlatSpiSlaveEnable() में उत्तीर्ण हुआ।
[in] aOutputBuf
का मूल्य aOutputBuf पिछले कॉल से करने के लिए otPlatSpiSlavePrepareTransaction()
[in] aOutputBufLen
का मूल्य aOutputBufLen पिछले कॉल से करने के लिए otPlatSpiSlavePrepareTransaction()
[in] aInputBuf
[in] aInputBufLen
[in] aTransactionLength
पूर्ण लेनदेन की लंबाई, बाइट्स में।
रिटर्न
TRUE यदि इस कॉल के वापस आने के बाद, प्लेटफ़ॉर्म को प्रक्रिया कॉलबैक aProcessCallback , FALSE को लागू करना चाहिए, अगर प्रक्रिया करने के लिए कुछ भी नहीं है और प्रक्रिया कॉलबैक को लागू करने की कोई आवश्यकता नहीं है।

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

लेन-देन पूर्ण कॉलबैक के बाद बुलाया जाता है और आवश्यक किसी भी आगे की प्रक्रिया करने के लिए TRUE लौटाता है।

विपरीत otPlatSpiSlaveTransactionCompleteCallback जिसे किसी भी OS संदर्भ (जैसे, ISR) से कॉल किया जा सकता है, इस कॉलबैक MUST को उसी OS संदर्भ से किसी अन्य OpenThread API / कॉलबैक के रूप में कहा जा सकता है।

विवरण
पैरामीटर
[in] aContext
संदर्भ सूचक otPlatSpiSlaveEnable() में उत्तीर्ण हुआ।

कार्य

otPlatSpiSlaveDisable

void otPlatSpiSlaveDisable(
  void
)

शटडाउन और SPI दास इंटरफ़ेस को अक्षम करें।

otPlatSpiSlaveEnable

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

एसपीआई स्लेव इंटरफेस को आरम्भ करें।

ध्यान दें कि जब तक कोई लेनदेन otPlatSPISlavePrepareTransaction() का उपयोग करके तैयार नहीं हो जाता है, तब तक SPI दास पूरी तरह से तैयार नहीं होता है।

यदि 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 मास्टर द्वारा लेन-देन शुरू करने से पहले इस फ़ंक्शन को एक से अधिक बार कहा जा सकता है। इस फ़ंक्शन के लिए प्रत्येक सफल कॉल पिछले कॉल से पूर्व मानों को त्यागने का कारण होगा।

एक पूर्ण लेनदेन के बाद इस फ़ंक्शन को कॉल नहीं करना वैसा ही है जैसे कि यह फ़ंक्शन पहले बफर में सेट दोनों लंबाई के साथ बुलाया गया था और aRequestTransactionFlag को false सेट किया गया।

एक बार जब aOutputBufLen की बाइट्स aOutputBuf बाहर क्लॉक किया गया है, MISO पिन सेट उच्च किया जाएगा जब तक गुरु एसपीआई लेनदेन खत्म। यह लेन-देन की लंबाई के लिए 0xFF बाइट्स के साथ aOutputBuf के अंत को aOutputBuf लिए कार्यात्मक बराबर है।

एक बार जब एक aInputBufLen बाइट्स InInputBuf को MOSI से देखा गया है, MOSI पिन से सभी बाद के मूल्यों को तब तक नजरअंदाज किया जाता है जब तक कि SPI मास्टर लेन-देन पूरा नहीं कर लेता।

ध्यान दें कि यदि SPI मास्टर किसी लेनदेन को पूरा करने से पहले किसी aInputBufLen या aOutputBufLen (या दोनों) को समाप्त कर देता है, तब भी लेन-देन के जारी आकार को लेन-देन पूर्ण वापसी के लिए पारित किया जाना चाहिए। उदाहरण के लिए, यदि aInputBufLen 10 के बराबर है और aOutputBufLen 20 के बराबर है और SPI मास्टर 30 बाइट्स aInputBufLen है, तो मान 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
यदि होस्ट व्यवधान सेट किया जाना चाहिए, तो सही पर सेट करें
वापसी मान
OT_ERROR_NONE
लेन-देन सफलतापूर्वक तैयार किया गया था।
OT_ERROR_BUSY
वर्तमान में लेन-देन चल रहा है।
OT_ERROR_INVALID_STATE
otPlatSpiSlaveEnable () नहीं कहा गया है।