- מהו פרוטוקול תקשורת I2C?
- כיצד עובדת תקשורת I2C?
- היכן להשתמש בתקשורת I2C?
- I2C ב- MSP430: בקרת פוטנציומטר דיגיטלי AD5171
MSP430 היא פלטפורמה עוצמתית המסופקת על ידי טקסס אינסטרומנטס לפרויקטים משובצים, האופי הרב-תכליתי שלה גרם לה למצוא דרכים ליישומים רבים והשלב עדיין נמשך. אם עקבת אחר מדריכי MSP430 שלנו, היית שם לב שכבר סקרנו מגוון רחב של הדרכות במיקרו-בקר זה החל מהיסודות הבסיסיים. מאז, סקרנו את היסודות שאנו יכולים להיכנס לדברים מעניינים יותר כמו פורטל התקשורת.
במערכת העצומה של יישומים משובצים, אף מיקרו-בקר אינו יכול לבצע את כל הפעילויות בעצמו. בשלב מסוים של זמן עליו לתקשר למכשירים אחרים כדי לשתף מידע, ישנם סוגים רבים ושונים של פרוטוקולי תקשורת לשיתוף מידע זה, אך השימושים הנפוצים ביותר הם USART, IIC, SPI ו- CAN. לכל פרוטוקול תקשורת יש את היתרון והחסרון שלו. בואו נתמקד בקטע I2C לעת עתה מכיוון שזה מה שאנחנו הולכים ללמוד במדריך זה.
מהו פרוטוקול תקשורת I2C?
המונח IIC מייצג " מעגלים משולבים בין-לאומיים ". בדרך כלל זה מסומן כ- I2C או בריבוע C או אפילו כפרוטוקול ממשק דו-חוטי (TWI) במקומות מסוימים, אך כל זה אומר אותו דבר. I2C הוא פרוטוקול תקשורת סינכרוני שמשמעותו, שני המכשירים שמשתפים את המידע חייבים לשתף אות שעון משותף. יש לו רק שני חוטים לשיתוף מידע שמתוכם אחד משמש לאות הזין והשני משמש לשליחת וקבלת נתונים.
כיצד עובדת תקשורת I2C?
תקשורת I2C הוצגה לראשונה על ידי פיליפס. כאמור קודם יש לו שני חוטים, שני חוטים אלה יחוברו על פני שני מכשירים. כאן מכשיר אחד נקרא מאסטר והמכשיר השני נקרא עבד. תקשורת צריכה ותמיד תתרחש בין שני מאסטר ועבד. היתרון בתקשורת I2C הוא שניתן לחבר יותר מעבד אחד למאסטר.
התקשורת המלאה מתבצעת באמצעות שני החוטים הללו, כלומר שעון סידורי (SCL) ונתונים סידוריים (SDA).
שעון סידורי (SCL): משתף את אות השעון שנוצר על ידי המאסטר עם העבד
נתונים סידוריים (SDA): שולח את הנתונים אל המאסטר והעבד וממנו.
בכל זמן נתון רק המאסטר יוכל ליזום את התקשורת. מכיוון שיש יותר מעבד אחד באוטובוס, המאסטר צריך להתייחס לכל עבד באמצעות כתובת אחרת. כאשר פונים אליו רק העבד עם הכתובת הספציפית ההוא ישיב בחזרה עם המידע בעוד האחרים ימשיכו להפסיק. בדרך זו אנו יכולים להשתמש באותו אוטובוס כדי לתקשר עם מספר מכשירים.
רמות המתח של I2C לא נקבעו מראש. תקשורת I2C גמישה, כלומר המכשיר המופעל באמצעות 5 וולט, יכול להשתמש ב -5 וולט עבור I2C והתקני 3.3 וולט יכולים להשתמש ב -3 וולט לתקשורת I2C. אך מה אם שני מכשירים הפועלים על מתח שונה, צריכים לתקשר באמצעות I2C? 5V I2C אוטובוס לא יכול להיות מחובר עם מכשיר 3.3V. במקרה זה משתמשים בממתחי מתח להתאמת רמות המתח בין שני אוטובוסים I2C.
יש קבוצה מסוימת של תנאים שמסגרים עסקה. אתחול השידור מתחיל בקצה נופל של SDA, שמוגדר כמצב 'START' בתרשים למטה, כאשר המאסטר משאיר את SCL גבוה בזמן שהוא מגדיר את ה- SDA נמוך.
כפי שמוצג בתרשים למעלה, הקצה הנופל של SDA הוא גורם החומרה למצב START. אחרי זה כל המכשירים באותו אוטובוס עוברים למצב האזנה.
באותו אופן, קצה עולה של SDA מפסיק את השידור שמוצג כמצב 'STOP' בתרשים לעיל, שם המאסטר משאיר את SCL גבוה ומשחרר גם את ה- SDA כדי לעבור ל- HIGH. אז קצה עולה של SDA מפסיק את השידור.
סיבית R / W מציינת את כיוון ההעברה של הבתים הבאים, אם זה HIGH פירושו שהעבד ישדר ואם הוא נמוך פירושו שהמאסטר ישדר.
כל סיבית מועברת בכל מחזור שעון, ולכן נדרשים 8 מחזורי שעון להעברת בתים. לאחר כל בית שנשלח או התקבל, מחזור שעון תשיעי מתקיים עבור ACK / NACK (מוכר / לא מאושר). סיבית ACK זו נוצרת על ידי עבד או מאסטר בהתאם למצב. לקבלת ACK נשך, SDA מוגדר נמוך ידי אב או משני ב 9 th מחזור שעון. אז זה נמוך זה נחשב ACK אחרת NACK.
היכן להשתמש בתקשורת I2C?
תקשורת I2C משמשת רק לתקשורת למרחקים קצרים. זה בהחלט אמין במידה שכן יש לו דופק שעון מסונכרן כדי להפוך אותו לחכם. פרוטוקול זה משמש בעיקר לתקשורת עם חיישן או התקנים אחרים אשר צריכים לשלוח מידע למאסטר. זה מאוד שימושי כאשר מיקרו-בקר צריך לתקשר עם מודולי עבדים רבים אחרים באמצעות מינימום חוטים בלבד. אם אתם מחפשים תקשורת לטווח רחוק עליכם לנסות את RS232 ואם אתם מחפשים תקשורת אמינה יותר עליכם לנסות את פרוטוקול SPI.
I2C ב- MSP430: בקרת פוטנציומטר דיגיטלי AD5171
Energia IDE היא אחת התוכנות הקלות ביותר לתכנת MSP430 שלנו. זהה ל- Arduino IDE. תוכל ללמוד עוד על תחילת העבודה עם MSP430 באמצעות Energia IDE כאן.
לכן, כדי להשתמש ב- I2C ב- Energia IDE עלינו לכלול רק קובץ כותרת wire.h. הצהרת סיכה (SDA ו- SCL) נמצאת בספריית החוטים, ולכן איננו צריכים להכריז בפונקציית ההתקנה .
דוגמאות לדוגמא ניתן למצוא בתפריט דוגמה של IDE. אחת הדוגמאות מוסברת להלן:
דוגמה זו מראה כיצד לשלוט על מכשירים אנלוגיים AD5171 פוטנציומטר דיגיטלי המתקשר באמצעות פרוטוקול סדרתי סינכרוני I2C. באמצעות ספריית החוטים I2C של MSP, הסיר הדיגיטלי יעבור דרך 64 רמות התנגדות, ויחליק נורית LED.
ראשית, נכלול את הספרייה האחראית על תקשורת i2c כלומר ספריית חוטים
#לִכלוֹל
בשנת התקנת פונקציה, נבצע את ספריית החוט ידי .begin () פונקציה.
הגדרת חלל () { Wire.begin (); }
ואז אתחול ואל משתנה לאחסון ערכים של פוטנציומטר
בתים val = 0;
בשנת לולאת פונקציה, נוכל להתחיל שידור למכשיר עבד I2C (ב פוטנציומטר הדיגיטלי במקרה זה IC) על ידי ציון כתובת המכשיר אשר ניתנת בגיליון נתון של IC.
loop loop () { Wire.beginTransmission (44); // לשדר למכשיר מס '44 (0x2c)
לאחר מכן, בתים בתור כלומר נתונים שברצונך לשלוח ל- IC להעברה באמצעות הפונקציה write () .
Wire.write (בתים (0x00)); // שולח בתים הוראות Wire.write (val); // שולח בתים ערך פוטנציומטר
ואז העבירו אותם על ידי קריאה ל- endTransmission () .
Wire.endTransmission (); // להפסיק את העברת val ++; // ערך תוספת אם (val == 64) {// אם הגיע למיקום 64 (מקסימום) val = 0; // התחל מחדש מעיכוב הערך הנמוך ביותר } (500); }