עבד ל-SPI
מודול זה כולל את הפשטת הפלטפורמה עבור תקשורת עבדים של 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)
|
הכנת הנתונים לעסקת 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 יהיו אפס.
ניתן לקרוא לקריאה חוזרת (callback) הזו מהקשר ISR. הערך המוחזר מהפונקציה הזו מציין אם נדרש עיבוד נוסף. אם TRUE מוחזר, צריך להפעיל את הטמעת מנהל התקן spi-sla של הפלטפורמה (aProcessCallback שמוגדר ב-otPlatSpiSlaveEnable()). בניגוד לקריאה החוזרת (callback) הזו, יש להפעיל את הקריאה החוזרת (callback) מאותו הקשר של מערכת ההפעלה שבו מתבצעת קריאה לכל ממשק API או קריאה חוזרת אחרים ב-OpenThread API אחרים.
| פרטים | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| פרמטרים |
|
||||||||||||
| החזרות |
הערך TRUE אם אחרי הקריאה החוזרת הפלטפורמה צריכה להפעיל את התהליך של התקשרות חזרה
aProcessCallback, הערך FALSE אם אין מה לעבד ואין צורך להפעיל את התהליך להתקשרות חזרה. |
||||||||||||
otPlatSpiSlaveTransactionProcessCallback
void(* otPlatSpiSlaveTransactionProcessCallback)(void *aContext)
מופעלת קריאה חוזרת אחרי השלמת העסקה ומחזירה את TRUE כדי לבצע עיבוד נוסף.
בניגוד ל-otPlatSpiSlaveTransactionCompleteCallback שניתן לקרוא לה מכל הקשר של מערכת הפעלה (למשל, ISR), יש לקרוא לקריאה החוזרת (callback) הזו מאותו הקשר של מערכת ההפעלה כמו כל ממשק API או קריאה חוזרת אחרים של 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 all0xFF' בייטים ומוחקים את כל הבייטים שהתקבלו.
| פרטים | |||||||
|---|---|---|---|---|---|---|---|
| פרמטרים |
|
||||||
| ערכים מוחזרים |
|
||||||
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 מסיים את העסקה, עדיין יש לעקוב אחר הגודל השוטף של העסקה כדי שהיא תועבר לקריאה חוזרת (callback) של העסקה. לדוגמה, אם aInputBufLen שווה ל-10 ו-aOutputBufLen שווה ל-20 וה-SPI הראשי מוציא 30 בייטים, הערך 30 מועבר לקריאה החוזרת (callback) של העסקה.
אם מצביע NULL מועבר בתור aOutputBuf או aInputBuf, המשמעות היא שמצביע המאגר לא יכול להשתנות מהערך הקודם/הנוכחי שלו. במקרה כזה, יש להתעלם מהארגומנט של האורך המתאים. לדוגמה, otPlatSpiSlavePrepareTransaction(NULL, 0, aInputBuf, aInputLen, false) משנה את מצביע מאגר הקלט לקלט ואת האורך שלו, אבל משאיר את מצביע מאגר הפלט כמו קודם.
כל קריאה לפונקציה הזו במהלך ביצוע עסקה תגרום להתעלמות מכל הארגומנטים והערך המוחזר יהיה OT_ERROR_BUSY.
| פרטים | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| פרמטרים |
|
||||||||||
| ערכים מוחזרים |
|
||||||||||
מקורות מידע
המקור של נושאי העזר של OpenThread API הוא קוד המקור, שזמין ב-GitHub. אפשר לקרוא מידע נוסף או לתרום למסמכי התיעוד שלנו בדף מקורות מידע.