הכל על האוטובוס Arduino I2C

אוטובוס ארדואינו I2C

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

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

מה זה I2C?

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

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

פרטים טכניים על אוטובוס I2C

אוטובוס I2C

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

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

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

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

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

פרוטוקול האוטובוסים I2C צופה גם שימוש בנגדי משיכה בקווי מתח האספקה ​​(Vcc), אם כי בדרך כלל לא משתמשים בנגדים אלה עם Arduino. משיכה כי תכנות ספריות כאשר Wire מפעיל את הפנימיים בערכים של 20-30 k. זה עשוי להיות רך מדי עבור פרויקטים מסוימים, ולכן הקצוות העולים של האות יהיו איטיים יותר, כך שניתן להשתמש במהירויות נמוכות יותר ובמרחקי תקשורת קצרים יותר. כדי לתקן זאת, ייתכן שיהיה עליך להגדיר נגדי משיכה חיצוניים מ -1k ל -4k7.

אוֹת

אות I2C

La מסגרת תקשורת מתוכם אות אוטובוס I2C מורכב מהביטים או המצבים (אלה המשמשים בארדואינו, מכיוון שתקן I2C מאפשר לאחרים):

  • 8 ביטים, 7 מהם dirección של מכשיר העבדים שאליו ברצונך לגשת כדי לשלוח או לקבל ממנו נתונים. עם 7 סיביות, ניתן ליצור עד 128 כתובות שונות, כך שתיאורטית ניתן היה לגשת, אך ניתן לגשת רק ל- 128, מכיוון ש- 112 שמורות לשימושים מיוחדים. והביט הנוסף שמציין אם אתה רוצה לשלוח או לקבל מידע על מכשיר העבדים.
  • יש גם קצת אימות, אם היא לא פעילה התקשורת לא תהיה תקפה.
  • אז ה בתים נתונים שיש לשלוח או לקבל על ידי העבדים. כל בייט, כידוע, מורכב מ -8 ביטים. שים לב כי על כל 8 סיביות או 1 בתים של נתונים שנשלחים או מתקבלים, נדרשים 18 סיביות נוספות של אימות, כתובת וכו ', מה שאומר שהאוטובוס מוגבל מאוד במהירות.
  • קצת אחרון של אימות של התקשורת.

בנוסף, תדר השעון עבור שידורים הם 100 Mhz כסטנדרט, אם כי יש מצב מהיר יותר ב -400 Mhz.

יתרונות וחסרונות של אוטובוס I2C

לאס ventajas צליל:

  • פשטות על ידי שימוש בשתי שורות בלבד.
  • יש לו מנגנונים לדעת אם האות הגיע בהשוואה לפרוטוקולי תקשורת אחרים.

לאס desventajas צליל:

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

I2C על ארדואינו

אוטובוס ארדואינו I2C

En ארדואינו, תלוי בדגם, הפינים שניתן לאפשר להשתמש באוטובוס I2C זה משתנים. לדוגמה:

  • Arduino UNO, ננו, מיני פרו: A4 משמש עבור SDA (נתונים) ו- A5 עבור SCK (שעון).
  • ארדואינו מגה: סיכה 20 עבור SDA ו- 21 עבור SCK.

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

כיצד לדעת את כתובת המכשיר לשימוש בו עם I2C?

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

La קהילת ארדואינו יצר את זה קוד כדי לסרוק את הכתובת ולזהות אותה בצורה פשוטה. למרות שאני מראה לך את הקוד כאן:

#include "Wire.h"
 
extern "C" { 
    #include "utility/twi.h"
}
 
void scanI2CBus(byte from_addr, byte to_addr, void(*callback)(byte address, byte result) ) 
{
  byte rc;
  byte data = 0;
  for( byte addr = from_addr; addr <= to_addr; addr++ ) {
    rc = twi_writeTo(addr, &data, 0, 1, 0);
    callback( addr, rc );
  }
}
 
void scanFunc( byte addr, byte result ) {
  Serial.print("addr: ");
  Serial.print(addr,DEC);
  Serial.print( (result==0) ? " Encontrado!":"       ");
  Serial.print( (addr%4) ? "\t":"\n");
}
 
 
const byte start_address = 8;
const byte end_address = 119;
 
void setup()
{
    Wire.begin();
 
    Serial.begin(9600);
    Serial.print("Escaneando bus I2C...");
    scanI2CBus( start_address, end_address, scanFunc );
    Serial.println("\nTerminado");
}
 
void loop() 
{
    delay(1000);
}


היה הראשון להגיב

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.