ממשק SPI ו- Arduino

תוכן עניינים:

ממשק SPI ו- Arduino
ממשק SPI ו- Arduino

וִידֵאוֹ: ממשק SPI ו- Arduino

וִידֵאוֹ: ממשק SPI ו- Arduino
וִידֵאוֹ: Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1) 2024, מאי
Anonim

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

ממשק SPI
ממשק SPI

נחוץ

  • - ארדואינו;
  • - מרשם משמרות 74HC595;
  • - 8 נוריות נוריות;
  • - 8 נגדים של 220 אוהם.

הוראות

שלב 1

SPI - ממשק היקפי סידורי או "ממשק היקפי סידורי" הוא פרוטוקול העברת נתונים סינכרוני לממשק בין מכשיר ראשי למכשירים היקפיים (slave). המאסטר הוא לעתים קרובות מיקרו-בקר. התקשורת בין המכשירים מתבצעת על ידי ארבעה חוטים ולכן SPI מכונה לפעמים "ממשק עם ארבעה חוטים". צמיגים אלה הם:

MOSI (Master Out Slave In) - קו העברת נתונים מהמאסטר למכשירי העבדים;

MISO (Master In Slave Out) - קו העברה מהעבד לאדון;

SCLK (שעון סידורי) - פעימות שעון סנכרון שנוצרו על ידי המאסטר;

SS (Slave Select) - קו בחירת מכשיר עבדים; כאשר בשורה "0", העבד "מבין" שהוא ניגש אליו.

ישנם ארבעה מצבים של העברת נתונים (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), בשל השילוב של קוטביות דופק השעון (אנו עובדים ברמה HIGH או LOW), קוטביות השעון, CPOL, ושלב פעימות השעון (סנכרון בקצה עולה או יורד של דופק השעון), שלב השעון, CPHA.

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

סוגי חיבורי SPI
סוגי חיבורי SPI

שלב 2

בארדואינו, אוטובוסי ה- SPI נמצאים ביציאות ספציפיות. לכל לוח יש משימת סיכות משלו. לנוחיותכם, הפינים משוכפלים ומונחים על מחבר ICSP נפרד (In Circuit Serial Programming). שים לב כי אין סיכת בחירת עבדים במחבר ICSP - SS, שכן ההנחה היא כי הארדואינו ישמש כמאסטר ברשת. אך במידת הצורך, תוכל להקצות כל סיכה דיגיטלית של הארדואינו כ- SS.

האיור מראה את ההקצאה הסטנדרטית של הפינים לאוטובוסי SPI עבור ארדוינו UNO וננו.

יישום SPI בארדואינו
יישום SPI בארדואינו

שלב 3

ספרייה מיוחדת נכתבה עבור Arduino המיישמת את פרוטוקול SPI. זה מחובר כך: בתחילת התוכנית, הוסף #include SPI.h

כדי להתחיל לעבוד עם פרוטוקול SPI, עליך להגדיר את ההגדרות ואז לאתחל את הפרוטוקול באמצעות הליך SPI.beginTransaction (). אתה יכול לעשות זאת בהוראה אחת: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0)).

המשמעות היא שאנו מאתחלים את פרוטוקול SPI בתדר של 14 מגה הרץ, העברת נתונים עוברת, החל מ- MSB (סיב משמעותי ביותר), במצב "0".

לאחר האתחול, אנו בוחרים את מכשיר העבדים על ידי הצבת סיכת ה- SS המתאימה למצב LOW.

לאחר מכן אנו מעבירים את הנתונים למכשיר העבדים באמצעות הפקודה SPI.transfer ().

לאחר השידור אנו מחזירים את ה- SS למצב HIGH.

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

שידור SPI
שידור SPI

שלב 4

בואו ניקח בחשבון את היישום המעשי של ממשק SPI. נדליק את נוריות הלדים על ידי שליטה במאגר המשמרות של 8 סיביות באמצעות אוטובוס ה- SPI. בואו נחבר את מרשם המשמרות 74HC595 לארדואינו. אנו מתחברים לכל אחת משמונה היציאות באמצעות נורית LED (באמצעות נגד מגביל). התרשים מוצג באיור.

חיבור מרשם משמרות 74HC595 לארדואינו
חיבור מרשם משמרות 74HC595 לארדואינו

שלב 5

בואו נכתוב סקיצה כזו.

ראשית, בואו נחבר את ספריית SPI ונתחל את ממשק SPI. נגדיר את סיכה 8 כסיכת בחירת העבדים. בואו ננקה את מרשם המשמרות על ידי שליחת הערך "0" אליו. אנו מאתחלים את היציאה הטורית.

כדי להדליק נורית LED ספציפית באמצעות רושם משמרות, עליך להחיל מספר קלט של 8 סיביות. לדוגמא, על מנת שהנורית הראשונה תידלק, אנו מזינים את המספר הבינארי 00000001, עבור השני - 00000010, עבור השלישי - 00000100 וכו '. מספרים בינאריים אלה בסימון עשרוני יוצרים את הרצף הבא: 1, 2, 4, 8, 16, 32, 64, 128 והם כוחות של שניים מ -0 עד 7.

בהתאם לכך, בלולאה () לפי מספר נוריות ה- LED, אנו מחושבים מחדש מ- 0 ל- 7. פונקציית ה- pow (בסיס, תואר) מעלה 2 לכוחו של מונה המחזור. מיקרו-בקרים לא עובדים בצורה מדויקת במיוחד עם מספרים מהסוג "כפול", לכן כדי להמיר את התוצאה למספר שלם, אנו משתמשים בפונקציה round (). ואנחנו מעבירים את המספר שנוצר למרשם המשמרות. לשם הבהרה, צג היציאה הטורי מציג את הערכים המתקבלים במהלך פעולה זו: אחד עובר בין הספרות - נוריות הנורית נדלקות בגל.

סקיצה לשליטה במרשם המשמרות באמצעות אוטובוס SPI
סקיצה לשליטה במרשם המשמרות באמצעות אוטובוס SPI

שלב 6

נוריות ה- LED נדלקות בתורן ואנו צופים ב"גל "אורות נודד. הנוריות נשלטות באמצעות רושם משמרות, אליו התחברנו דרך ממשק SPI. כתוצאה מכך, רק 3 סיכות ארדואינו משמשות להנעת 8 נוריות נוריות.

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

מוּמלָץ: