Interfacing RTC (DS1307) مع متحكم وبرمجته

جرب أداة القضاء على المشاكل





RTC هو جهاز إلكتروني يلعب دورًا أساسيًا في تصميم نظام مضمن في الوقت الحقيقي . يوفر وقتًا وتاريخًا دقيقين في العديد من التطبيقات مثل ساعة النظام ونظام حضور الطلاب والتنبيه وما إلى ذلك ، والتي تتعقب الوقت الحالي وتوفر نتيجة ثابتة للمهمة المعنية. تقدم هذه المقالة واجهة RTC مع 8051microcotroller والوصول الأساسي للسجلات الداخلية.

واجهة RTC مع متحكم 8051

واجهة RTC مع متحكم 8051



برمجة RTC والتواصل

يتشابه تفاعل RTC مع متحكم 8051 مع جميع أنواع 'Real Time Clocks' الأخرى المتصلة به. لذلك دعونا نلقي نظرة على تفاعل RTC البسيط مع 8051 متحكم وإجراءات البرمجة التي تنطوي عليها.


الخطوة 1: حدد جهاز RTC

تتوفر الأنواع المختلفة من رقائق RTC في العالم المضمن في الوقت الفعلي ، والتي يتم تصنيفها بناءً على معايير مختلفة مثل نوع الحزمة ، وجهد الإمداد وتكوين الدبوس وما إلى ذلك. هناك أنواع قليلة من أجهزة RTC هي



  • واجهة تسلسلية ثنائية الأسلاك (ناقل I2C)
  • واجهة تسلسلية بثلاثة أسلاك (USB BUS)
  • واجهة تسلسلية بأربعة أسلاك (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.768 كيلو هرتز.

عنونة الجهاز:

يسمح بروتوكول ناقل I2C بالعديد من الأجهزة التابعة في وقت واحد. يجب أن يتكون كل جهاز تابع من عنوان خاص ليتم تمثيله عليه. يتصل الجهاز الرئيسي بجهاز تابع معين عن طريق عنوان. عنوان جهاز RTC هو '0xA2' حيث يتم إعطاء '1010' من قبل الشركة المصنعة و A0 ، A1 ، A2 هي عنوان تعريف المستخدم ، والذي يستخدم لتوصيل ثمانية أجهزة RTC على بروتوكول ناقل I2C .

عنوان الجهاز

عنوان الجهاز

يستخدم بت R / W لأداء عمليات القراءة والكتابة في 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 وضع اختبار الساعة الخارجية

  • إيقاف = 0 يبدأ RTC

= 1 نقطة توقف RTC

  • TESTC = 0 تم تعطيل إعادة التشغيل

= تمكين إعادة التشغيل

سجل التحكم / الحالة 2:

سجل حالة التحكم 2

سجل حالة التحكم 2

  • TI / TP = 0 INT نشط طوال الوقت

= 1 INT الوقت المطلوب النشط

  • AF = 0 إنذار غير متطابق

= 1 مباراة إنذار

  • TF = 0 لا يحدث تجاوز في عداد الوقت

= 1 يحدث تجاوز في عداد الوقت

  • ALE = 0 تعطيل مقاطعات الإنذار

= 1 تم تمكين مقاطعات الإنذار

  • TIE = 0 تعطيل المقاطعات للمؤقت

= 1 المقاطعات الموقت تمكين

Step3: Interfacing RTC ds1307 مع 8051

يمكن أن يكون RTC واجهة متحكم باستخدام بروتوكولات ناقل تسلسلي مختلفة مثل I2C و بروتوكولات SPI التي توفر رابط الاتصال بينهما. يوضح الشكل ، تفاعل ساعة الوقت الحقيقي مع متحكم 8051 باستخدام بروتوكول ناقل I2C. I2C هو بروتوكول تسلسلي ثنائي الاتجاه ، يتكون من سلكين مثل SCL و SDA لنقل البيانات بين الأجهزة المتصلة بالناقل. لا يحتوي متحكم 8051 على جهاز RTC يحمل في ثناياه عوامل لذلك قمنا بتوصيل خارجي من خلال a الاتصال التسلسلي لضمان البيانات المكونة.

واجهة RTC مع متحكم 8051

واجهة RTC مع متحكم 8051

تحتوي أجهزة I2C على مخرجات تصريف مفتوحة ، لذلك يجب توصيل مقاومات سحب بخط ناقل I2C بمصدر جهد. إذا لم تكن المقاومات متصلة بخطوط SCL و SDL ، فلن يعمل الناقل.

الخطوة 4: تنسيق تأطير بيانات RTC

نظرًا لأن واجهة 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 بت واحد.

عنوان تسجيل التحكم / الحالة: عنوان سجل التحكم / الحالة هو السماح بسجلات حالة التحكم.

Control / Status Register1: سجل حالة التحكم المستخدم لتمكين جهاز RTC

سجل التحكم / الحالة 2: يتم استخدامه لتمكين وتعطيل المقاطعات.

R / W: إذا كانت بت القراءة والكتابة عالية ، فسيتم تنفيذ عملية القراءة.

واحسرتاه: إذا تم تنفيذ عملية الكتابة في الجهاز التابع ، فإن جهاز الاستقبال يرسل ACK 1 بت إلى متحكم دقيق.

قف: بعد الانتهاء من عملية الكتابة في الجهاز التابع ، يرسل الميكروكونترولر شرط الإيقاف إلى الجهاز التابع.

Step5: برمجة RTC

كتابة العملية من السيد إلى العبد:

  1. إصدار شرط البداية من السيد إلى العبد
  2. نقل عنوان الرقيق في وضع الكتابة على خط SDL
  3. أرسل عنوان سجل التحكم
  4. إرسال عنصر التحكم / الحالة register1value
  5. أرسل قيمة سجل التحكم / الحالة 2
  6. أرسل تاريخ مثل الدقائق والثواني والساعات
  7. أرسل بت التوقف

#يشمل

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
بداية باطلة ()
مضيفات باطلة (حرف غير موقعة)
تأخير (حرف غير موقعة)

باطل رئيسي ()
{

بداية()
اكتب (0xA2) // عنوان تابع //
اكتب (0x00) // عنوان تسجيل التحكم //
اكتب (0x00) // سجل التحكم 1 قيمة //
اكتب (0x00) // control regiter2 vlaue //
اكتب (0x28) // قيمة ثانية //
اكتب (0x50) // قيمة الدقيقة //
اكتب (0x02) // قيمة الساعات //
}

بداية باطلة ()
{

SDA = 1 // معالجة البيانات //
SCL = 1 // ساعة عالية //
تأخير (100)
SDA = 0 // أرسل البيانات //
تأخير (100)
SCL = 0 // إشارة الساعة منخفضة //
}
كتابة باطلة (حرف د غير موقع)
{

char k غير الموقعة ، j = 0 × 80
لـ (ك = 0 ك<8k++)
{
SDA = (د & ي)
J = j >> 1
SCL = 1
تأخير (4)
SCL = 0
}
SDA = 1
SCL = 1
تأخير (2)
ج = SDA
تأخير (2)
SCL = 0
}
تأخير باطل (int p)
{
غير موقعة ، ب
لـ (أ = 0 أ<255a++) //delay function//
لـ (ب = 0 ب}

اقرأ العملية من العبد إلى السيد:

#يشمل
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
بداية باطلة ()
كتابة باطلة (حرف مستخدم)
قراءة باطلة ()
باطل ack ()
تأخير باطل (حرف غير موقعة)
باطل رئيسي ()
{
بداية()
اكتب (0xA3) // العنوان التابع في وضع القراءة //
اقرأ()
واحسرتاه()
ثانية = القيمة
}
بداية باطلة ()
{

SDA = 1 // معالجة البيانات //
SCL = 1 // ساعة عالية //
تأخير (100)
SDA = 0 // أرسل البيانات //
تأخير (100)
SCL = 0 // إشارة الساعة منخفضة //
}
كتابة باطلة (حرف د غير موقع)
{

char k غير الموقعة ، j = 0 × 80
لـ (ك = 0 ك<8k++)
{
SDA = (د & ي)
J = j >> 1
SCL = 1
تأخير (4)
SCL = 0
}
SDA = 1
SCL = 1
تأخير (2)
ج = SDA
تأخير (2)
SCL = 0
}
تأخير باطل (int p)
{
غير موقعة ، ب
لـ (أ = 0 أ<255a++) //delay function//
لـ (ب = 0 ب}
قراءة باطلة ()
{
حرف j بدون إشارة ، z = 0 × 00 ، q = 0 × 80
SDA = 1
لـ (j = 0j<8j++)
{
SCL = 1
تأخير (100)
العلم = SDA
إذا (العلم == 1)

ض = (ض
باطل ack ()
{
SDA = 0 // يذهب خط SDA إلى المستوى المنخفض //
SCL = 1 // الساعة عالية إلى منخفضة //
تأخير (100)
SCL = 0
}

هذه هي الخطوات الضرورية لتفاعل RTC مع متحكم 8051. في الإضافات إلى هذه الخطوات ، تمت أيضًا مناقشة إطارات البيانات المستخدمة لنقل البيانات واستلامها في هذه المقالة لفهم المستخدم مع البرمجة المناسبة. لمزيد من المساعدة بخصوص هذا المفهوم ، يمكنك ترك تعليق أدناه.