SPI Slave
تتضمن هذه الوحدة تجريد النظام الأساسي لاتصالات رقيق واجهة SPI.
ملخّص
تحديدات النوع |
|
---|---|
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)
|
تحضير البيانات لمعاملة واجهة موفر الخدمة التالية.
|
تحديدات النوع
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
صفرًا.
يمكن استدعاء معاودة الاتصال هذه من سياق ISR. وتشير القيمة المعروضة من هذه الدالة إلى ما إذا كانت هناك حاجة إلى معالجة إضافية. إذا تمت إعادة TRUE
، يجب أن يستدعي تنفيذ برنامج تشغيل الرقيقة الخاص بالنظام الأساسي استدعاء استدعاء عملية المعاملة (aProcessCallback
الذي تم ضبطه في otPlatSpiSlaveEnable()
) والذي يجب أن يتم طلبه من سياق نظام التشغيل نفسه الذي يتم استدعاؤه من خلال أي واجهة برمجة تطبيقات أو معاودة الاتصال على OpenThread أخرى.
التفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||||||||
المرتجعات |
TRUE إذا تم عرض هذا الاستدعاء، يجب أن يستدعي النظام الأساسي استدعاء العملية
aProcessCallback ، وFALSE إذا لم يكن هناك شيء لمعالجة المشكلة ولا حاجة لاستدعاء العملية. |
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
يتم استدعاء الحساب بعد طلب معاودة الاتصال بعد اكتمال المعاملة ويتم إرجاع الرقم TRUE
لإجراء أي معالجة إضافية مطلوبة.
على عكس otPlatSpiSlaveTransactionCompleteCallback
التي يمكن طلبها من أي سياق نظام تشغيل (على سبيل المثال، ISR)، يجب استدعاء معاودة الاتصال هذه من سياق نظام التشغيل نفسه مثل أي واجهة برمجة تطبيقات أو معاودة الاتصال عبر OpenThread.
التفاصيل | |||
---|---|---|---|
المَعلمات |
|
الدوال
otPlatSpiSlaveDisable
void otPlatSpiSlaveDisable( void )
إيقاف واجهة واجهة SPI وإيقافها.
otPlatSpiSlaveEnable
otError otPlatSpiSlaveEnable( otPlatSpiSlaveTransactionCompleteCallback aCompleteCallback, otPlatSpiSlaveTransactionProcessCallback aProcessCallback, void *aContext )
تهيئة واجهة تابع واجهة SPI.
تجدر الإشارة إلى أنّ رقيق واجهة SPI ليس جاهزًا بالكامل إلى أن يتم إعداد المعاملة باستخدام otPlatSPISlavePrepareTransaction()
.
في حال تجاهل 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 معاودة الاتصال بإكمال المعاملة أو إلى أن يتم الاتصال بعد المكالمة التالية إلى otPlatSpiSlavePrepareTransaction()
.
قد يتم طلبه أكثر من مرة قبل أن يبدأ مشرف واجهة برمجة التطبيقات العملية المعاملة. سيؤدي كل استدعاء ناجح لهذه الدالة إلى تجاهل القيم السابقة من عمليات الاستدعاء السابقة.
عدم استدعاء هذه الدالة بعد معاملة مكتملة هو نفسه كما لو تم استدعاء هذه الدالة في السابق مع ضبط أطوال المخزن المؤقت على صفر وضبط aRequestTransactionFlag
على false
.
بعد تسجيل الخروج من aOutputBufLen
بايت من aOutputBuf
، سيتم ضبط رقم التعريف الشخصي MISO على "مرتفع" إلى أن ينهي المشرف الرئيسي معاملة واجهة SPI. هذه المكافئات الوظيفية هي المساحة المتروكة نهاية aOutputBuf
مع ترك 0xFF
بايت على طول المعاملة.
بعد تسجيل aInputBufLen
بايت من aInputBuf من MOSI، يتم تجاهل جميع القيم اللاحقة من رقم التعريف الشخصي 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 من رمز المصدر المتاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في مستنداتنا، يمكنك الاطّلاع على المراجع.