שלושה פרוטוקולים, אותה משימה בסיסית
בתוך כמעט כל מוצר אלקטרוני מודרני יש מיקרו-בקר שמדבר עם רכיבים אחרים: חיישנים, זיכרון, תצוגה, מודול תקשורת. השיחה הזו מתנהלת כמעט תמיד באחד משלושה פרוטוקולים ותיקים — I2C, SPI או UART. מי שמתעניין בהבדל בין I2C SPI UART מגלה שאין "טוב ביותר": לכל אחד תפקיד טבעי, ובמוצר אמיתי שלושתם חיים לרוב זה לצד זה על אותו מעגל. הבנת ההבדלים חשובה גם ליזם לא טכני — כי הבחירה משפיעה על מחיר הרכיבים, על מורכבות הקושחה ועל היכולת להרחיב את המוצר בעתיד.
UART — הוותיק והפשוט
UART הוא חיבור נקודה-לנקודה בין שני רכיבים בלבד: קו שידור (TX), קו קליטה (RX), בלי שעון משותף. שני הצדדים מסכימים מראש על מהירות (Baud Rate — נפוץ 9,600 עד 921,600 סיביות לשנייה). זה הפרוטוקול של פלטי דיבוג, של מודולי GPS וסלולר, ושל תקשורת בין שני מעבדים.
- יתרונות: פשטות מקסימלית, שני קווים בלבד, נתמך בכל מיקרו-בקר, עובד טוב גם למרחקים של מטרים (ועם ממיר RS-485 — מאות מטרים).
- חסרונות: רק שני משתתפים, איטי יחסית, ואם המהירויות לא מכוונות זהה — הכול משתבש.
I2C — הרבה רכיבים על שני חוטים
I2C משתמש בשני קווים משותפים (נתונים ושעון) שעליהם יושבים עשרות רכיבים, כל אחד עם כתובת משלו. המהירות הנפוצה 100 או 400 קילוהרץ, ובמצבים מהירים עד 3.4 מגהרץ. רוב החיישנים הזולים בשוק — טמפרטורה, לחות, תאוצה, לחץ — מדברים I2C, ולכן הוא נמצא כמעט בכל מוצר עם חיישנים, כמתואר במאמר על חיישנים במוצר חדש.
- יתרונות: חוסך רגליים במיקרו-בקר, קל להוסיף רכיבים, היצע חיישנים עצום.
- חסרונות: איטי, רגיש לקיבול על קווים ארוכים, וכתובות כפולות של שני רכיבים זהים דורשות פתרון. באגים של I2C הם קלאסיקה שמאתרים עם לוגיק אנלייזר — ראו כלי דיבוג לפיתוח embedded.
SPI — כשצריך מהירות
SPI משתמש בארבעה קווים לפחות: שעון, נתונים בשני הכיוונים, וקו בחירה נפרד לכל רכיב. בתמורה מקבלים מהירות של עשרות מגהרץ — פי 10 עד פי 100 מ-I2C. זה הפרוטוקול של תצוגות, זיכרון פלאש, כרטיסי SD ומודולי רדיו.
- יתרונות: מהיר מאוד, פשוט לוגית, אמין.
- חסרונות: כל רכיב נוסף דורש קו בחירה נוסף — צריכת רגליים גדלה, וניתוב המעגל מסתבך, נושא שנוגע ישירות לתכנון המעגל המודפס.
טבלת החלטה מהירה
- חיישנים איטיים (קריאה כל שנייה): I2C — חסכוני ופשוט.
- תצוגה, זיכרון, קובצי אודיו, רדיו: SPI — רק הוא עומד בקצב.
- מודול GPS/סלולר או קישור בין שני מעבדים: UART.
- חיווט ארוך בתוך מכונה או בין יחידות: UART עם RS-485, לא I2C.
ומה עם חיווט ארוך או סביבה רועשת?
שלושת הפרוטוקולים נועדו למרחקים קצרים — סנטימטרים עד עשרות סנטימטרים על אותו מעגל. כשצריך לחבר יחידות מרוחקות, בתוך מכונה גדולה או בין ארונות ציוד, עוברים לשכבה פיזית חסינה יותר: RS-485 (שמריץ UART על זוג מוליכים דיפרנציאלי למאות מטרים) או CAN, הסטנדרט מעולם הרכב, שמצטיין בסביבות עתירות הפרעות חשמליות. הכלל פשוט: בתוך הקופסה — I2C ו-SPI; אל מחוץ לקופסה — פרוטוקול דיפרנציאלי.
מה זה אומר ברמת המוצר
הבחירה מתחילה עוד לפני הקושחה — בבחירת המיקרו-בקר: צריך לוודא שיש בו מספיק ערוצי I2C, SPI ו-UART לכל הרכיבים המתוכננים, עם רזרבה להרחבה. מיקרו-בקר "קטן מדי" בערוץ אחד גורר לפעמים החלפת רכיב באמצע פיתוח. שיקולי הבחירה מפורטים במאמר על בחירת מיקרו-בקר למוצר. בצד הקושחה, כתיבת הדרייברים לשלושת הפרוטוקולים היא לחם וחומצה של כל מפתח משובץ — עוד על עולם הזה בעמוד פיתוח תוכנה embedded.
ובשורה למי שלא מתכוון להלחים בעצמו: כשחברת הפיתוח שלכם אומרת "החיישן הזה ב-I2C והמסך ב-SPI", עכשיו אתם יודעים שהיא פשוט מחברת כל רכיב בדרך שבה הוא בנוי לדבר — ושהשילוב הנכון של השלושה הוא סימן לתכן מסודר, לא למורכבות מיותרת.
רוצים להפוך רעיון למוצר? צרו קשר עם צוות פרוג'קטס האוס בע"מ – טלפון: 054-8936922 | דוא"ל: info@projects-house.com – ונשמח ללוות אתכם משלב הרעיון ועד המדף.