עבד ל-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 all
0xFF' בייטים ומוחקים את כל הבייטים שהתקבלו.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
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. אפשר לקרוא מידע נוסף או לתרום למסמכי התיעוד שלנו בדף מקורות מידע.