ממשק RTC (DS1307) עם מיקרו-בקר ותכנותו

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





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

ממשק RTC עם מיקרו-בקר 8051

ממשק RTC עם מיקרו-בקר 8051



תכנות וממשקי RTC

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


שלב 1: בחר התקן RTC

הסוגים השונים של שבבי RTC זמינים בעולם המשובץ בזמן אמת, אשר מסווגים על פי קריטריונים שונים כגון סוג חבילה, מתח אספקה ​​ותצורת סיכה וכו '. מספר סוגים של התקני RTC הם



  • ממשק סידורי דו חוטי (אוטובוס I2C)
  • ממשק סדרתי תלת חוטי (BUS USB)
  • ממשק סידורי בעל ארבעה חוטים (SPI BUS)

ראשית, עלינו לבחור סוג של התקן RTC לפי קטגוריות על פי דרישה כמו I2C Bus RTC או SPI Bus RTC או אחר, המתאים לממשק עם מיקרו-בקר בהתאמה. אז נוכל לבחור תכונות של מכשיר RTC בהתאם לדרישת היישום כגון חיי סוללה, חבילה מתאימה ותדר שעון. הבה נבחן ממשק דו-חוטי RTC עם מיקרו-בקר 8051 כגון DS1307 .

שלב 2: רישום פנימי וכתובת של מכשיר ה- RTC

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

תצורת RTC DB1307:

RTC בלוקים פנימיים ותרשים סיכות

RTC בלוקים פנימיים ותרשים סיכות

A0, A1, A2: הם סיכות כתובת של שבב RTC DB1307, בעזרתן ניתן לתקשר עם מכשיר הראשי. אנו יכולים לשלוט על שמונה מכשירים עם ממשק RTC מיקרו-בקר 8051 על ידי A0, A1, A2 ביטים באמצעות פרוטוקול I2C.


VCC ו- GND: VCC ו- GND הם אספקת חשמל וסיכות קרקע בהתאמה. מכשיר זה פעל בטווח של 1.8 וולט עד 5.5 וולט.

VBT: VBT הוא סיכת אספקת חשמל לסוללה. יש להחזיק את מקור הסוללה בין 2 ל -3.5 וולט.

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

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

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

OSC0 ו- OSC1: מדובר בסיכות מתנד קריסטל המשמשות לספק את אותות השעון למכשיר ה- RTC. תדר גביש הקוורץ הסטנדרטי הוא 22.768KHz.

כתובת המכשיר:

פרוטוקול אוטובוס I2C מאפשר מכשירי עבדים רבים בו זמנית. כל מכשיר עבדים חייב להיות מורכב מכתובת משלו כדי לייצג עליו. התקן הראשי מתקשר עם מכשיר עבדים מסוים על ידי כתובת. כתובת מכשיר RTC היא '0xA2' כאשר '1010' ניתנת על ידי היצרן ו- A0, A1, A2 הם כתובת המגדירה את המשתמש, המשמשת לתקשורת שמונה מכשירי RTC על פרוטוקול אוטובוס I2C .

הזנת מכשיר

הזנת מכשיר

R / W bit משמש לביצוע פעולות קריאה וכתיבה ב- RTC. אם R / W = 0, מתבצעת פעולת כתיבה ו- R / W = 1 להפעלת קריאה.

כתובת פעולת הקריאה של RTC = “0xA3”

כתובת של פעולת כתיבה של RTC = '0xA2'

רישומי זיכרון וכתובת:

רישומי RTC ממוקמים במיקומי כתובות בין 00h ל 0Fh ורישומי זיכרון RAM ממוקמים במיקומי כתובת מ 08h עד 3Fh כפי שמוצג באיור. רושמי RTC משמשים לספק פונקציונליות לוח שנה וזמן נסיעה ביום ולהצגת סופי שבוע.

רישומי זיכרון וכתובת

רישומי זיכרון וכתובת

רישומי בקרה / סטטוס:

DB1307 מורכב משני רושמים נוספים כגון בקרה / סטטוס 1 ובקרה / סטטוס 2 המשמשים לבקרת שעון בזמן אמת ו קוטע .

רישום בקרה / מצב 1:

רישום מצב בקרה 1

רישום מצב בקרה 1

  • TEST1 = 0 מצב רגיל

= 1 מצב בדיקת שעון EXT

  • STOP = 0 RTC מתחיל

= עצירת RTC אחת

  • TESTC = 0 הפעלת איפוס מושבתת

= הפעלת האיפוס מופעלת

רישום בקרה / מצב 2:

רישום מצב בקרה 2

רישום מצב בקרה 2

  • TI / TP = 0 INT פעיל כל הזמן

= זמן INT נדרש פעיל פעיל

  • AF = 0 אזעקה אינה תואמת

= התאמת אזעקה אחת

  • TF = 0 הצפת טיימר לא מתרחשת

= 1 מתרחש הצפת טיימר

  • ALE = 0 הפרעות אזעקה השבתה

= 1 הפרעות אזעקה מופעלות

  • TIE = 0 טיימר מפריע להשבית

= 1 הפסקות של טיימר מופעלות

שלב 3: ממשק RTC ds1307 עם 8051

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

ממשק RTC עם מיקרו-בקר 8051

ממשק RTC עם מיקרו-בקר 8051

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

שלב 4: פורמט RTC Data Framing

מכיוון שממשק RTC עם מיקרו-בקר 8051 משתמש באוטובוס I2C, לכן העברת הנתונים היא בצורה של בתים או מנות וכל בייט מלווה באישור.

העברת מסגרת נתונים:

במצב שידור, המאסטר משחרר את תנאי ההתחלה לאחר בחירת מכשיר העבד לפי סיבית כתובת. סיבית הכתובת מכילה 7 סיביות, המציינות את התקני העבדים ככתובת ds1307. נתונים סידוריים ושעון סדרתי מועברים בקווי SCL ו- SDL. תנאי START ו- STOP מזוהים כהתחלה וסיום של העברה סדרתית. פעולות קבלה ושידור ואחריהן ביט R / W.

העברת מסגרת נתונים

העברת מסגרת נתונים

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

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

כתובת רישום בקרה / סטטוס: כתובת רישום הבקרה / סטטוס היא לאפשר את רישומי מצב הבקרה.

רישום בקרה / מצב 1: רישום מצב הבקרה 1 המשמש להפעלת מכשיר ה- RTC

רישום בקרה / מצב 2: הוא משמש לאפשר ולהשבית הפרעות.

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

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

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

קבלת מסגרת נתונים:

קבלת מסגרת נתונים

קבלת מסגרת נתונים

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

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

כתובת רישום בקרה / סטטוס: כתובת רישום הבקרה / סטטוס היא לאפשר רישומי מצב בקרה.

רישום בקרה / סטטוס 1: רישום מצב הבקרה 1 המשמש להפעלת מכשיר ה- RTC

רישום בקרה / מצב 2: הוא משמש לאפשר ולהשבית הפרעות.

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

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

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

שלב 5: תכנות RTC

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

  1. הוציאו את תנאי ההתחלה ממורה לעבד
  2. העבר את כתובת העבדים במצב כתיבה בקו SDL
  3. שלח את כתובת רישום הבקרה
  4. שלח את בקרת / רישום הסטטוס 1 ערך
  5. שלח את ערך הבקרה / register2
  6. שלח את התאריך של דקות, שניות ושעות כמו
  7. שלח את מקצת העצירה

#לִכלוֹל

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
התחלה בטלה ()
מארחים בטלים (תו לא חתום)
עיכוב (תו לא חתום)

ריק ראשי ()
{

הַתחָלָה()
כתוב (0xA2) // כתובת עבדים //
כתוב (0x00) // כתובת רישום הבקרה //
כתוב (0x00) // ערך רישום 1 ערך //
כתוב (0x00) // בקרת regiter2 vlaue //
כתוב (0x28) // ערך שניה //
כתוב (0x50) // ערך דקה //
כתוב (0x02) // ערך שעות //
}

התחלה בטלה ()
{

SDA = 1 // עיבוד הנתונים //
SCL = 1 // השעון גבוה //
עיכוב (100)
SDA = 0 // שלח את הנתונים //
עיכוב (100)
SCL = 0 // אות השעון נמוך //
}
בטל כתיבה (char d לא חתום)
{

char char לא חתום, j = 0 × 80
עבור (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
עיכוב (4)
SCL = 0
}
SDA = 1
SCL = 1
עיכוב (2)
c = SDA
עיכוב (2)
SCL = 0
}
עיכוב חלל (int p)
{
unsignedinta, ב
עבור (a = 0a<255a++) //delay function//
עבור (b = 0b}

קרא את הפעולה מעבד למאסטר:

#לִכלוֹל
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
התחלה בטלה ()
בטל לכתוב (char מיועד)
בטל לקרוא ()
בטל ack ()
עיכוב בטל (תו לא חתום)
ריק ראשי ()
{
הַתחָלָה()
כתוב (0xA3) // כתובת עבדים במצב קריאה //
לקרוא()
אבוי ()
שניות = ערך
}
התחלה בטלה ()
{

SDA = 1 // עיבוד הנתונים //
SCL = 1 // השעון גבוה //
עיכוב (100)
SDA = 0 // שלח את הנתונים //
עיכוב (100)
SCL = 0 // אות השעון נמוך //
}
בטל כתיבה (char d לא חתום)
{

char char לא חתום, j = 0 × 80
עבור (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
עיכוב (4)
SCL = 0
}
SDA = 1
SCL = 1
עיכוב (2)
c = SDA
עיכוב (2)
SCL = 0
}
עיכוב חלל (int p)
{
unsignedinta, ב
עבור (a = 0a<255a++) //delay function//
עבור (b = 0b}
קריאה בטל ()
{
תו לא חתום j, z = 0 × 00, q = 0 × 80
SDA = 1
עבור (j = 0j<8j++)
{
SCL = 1
עיכוב (100)
דגל = SDA
אם (דגל == 1)

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

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