פרוטוקול SPI – הסבר מפורט על עיקרון הפרוטוקול וחיבור רכיבים באמצעותו.

פרוטוקול SPI

מדריך למידה הסבר מפורט על הפרוטוקול SPI העובד במיקרו-בקר ארדואינו אונו, במדריך שלפניכם ניתן למצוא פירוט בשפה פשוטה: 
1. מהו? 
2. עיקרון פעולה. 
3. שימושים שניתן לעשות איתו בלוח ארדואינו. 
4. באיזה רגלים עובד הפרוטוקול וכו'

הפוסט מומלץ לכל תלמיד, סטודנט, מורה או מרצה בתחום ה- Arduino ובתחום הנחיית הפרויקטים.

הקדמה

פרוטוקול SPI‏ (Serial Peripheral Interface) הוא שיטת תקשורת סדרתית סינכרונית נפוצה להעברת נתונים בין רכיבים אלקטרוניים.

SPI משמש בעיקר לתקשורת בין מעבד לבין התקני קצה כגון חיישנים, זיכרונות, מסכים ועוד.

בפוסט זה נסביר מהו בדיוק פרוטוקול SPI וכיצד הוא פועל – נבין מהם קווי התקשורת ותפקידם, נכיר את מבנה חבילת הנתונים וקצב העברת המידע המהיר, נסקור את מצבי התקשורת השונים האפשריים ונראה דוגמאות לשימוש בפרוטוקול זה.

בסוף הפוסט תהיה לך הבנה ברורה של העקרונות והיתרונות של SPI כדי ליישמו בפרויקטים אלקטרוניים משלך. הכל יוסבר בשפה פשוטה ובדרך נגישה.

מהו הפרוטוקול SPI

פותח בשנות ה-80 על ידי מוטורולה כפרוטוקול תקשורת סינכרוני סדרתי להעברת נתונים בקצב גבוה בין מעבד להתקני קצה.
בניגוד ל-I2C,‏ SPI‏ משתמש ב-4 קווים לתקשורת:
☸ MOSI – Master Out Slave In – קו נתונים מהמאסטר לעבד
☸ MISO – Master In Slave Out – קו נתונים מהעבד למאסטר
☸ SCK – אות שעון סדרתי
☸ SS – אות בחירת עבד

העברת הנתונים ב-SPI מתבצעת באופן סינכרוני עם אות השעון. המאסטר שולח נתונים בקו MOSI וקורא נתונים מהעבד בקו MISO בהתאמה לפולסי שעון SCK.‏ קו ה-SS‏ משמש כדי לבחור עבד אחד מתוך מספר התקני קצה המחוברים לאותה רשת SPI.‏
יתרונותיו של SPI הם קצב העברה גבוה, תקשורת מלאה דופלקס ופשטות מימוש הודות למספר החוטים המצומצם.
SPI‏ נפוץ ביישומים כגון תקשורת עם כרטיסי SD, מסכי LCD, חיישנים, ממירים A2D ועוד.

מאפיינים פרוטוקול SPI

☸ תקשורת סינכרונית סדרתית – העברת הנתונים מתבצעת בצורה סדרתית סינכרונית לאות השעון
☸ 4 קווי תקשורת – MOSI, MISO, CLK, SS
☸ תקשורת מהירה – עד 10 מגה העברה לשנייה ומעלה
☸ מבוסס על טופולוגיית מאסטר/סלייב – המאסטר שולט בתקשורת
☸ ניתן לחבר מספר רב של סלייבים
☸ בחירת סלייב פעיל על ידי קו נפרד SS
☸ פשוט וקל למימוש בחומרה
☸ שימוש נרחב במערכות מוטמעות ותקשורת עם התקני קצה
☸ תומך במצבי תקשורת שונים כגון חד כיווני, דו כיווני ועוד
☸ פחות חיווט מפרוטוקולים אחרים כמו I2C

מבנה חבילת (מסגרת) נתונים בSPI

כאשר המאסטר רוצה לשלוח נתונים לעבד SPI, הוא בונה את החבילה כך:
המאסטר מפעיל את האות SS (Select Slave) כדי לבחור את העבד שאליו הוא רוצה לשלוח.
המאסטר מתחיל לשלוח פולסי שעון SCK בקצב קבוע.
בכל עליית פולס שעון, המאסטר מעביר ביט אחד של מידע על קו MOSI (Master Out Slave In).
בכל ירידת פולס שעון, העבד מחזיר ביט אחד של מידע על קו MISO (Master In Slave Out).
כך נשלחים הנתונים ביט אחר ביט, כאשר קצב ההעברה נקבע על ידי קצב אות השעון SCK.

נניח שאנחנו רוצים לשלוח את הבייט 10110011 (0xB3 בהקס) לעבד SPI.
המאסטר יבצע:
1. הפעלת אות SS לבחירת העבד המתאים
2. שליחת 8 פולסי שעון SCK
3. שליחת הביטים מ-MOSI: 10110011 (מהביט הנמוך ביותר לגבוה)
4. קריאת 8 הביטים החוזרים מ-MISO
5. הפסקת אות SS

כלומר, החבילה שנשלחת תיראה כך:

הפעלת SS10110011 →   MISO 8 bitהפסקת SS

כאשר:
10110011 – שמונת הביטים שמייצגים את הנתונים שאנחנו שולחים לעבד (במקרה זה 0xB3)
שליחת כל בית נתונים נוסף תתבצע באותה שיטה – הפעלת SS, שליחת 8 ביטים ב-MOSI, קריאת MISO, הפסקת SS.

התהליך חוזר על עצמו עבור כל בית נתונים שאנחנו רוצים להעביר בחבילה.
ב-SPI יש רצף קבוע של נתונים בכל כיוון, ללא שדות מיוחדים לתחילת חבילה או סיום חבילה כמו ב-I2C. המאסטר פשוט מפסיק לשלוח נתונים כשהוא גמר. 

יתרונות מרכזיים של פרוטוקול התקשורת SPI

☸ מהירות תקשורת גבוהה – עד 10 מגה-הרץ ומעלה הודות לתקשורת סינכרונית.
☸ פשטות וקלות יישום – רק 4 קווי תקשורת סטנדרטיים, ללא כתובות או התנגשויות.
☸ תקשורת דופלקס מלאה – נתונים זורמים בשני הכיוונים בו זמנית.
☸ ניתן לחבר מספר רב של התקנים – בעזרת קו נפרד לבחירת עבד SS.
☸ תמיכה במצבי תקשורת שונים – חד כיווני, דו כיווני ועוד.
☸ שימוש נפוץ במערכות מוטמעות ותקשורת עם התקני קצה.
☸ מתאים להעברת נתונים רציפה ללא חבילות נתונים.
☸ קל למימוש בחומרה הודות לממשק פשוט וסטנדרטי.

כמות רכיבים שניתן לחבר לפרוטוקול

בניגוד ל-I2C, בפרוטוקול SPI אין מגבלה מובנית על מספר הרכיבים שניתן לחברהסיבה לכך היא שב-SPI אין שימוש בכתובות לזיהוי הרכיבים השונים. במקום זאת, ישנו קו נפרד SS (Slave Select) שמשמש כדי לבחור את הרכיב הפעיל מתוך כלל ההתקנים המחוברים לאותה רשת SPI.
על ידי הפעלה של קו בחירת העבד SS המתאים, המאסטר יכול לתקשר עם הרכיב הרצוי מבין הרבים המחוברים.
לכן, המגבלה היחידה על מספר הרכיבים ב-SPI היא מספר קווי הבחירה SS שהמאסטר (הבקר) יכול לתמוך ולנהל: 
לוח ארדואינו אונו – ניתן לחבר עד 3 רכיבי SPI, מכיוון שיש 3 פינים זמינים לקווי בחירת העבד SS.
לוח ארדואינו מגה – ניתן לחבר עד 70 רכיבי SPI, מכיוון שיש 54 קווי GPIO זמינים לשימוש כקווי בחירת עבד SS.
לוח רספברי פיי – ניתן לחבר עד 8 רכיבי SPI, כיוון שיש 8 קווי GPIO שניתן להשתמש בהם כקווי בחירת עבד.
ESP32 – ניתן לחבר עד 46 רכיבי SPI, מכיוון שיש עד 46 קווי GPIO זמינים לבחירת עבד SS.

פירוט באיזה רגלי פועל הפרוטוקול לפי מיקרו-בקר

ארדואינו אונו:
☸ MISO – רגל 12
☸ MOSI – רגל 11
☸ SCK – רגל 13
☸ SS – רגלי 10, 9, 8

ארדואינו מגה:
☸ MISO – רגל 50

☸ MOSI – רגל 51
☸ SCK – רגל 52
☸ SS – רגלי 53-62 + 2-13

רספברי פיי:
☸ MISO – רגל 21

☸ MOSI – רגל 19
☸ SCK – רגל 23
☸ SS – רגלי 24-31

ESP32:
☸ MISO – רגל 25

☸ MOSI – רגל 23
☸ SCK – רגל 18
☸ SS – רגלי 5,4,0 + GPIO 34-39

הסבר כיצד הפרוטוקול SPI עובד

לפרוטוקול SPI יש 4 רגלים עיקריות:
☸ MOSI – רגל לשליחת מידע מהמאסטר

☸ MISO – רגל לקבלת מידע במאסטר
☸ SCK – רגל עבור אות השעון
☸ SS – רגל לבחירת העבד הפעיל


המיקרו-בקר (כמו ארדואינו) הוא ה"מאסטר" ושולט על התקשורת. שאר הרכיבים הם "עבדים".

המאסטר שולח אות שעון רציף ברגל SCK שמסנכרן את התקשורת.
בכל עליית אות שעון המאסטר שולח ביט אחד ב-MOSI והעבד מחזיר ביט אחד ב-MISO.
כך נשלחים הנתונים בטור סידרתי ומתבצעת תקשורת דופלקס.
עם הרגל SS המאסטר בוחר עבד ספציפי לתקשר איתו. יכולים להיות מספר עבדים באותה רשת.
אז SPI עובד על עיקרון של שעון ושליחת נתונים סידרתית סינכרונית בין מאסטר לעבדים. הכל ב4 רגלים בלבד!

אולי יעניין אותך גם...

EWB – מדריך מקיף לסימולציה וירטואלית למעגלים אלקטרוניים.

מדריך מקיף ל- EWB : סימולציה וירטואלית למעגלים אלקטרוניים. כולל יתרונות, ממשק משתמש, והוראות התקנה. מושלם למהנדסים, סטודנטים וחובבים.

נגישות
error: © תוכן זה שמור באמצעות זכויות יוצרים, אין אפשרות לבצע העתקה. ©