מדריך פרוטוקול אוטובוס I2C, ממשק ליישומים

נסה את הכלי שלנו לביטול בעיות





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

פרוטוקול I2C

מהו אוטובוס I2C?




שידור וקבלת המידע בין שניים או יותר משני מכשירים מחייבים נתיב תקשורת הנקרא כמערכת אוטובוס. אוטובוס I2C הוא אוטובוס דו-כיווני דו-כיווני המשמש להעברת הנתונים בין מעגלים משולבים. ה- I2C מייצג 'Inter Integrated Circuit'. הוא הוצג לראשונה על ידי מוליכים למחצה של פיליפס בשנת 1982. אוטובוס ה- I2C מורכב משלוש מהירויות העברת נתונים כגון מצב רגיל, מהיר ומצב מהיר גבוה. אוטובוס ה- I2C תומך בהתקן שטח כתובת של 7 סיביות ו -10 סיביות ופעולתו נבדלת עם מתח נמוך.

פרוטוקול אוטובוס I2c

פרוטוקול אוטובוס I2c



קווי אותות I2C

קווי אותות I2C

קווי אותות I2C

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

יציאות ניקוז פתוח


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

ממשקי I2C

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

שיעורי העברת נתונים I2C

פרוטוקול I2C מפעיל שלושה מצבים כגון: מצב מהיר, מצב מהיר ומצב סטנדרטי שבו מהירות הנתונים במצב הסטנדרטי נעה 0Hz עד 100Hz, ונתוני המצב המהיר יכולים להעביר במהירות 0Hz עד 400 KHz ומצב המהירות הגבוהה עם 10 KHz עד 100KHz. הנתונים של 9 סיביות נשלחים לכל העברה שבה 8 סיביות נשלחות על ידי המשדר MSB ל- LSB, והסיבית ה -9 היא ביט אישור שנשלח על ידי המקלט.

שיעורי העברת נתונים I2C

שיעורי העברת נתונים I2C

תקשורת I2C

פרוטוקול האוטובוס I2C משמש לרוב בתקשורת מאסטר ועבדים, כאשר המאסטר נקרא 'מיקרו-בקר', והעבד נקרא התקנים אחרים כגון ADC, EEPROM, DAC והתקנים דומים במערכת המוטמעת. מספר התקני העבדים מחובר למכשיר הראשי בעזרת אוטובוס ה- I2C, שבו כל עבד מורכב מכתובת ייחודית לתקשורת. השלבים הבאים משמשים לתקשורת ההתקן הראשי לעבד:

שלב 1: ראשית, התקן הראשי מוציא תנאי התחלה כדי ליידע את כל התקני העבדים כך שיאזינו בקו הנתונים הסדרתי.

שלב 2: מכשיר המאסטר שולח את כתובת מכשיר העבד היעד אשר מושווה לכל כתובות התקני העבדים כמחוברים לקווי SCL ו- SDL. אם כתובת כלשהי תואמת, מכשיר זה נבחר, ושאר כל המכשירים מנותקים מקווי SCL ו- SDL.

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

שלב 4: גם המאסטר וגם העבד מקבלים ומשדרים את הנתונים, תלוי אם התקשורת נקראת או כתובה.

שלב 5: לאחר מכן, המאסטר יכול להעביר נתונים של 8 סיביות למקלט אשר משיבים באישור של 1 סיביות.

מדריך I2C

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

יסודות פרוטוקול I2C

באופן כללי, מערכת האוטובוסים I2C מורכבת משני חוטים המשמשים בקלות להרחבת תכונות ההיקפי של קלט ופלט כגון ADC, EEROM ו- RTC, וכן רכיבים בסיסיים אחרים ליצור מערכת שמורכבותה פחותה מאוד.

דוגמא: מכיוון שלמיקרו-בקר 8051 אין ADC מובנה - לכן, אם אנו רוצים לממשק חיישנים אנלוגיים למיקרו-בקרה 8051 - עלינו להשתמש במכשירי ADC כגון ADC0804-1 ערוץ ADC, ADC0808- 8 ערוצי ADC וכו '. באמצעות ADCs אלה, אנו יכולים לממשק את החיישנים האנלוגיים למיקרו-בקר.

מבלי להשתמש בפרוטוקול להרחבת תכונות הקלט / פלט של מיקרו-בקר או מעבד כלשהו, ​​נוכל לעבור למכשיר 8255 ICit בן 8 פינים. ה מיקרו-בקר 8051 הוא מיקרו-בקרה עם 40 פינים באמצעות 8255 IC, אנו יכולים להרחיב את יציאות ה- 3-I / O עם 8 פינים בכל יציאה. על ידי שימוש בכל המכשירים כגון RTC, ADC, EEPROM, טיימרים וכו '- להרחבת המעגלים ההיקפיים - גדלים גם המורכבות, העלות, צריכת החשמל וגודל המוצר.

כדי להתגבר על בעיה זו, מושג הפרוטוקול נכנס לתמונה להפחתת מורכבות החומרה וצריכת החשמל. אנו יכולים להרחיב מספר רב יותר של תכונות, כגון ציוד היקפי I / 0, ADC, T / C והתקני זיכרון עד 128 מכשירים באמצעות פרוטוקול I2C זה.
מינוח המשמש בפרוטוקולים של I2C

מַשׁדֵר: המכשיר ששולח נתונים לאוטובוס נקרא משדר.

מַקְלֵט: המכשיר שמקבל נתונים מהאוטובוס נקרא מקלט.

לִשְׁלוֹט: המכשיר היוזם העברות להפקת אותות שעון וסיום העברה נקרא מאסטר.

עֶבֶד: המכשיר אליו פונה המאסטר נקרא עבד.

מולטימסטר: יותר ממורה אחד יכול לנסות לשלוט באוטובוס בו זמנית מבלי לפגוע בהודעה הנקראת Multimaster.

בוררות: נוהל להבטיח שאם יותר ממורה אחד ינסה לשלוט בו זמנית על האוטובוס - רק אחד רשאי לעשות זאת המסר הזוכה אינו מושחת.

סִנכְּרוּן: הליך לסנכרון סינגלים השעונים של שני מכשירים או יותר נקרא סנכרון.

רצף פקודות בסיסי של I2C

  1. התחל מצב Bit
  2. עצור מצב ביט
  3. תנאי הכרה
  4. פעולת כתיבת מאסטר לעבדים
  5. קרא את מבצע עבד למאסטר

הפעל והפסיק מצב ביט

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

מצב ההתחלה של I2C מגדיר מעבר גבוה לקו SDA בעוד קו SCL גבוה. מצב עצירה של I2C מתרחש כאשר קו ה- SDA מתחלף בין נמוך לגובה כאשר קו SCL גבוה.

המאסטר I2C מייצר תמיד את תנאי S ו- P. ברגע שמאסטר I2C יוזם מצב START, אוטובוס ה- I2c נחשב למצב תפוס.

הפעל והפסיק מצב ביט

הפעל והפסיק מצב ביט

תִכנוּת:

התחל תנאי:

sbit SDA = P1 ^ 7 // אתחל את סיכות SDA ו- SCL של המיקרו-בקר //
sbit SCL = P1 ^ 6
עיכוב חלל (int חתום)
ריק ראשי ()
{
SDA = 1 // עיבוד הנתונים //
SCL = 1 // השעון גבוה //
לְעַכֵּב()
SDA = 0 // שלח את הנתונים //
לְעַכֵּב()
SCL = 0 // אות השעון נמוך //
}
עיכוב בטל (int p)
{
unsignedinta, ב
עבור (a = 0a<255a++) //delay function//
עבור (b = 0b}

STOP מצב:

ריק ראשי ()
{
SDA = 0 // עצור את עיבוד הנתונים //
SCL = 1 // השעון גבוה //
לְעַכֵּב()
SDA = 1 // עצר //
לְעַכֵּב()
SCL = 0 // אות השעון נמוך //
}
עיכוב בטל (int p)
{
unsignedinta, ב
עבור (a = 0a<255a++) //delay function//
עבור (b = 0b}

אישור (ACK) ומצב ללא אישור (NCK)

אחרי כל בייט המועבר על גבי אוטובוס ה- I2C מגיע תנאי אישור מהמקלט, כלומר, לאחר שהמאסטר מושך את SCL נמוך כדי להשלים את העברת 8 סיביות, ה- SDA יימשך נמוך על ידי המקלט למאסטר. אם לאחר שידור המקלט לא מושך, קו ה- SDA LOW נחשב למצב NCK.

אישור (ACK)

אישור (ACK)

תִכנוּת

הכרה
ריק ראשי ()
{
SDA = 0 // קו SDA יורד לשפל //
SCL = 1 // השעון גבוה עד נמוך //
עיכוב (100)
SCL = 0
}
אין אישור:
ריק ראשי ()
{
SDA = 1 // קו SDA עולה לגובה //
SCL = 1 // השעון גבוה עד נמוך //
עיכוב (100)
SCL = 0
}

מאסטר לעבדים כותב מבצע

פרוטוקול I2C מעביר את הנתונים בצורה של מנות או בתים. אחרי כל בית ואחריו ביט אישור.

פורמט העברת נתונים

פורמט העברת נתונים

פורמט העברת נתונים

הַתחָלָה: בעיקר, רצף העברת הנתונים שיזם המאסטר שיוצר את מצב ההתחלה.

כתובת 7 סיביות: לאחר מכן המאסטר שולח את כתובת העבדים בשני פורמטים של 8 סיביות במקום כתובת אחת של 16 סיביות.

R / W: אם סיבית הקריאה והכתיבה גבוהה, פעולת הכתיבה מתבצעת.

אוי ואבוי: אם פעולת הכתיבה מתבצעת בהתקן העבדים, אז המקלט שולח את ה- ACK של 1 סיביות למיקרו-בקר.

תפסיק: לאחר השלמת פעולת הכתיבה במכשיר העבדים, המיקרו-בקר שולח את מצב העצירה למכשיר העבדים.

תִכנוּת

כתוב מבצע

voidwrite (char d לא חתום)
{
חריץ לא חתום, j = 0x80
עבור (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
עיכוב (4)
SCL = 0
}
SDA = 1
SCL = 1
עיכוב (2)
c = SDA
עיכוב (2)
SCL = 0
}

מאסטר לקריאת עבדים

הנתונים נקראים חזרה ממכשיר העבדים בצורה של ביט או בתים - קרא קודם את הביט המשמעותי ביותר וקרא את הביט הכי פחות משמעותי אחרון.

פורמט קריאת הנתונים

פורמט קריאת נתונים

פורמט קריאת נתונים

הַתחָלָה: בעיקר, רצף העברת הנתונים יוזם על ידי המאסטר שיוצר את מצב ההתחלה.

כתובת 7 סיביות: לאחר מכן המאסטר שולח את כתובת העבדים בשני פורמטים של 8 סיביות במקום כתובת אחת של 16 סיביות.

R / W: אם סיבית הקריאה והכתיבה נמוכה, פעולת הקריאה מתבצעת.

אוי ואבוי: אם פעולת הכתיבה מתבצעת בהתקן העבדים, אז המקלט שולח את ה- ACK של 1 סיביות למיקרו-בקר.

תפסיק: לאחר השלמת פעולת הכתיבה במכשיר העבדים, המיקרו-בקר שולח את מצב העצירה למכשיר העבדים.

תִכנוּת

קריאה בטל ()
{
תו לא חתום j, z = 0x00, q = 0x80
SDA = 1
עבור (j = 0j<8j++)
{
SCL = 1
עיכוב (100)
דגל = SDA
אם (דגל == 1)
ש)
q = q >> 1
עיכוב (100)
SCL = 0

דוגמה מעשית לממשק ADC למיקרו-בקר 8051

ה- ADC הוא מכשיר המשמש להמרת הנתונים האנלוגיים לצורה דיגיטלית ודיגיטלית לאנלוגית. למיקרו-בקר 8051 אין ADC מובנה ולכן עלינו להוסיף חיצונית דרך פרוטוקול I2C. ה- PCF8591 הוא מבוסס ה- I2C אנלוגי לדיגיטלי וממיר דיגיטלי לאנלוגי. מכשיר זה יכול לתמוך במקסימום ערוצי כניסה של 4 אנלוגים יחד עם מתח של 2.5 עד 6 וולט.

יציאות אנלוגיות

היציאות האנלוגיות מגיעות בצורת מתח. לדוגמא, חיישן אנלוגי 5V נותן לוגיקת פלט של 0.01V עד 5V.
הערך הדיגיטלי המרבי של 5v הוא = 256.
הערך של 2.5 וולט הוא = 123 על פי ערך המתח המרבי.

הנוסחה של פלט אנלוגי היא:

הנוסחה של הפלטים הדיגיטליים:

ממשק ADC למיקרו-בקר 8051

ממשק ADC למיקרו-בקר 8051

האיור לעיל מראה את העברת הנתונים באמצעות פרוטוקול I2C ממכשיר ADC למיקרו-בקר 8051. סיכות ADC של SCL ו- SDA מחוברות לסיכה 1.7 ו- 1.6 של מיקרו-בקר לצורך יצירת תקשורת ביניהן. כאשר החיישן נותן ערכים אנלוגיים ל- ADC, הוא ממיר לדיגיטלי ומעביר נתונים למיקרו-בקר באמצעות פרוטוקול I2C.

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