אוטובוס I2C - הקצאה, מכשיר, העברת נתונים, כתובת
בעת יצירת מעגל אלקטרוני, מפתחים רבים מתמודדים עם הצורך להשתמש במספר רב של שבבי ביניים לצורך התאמה, דגימה וטיפול בלוקים בודדים שלו. כדי למזער את מספר השבבים העזר, פיליפס הציעה ממשק רשת טורית דו-כיוונית דו-כיוונית של I2C עוד בשנות ה-80, שתוכנן במיוחד לניהול שבבים מרובים בתוך מכשיר אחד.
כיום, פיליפס לבדה מייצרת יותר ממאה מכשירים תואמי I2C לציוד אלקטרוני עם מגוון רחב של מטרות: זיכרון, מערכות מעבד וידאו, ממירים אנלוגיים לדיגיטליים ודיגיטליים לאנלוגיים, דרייברים לתצוגה וכו'.
אפיק I2C הוא שינוי של פרוטוקול חילופי הנתונים הטוריים המסוגל לשדר נתונים טוריים של 8 סיביות במצב "מהיר" רגיל בקצבים של 100 עד 400 kbps. תהליך חילופי הנתונים מיושם כאן על שני חוטים בלבד (לא סופר את החוט המשותף): קו SDA לנתונים וקו SCL לסנכרון.
האוטובוס הופך דו-כיווני בשל העובדה שלמפלי היציאות של התקנים המחוברים לאוטובוס יש אספנים או ערוצים פתוחים, ובכך משכפלים את חיווט ה-AND. כתוצאה מכך, האוטובוס ממזער את מספר החיבורים בין שבבים, ומשאיר פחות פינים ועקבות נדרשים על הלוח. כתוצאה מכך, הלוח עצמו מתגלה כפשוט יותר, קומפקטי יותר ומתקדם טכנולוגית בייצור.
פרוטוקול זה מאפשר לך להשבית את מפענחי הכתובות והיגיון אחר של משא ומתן חיצוני. מספר השבבים שיכולים לפעול בו זמנית באפיק I2C מוגבל בקיבולת שלו - מקסימום 400 pF.
ל-ICs תואמי I2C יש אלגוריתם דיכוי רעשי חומרה כדי להבטיח שלמות נתונים גם בנוכחות הפרעות חזקות. למכשירים כאלה יש ממשק המאפשר למיקרו-מעגלים לתקשר זה עם זה גם כאשר מתחי האספקה שלהם שונים. באיור למטה, אתה יכול להכיר את העיקרון של חיבור מספר מעגלים מיקרו דרך אוטובוס משותף.
לכל אחד מהמכשירים המחוברים לאוטובוס יש כתובת ייחודית משלו, היא נקבעת על ידה ובהתאם לייעוד המכשיר הוא יכול לעבוד כמקלט או כשדר. בעת שידור נתונים, התקנים אלה יכולים להיות מאסטר (מאסטר) או עבד (slave). המאסטר הוא ההתקן שיוזם את העברת הנתונים ומייצר אותות שעון על קו SCL. העבד, ביחס לאדון, הוא מכשיר היעד.
בכל רגע נתון של פעולה באפיק I2C, רק מכשיר אחד יכול לפעול כמאסטר; הוא מייצר אות על קו SCL.מאסטר יכול להיות מקלט ראשי או משדר מאסטר.
באופן עקרוני, האוטובוס מאפשר מספר מאסטרים שונים, אך מטיל הגבלות על המאפיינים של יצירת אותות בקרה וניטור מצב האוטובוס; זה אומר שכמה מאסטרים יכולים להתחיל לשדר בו זמנית, אבל קונפליקטים מהסוג הזה מתבטלים הודות לבוררות, כלומר האופן שבו המאסטר מתנהג כאשר הוא מזהה שהאוטובוס תפוס על ידי מאסטר אחר.
סנכרון של זוג מכשירים מובטח על ידי העובדה שכל המכשירים מחוברים לאוטובוס ויוצרים חיווט "AND". בתחילה, אותות SDA ו- SCL גבוהים.
התחל ועצור
ההחלפה מתחילה כשהמאסטר יוצר את מצב «START»: בקו SDA, האות עובר ממצב גבוה לנמוך, בעוד שלקו SCL יש רמה גבוהה יציבה. כל המכשירים המחוברים לאוטובוס תופסים את המצב הזה כפקודה להפעיל את המרכזייה.
כל מאסטר יוצר אות שעון אינדיבידואלי על קו SCL בעת שידור נתונים על האוטובוס.
ההחלפה מסתיימת בהיווצרות מצב STOP על ידי המאסטר: בקו SDA האות משתנה מנמוך לגבוה, בעוד לקו SCL יש רמה גבוהה יציבה.
הנהג תמיד משמש כמקור האותות START ו-STOP. ברגע שאות "התחל" קבוע, זה אומר שהקו תפוס. הקו פנוי כאשר מזוהה אות STOP.
מיד לאחר ההכרזה על מצב START, המאסטר משנה את קו ה-SCL נמוך ושולח את הסיביות המשמעותיות ביותר של בית ההודעה הראשון לקו ה-SDA. מספר הבתים בהודעה אינו מוגבל.שינויים בקו SDA מופעלים רק כאשר רמת האות בקו SCL נמוכה. הנתונים תקפים ואין לשנותם רק כאשר דופק הסנכרון גבוה.
אישור על כך שהבייט מהמשדר הראשי התקבל על ידי מקלט העבד מתבצע על ידי הגדרת סיבית אישור מיוחדת בקו SDA לאחר קבלת סיבית הנתונים השמיני.
האישור
אז, שליחת 8 סיביות של נתונים מהמשדר למקלט מסתיימת בפולס נוסף על קו ה-SCL כאשר המכשיר המקבל יורד בקו SDA, מה שמצביע על כך שהוא קיבל את כל הבתים.
אישור הוא חלק בלתי נפרד מתהליך העברת הנתונים. המאסטר יוצר דופק סנכרון. המשדר שולח מצב נמוך ל-SDA בזמן ששעון האישור פעיל. בעוד דופק הסנכרון גבוה, המקלט חייב לשמור על SDA נמוך.
אם עבד היעד לא מאשר את הכתובת שלו, למשל בגלל שהוא תפוס כרגע, יש להחזיק את קו הנתונים גבוה. לאחר מכן, המאסטר עשוי לתת אות עצור כדי לבטל את השיגור.
אם הקליטה מתבצעת על ידי המקלט הראשי, אזי הוא מחויב להודיע למשדר העבד לאחר השלמת השידור - לא על ידי אישור הביט האחרון. משדר העבדים משחרר את קו הנתונים כך שהמאסטר יוכל להוציא אות STOP או אות START חוזר.
הסנכרון של המכשירים מובטח על ידי העובדה שהחיבורים לקו SCL נעשים על פי עקרון ה"AND".
למאסטר אין את הזכות הבלעדית לשלוט במעבר של קו SCL מנמוך לגבוה.אם העבד צריך יותר זמן כדי לעבד סיביות שהתקבלה, הוא יכול להחזיק SCL נמוך באופן עצמאי עד שהוא מוכן לקבל את סיבית הנתונים הבאה. קו SCL במצב כזה יהיה נמוך למשך פעימת הסנכרון הארוכה ביותר ברמה נמוכה.
מכשירים עם הנמוך המתמשך הנמוך ביותר יישארו במצב לא פעיל עד לסיום התקופה הארוכה. כאשר כל המכשירים יסיימו את תקופת הסנכרון הנמוך, SCL יעלה לרמה גבוהה.
כל המכשירים יתחילו להצביע גבוה והמכשיר הראשון שישלים את התקופה שלו יהיה הראשון להגדיר את קו ה-SCL נמוך. כתוצאה מכך, משך המצב הנמוך של SCL ייקבע לפי המצב הנמוך הארוך ביותר של דופק הסנכרון של אחד המכשירים, ומשך המצב הגבוה ייקבע לפי תקופת הסנכרון הקצרה ביותר של אחד מהמכשירים. מכשירים.
אותות סנכרון יכולים לשמש מקלטים כאמצעי לשליטה בהעברת נתונים ברמת הסיביות והבתים.
אם ההתקן מסוגל לקלוט בתים בקצב גבוה, אך לוקח זמן מסוים לאחסן את הביט שהתקבל או להתכונן לקבל את הביט הבא, הוא עשוי להמשיך להחזיק SCL נמוך לאחר קבלת בית ואישור, מה שיאלץ את המשדר למצב המתנה.
מיקרו-בקר ללא מעגלי חומרה מובנים, למשל ברמת הסיביות, יכול להאט את מהירות השעון ע"י הגדלת משך מצבם הנמוך. כתוצאה מכך, קצב ה-baud של התקן המאסטר ייקבע ע"י מהירות ה- מכשיר איטי יותר.
פְּנִיָה
לכל מכשיר המחובר לאפיק I2C יש כתובת תוכנית ייחודית שבה המאסטר פונה אליו על ידי שליחת פקודה ספציפית. מיקרו-מעגלים מאותו סוג מאופיינים בבורר כתובת, המיושם או בצורה של כניסות דיגיטליות של הבורר, או בצורה אנלוגית. הכתובות מחולקות למרחב הכתובות של המכשירים המחוברים לאוטובוס.
מצב רגיל מניח כתובת שבע סיביות. הכתובת פועלת באופן הבא: לאחר הפקודה «START», המאסטר שולח את הביט הראשון, שקובע איזה מכשיר עבד דרוש כדי לתקשר עם המאסטר. ישנה גם כתובת שיחה נפוצה המגדירה את כל המכשירים באפיק, כל המכשירים (תיאורטית) מגיבים לה עם אישור, אבל בפועל זה נדיר.
אז שבעת הסיביות הראשונות של הבית הראשון הן כתובת העבד. הביט הפחות משמעותי, השמיני, מציין את כיוון שליחת הנתונים. אם יש "0", אז המידע ייכתב מהמאסטר לעבד זה. אם «1», המידע ייקרא על ידי המאסטר מהעבד הזה.
לאחר שהמאסטר מסיים לשלוח את בית הכתובת, כל עבד משווה את הכתובת שלו אליו. כל אדם בעל אותה כתובת הוא עבד ומוגדר כמשדר עבד או כמקלט עבד, בהתאם לערך של הסיבית הפחות משמעותית של בית הכתובת.
כתובת עבד יכולה לכלול חלקים קבועים וניתנים לתכנות. לעתים קרובות, מספר רב של מכשירים מאותו סוג פועל במערכת אחת, ואז החלק הניתן לתכנות של הכתובת מאפשר שימוש לכל היותר מאותו סוג של מכשירים באוטובוס. כמה ביטים בבייט הכתובת ניתנים לתכנות תלוי במספר הפינים הפנויים בשבב.
לפעמים מספיקה סיכה עם הגדרה אנלוגית של טווח הכתובות הניתן לתכנות, למשל ה-SAA1064 - דרייבר מחוון LED שיש לו יישום כזה בדיוק. הפוטנציאל של פין מסוים קובע את ההיסט של מרחב הכתובות של השבב כך ששבבים מאותו סוג אינם מתנגשים הפועלים על אותו אפיק. כל השבבים התומכים באפיק I2C מכילים קבוצה של כתובות שהיצרן מציין בתיעוד.
השילוב «11110XX» שמור עבור כתובת של 10 סיביות. אם נדמיין את חילופי הנתונים מפקודת «START» לפקודה «STOP», זה ייראה כך:
פורמטים פשוטים ומשולבים לחילופי נתונים מותרים כאן. הפורמט המשולב אומר שבין «START» ל-«STOP» המאסטר והעבד יכולים לפעול כמקלטים ומשדרים, זה שימושי למשל בניהול זיכרון טורי.
תן לבייט הראשון של הנתונים להעביר כתובת זיכרון. לאחר מכן, חזרה על הפקודה «START» וקריאת כתובת העבד, נתוני הזיכרון יעבדו. החלטות להגדיל או להקטין באופן אוטומטי את הכתובת שנגישה בעבר מתקבלות על ידי מפתח המכשיר לאחר שלמד בעבר את תיעוד השבב. כך או אחרת, לאחר קבלת פקודת START, על כל המכשירים לשחזר את ההיגיון שלהם ולהתכונן לכך שהכתובת תיקרא כעת.