معرّف SPI

تشمل هذه الوحدة فكرة مجرّدة للمنصة الخاصة بعبودية "SPI".

ملخّص

أنواع المحددات

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 التالية

أنواع المحددات

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/رد اتصال آخر.

التفاصيل
المَعلمات
[in] aContext
تم تمرير مؤشر السياق إلى otPlatSpiSlaveEnable().
[in] aOutputBuf
قيمة aOutputBuf من المكالمة الأخيرة إلى otPlatSpiSlavePrepareTransaction()
[in] aOutputBufLen
قيمة aOutputBufLen من المكالمة الأخيرة إلى otPlatSpiSlavePrepareTransaction()
[in] aInputBuf
قيمة aInputBuf من آخر مكالمة إلى otPlatSpiSlavePrepareTransaction().
[in] aInputBufLen
قيمة aInputBufLen من آخر مكالمة إلى otPlatSpiSlavePrepareTransaction()
[in] aTransactionLength
طول المعاملة المكتملة بالبايت.
المرتجعات
صحيح. بعد عرض هذه الاستدعاءات، يجب أن يستدعي النظام الأساسي استدعاء العملية aProcessCallback، وتكون القيمة FALSE في حال لم تكن هناك حاجة إلى المعالجة ولا تحتاج إلى استدعاء استدعاء العملية.

otPlatSpiSlaveTransactionProcessCallback

void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)

ويتم استدعاء هذا الإجراء بعد استدعاء ردّ الأموال وإكمال المعاملة وإرجاع TRUE لتنفيذ أي معالجة إضافية مطلوبة.

على عكس otPlatSpiSlaveTransactionCompleteCallback التي يمكن طلبها من أي سياق لنظام التشغيل (على سبيل المثال، يجب أن يتم طلب معاودة الاتصال هذه من سياق نظام التشغيل نفسه مثل أي واجهة برمجة تطبيقات OpenThread أو استدعاء آخر.

التفاصيل
المَعلمات
[in] aContext
تم تمرير مؤشر السياق إلى otPlatSpiSlaveEnable().

الدوال

otPlatSpiSlaveإيقاف

void otPlatSpiSlaveDisable(
  void
)

يجب إيقاف واجهة التابع لـ SPI.

otPlatSpiSlaveتفعيل

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 all0xFF` وتجاهل جميع وحدات البايت المستلَمة.

التفاصيل
المَعلمات
[in] aCompleteCallback
مؤشر للإشارة إلى اكتمال استدعاء المعاملة
[in] aProcessCallback
مؤشر لمعالجة معاودة الاتصال
[in] aContext
سيتم تمرير مؤشر السياق إلى معاودة الاتصال.
قيم الإرجاع
OT_ERROR_NONE
تم تفعيل واجهة SPI Slave بنجاح.
OT_ERROR_ALREADY
تم تفعيل واجهة SPI Slave حاليًا.
OT_ERROR_FAILED
تعذّر تفعيل واجهة SPI Slave.

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) بشكل مرتفع حتى ينهي الشريحة الرئيسية معاملة SPI. هذه هي القيمة المكافئة للعمل المتروكة في نهاية aOutputBuf مع استخدام 0xFF بايت في طول المعاملة.

بعد تسجيل aInputBufLen بايت من aInputBuf من MOSI، يتم تجاهل جميع القيم اللاحقة من تثبيت MOSI إلى أن ينهي مشرف SPI المعاملة.

يُرجى العِلم أنّه حتى في حال استنفاد aInputBufLen أو aOutputBufLen (أو كليهما) قبل إنهاء مقدّم خدمة SPI لإحدى المعاملات، يجب تتبُّع الحجم المستمر للمعاملة ليتم تمريره إلى معاودة الاتصال عند اكتمال المعاملة. على سبيل المثال، إذا كانت 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
يتم الضبط على "صحيح" في حال كان يجب ضبط مقاطعة المضيف
قيم الإرجاع
OT_ERROR_NONE
تمّ إعداد المعاملة بنجاح.
OT_ERROR_BUSY
هناك معاملة قيد التقدم حاليًا.
OT_ERROR_INVALID_STATE
لم يتم استدعاء otPlatSpiSlaveEnable().

الموارد

تبدأ مواضيع مراجع واجهة برمجة تطبيقات OpenThread من رمز المصدر، وهو متاح على GitHub. للحصول على مزيد من المعلومات أو للمساهمة في المستندات، يمكنك الاطّلاع على المراجع.