תקשורת טורית בפרוטוקולים I2C SPI

פרוטוקולים I2C SPI

פרוטוקולים I2C SPI

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

  • SPI הוא בדרך כלל מהיר יותר
  • SPI נחשב פחות מתוחכם אבל עם זאת יותר פשוט להפעלה
  • SPI דורש יותר חוטים מ- I2C
  • I2C דורש רק 2 חוטים לתקשורת
  • I2C יכול להיות יותר מסובך להפעלה מבחינת תכנות
  • I2C דורש 2 נגדי PULL UP על חוטי העברת המידע

הנה שני איורים עם הארכיטקטורה של כל אחד מהפרוטוקולים:

i2c-bus
I2C bus
spi-three-slaves
spi-three-slaves

שימו לב לשני הנגדים המחוברים בתקשורת I2C וגם לכמות החוטים הגבוהה יותר ב- SPI.

I2C

הארכיטקטורה של I2C היא של master ו- slave כשהארדואינו הוא ה- master שמתחיל תקשורת עם רכיבים שנקראים slave והתקשורת נעשית באמצעות שני חוטים :

SDA – אחראי להעברת נתונים בין הארדואינו לרכיבים האחרים. בארדואינו אונו זהו פין אנלוגי A4

SCL – קו שעון שאחראי לתזמון של העברת הנתונים. בארדואינו אונו זהו פין אנלוגי A5

כשהארדואינו מתחיל שליחת נתונים כל הרכיבים המחוברים אליו בפרוטוקול זה מקשיבים לנתונים ולכל אחד מהם מספר זיהוי ייחודי (כתובת) שמבדיל אותו מהשאר. אם התקשורת מופנית אליו הוא מגיב לתקשורת לפי הקוד ובדרך כלל שולח נתונים חזרה לארדואינו. זהו סדר הדברים:

  • הארדואינו שולח ביט להתחלת תקשורת
  • הארדואינו שולח כתובת של 7 ביט שמופנית לאחד הרכיבים
  • הארדואינו שולח קריאה(0) או כתיבה(1) כדי להגדיר את הפעולה שברצונו לעשות
  • הרכיב שולח חזרה ביט שקיבל את הודעה
  • הארדואינו כותב או קורא מהרכיב על ידי שליחת בייט אחד אחרי השני, הרכיב מודיע שקיבל את הבייט אחרי כל שליחה
  • הארדואינו שולח ביט לסגירת תקשורת

ישנה ספריה בסביבת הפיתוח של ארדואינו שנקראת wire שמקלה על התקשורת ונהוג להשתמש בה כשמשתמשים בI2C:

https://www.arduino.cc/en/Reference/wire

SPI

בתקשורת SPI ישנם ארבעה חיבורים של העברת מידע:

  • SCLK – קו שעון תזמון משותף לכל הרכיבים
  • MOSI – מידע שיוצא מ- MASTER(ארדואינו במקרה שלנו) ומגיע ל- SLAVE(הרכיב)
  • MISO – מידע שיוצא מהרכיב ומגיע לארדואינו
  • SS – בחירת רכיב. כשישנם כמה רכיבים מחוברים במקביל ישנו חיבור ייחודי לכל אחד שנקרא SLAVE SELECT

החיבורים לארדואינו אונו הם בפינים 11,12,13 וזה אפשרי גם לחבר דרך חיבורי ה- ICSP(ששת החיבורים הבודדים) , דבר שמקל על חיבור מגינים. ישנה ספרייה ייעודית בארדואינו שנקראת SPI. עוד מידע על SPI :

https://www.arduino.cc/en/Reference/SPI

תגובה אחת על הפוסט “תקשורת טורית בפרוטוקולים I2C SPI

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *