برنامج تعليمي لبروتوكول ناقل I2C ، واجهة مع التطبيقات

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





في الوقت الحاضر ، تلعب البروتوكولات دورًا أساسيًا في تصميم نظام مضمن . بدون الذهاب إلى البروتوكولات ، إذا كنت ترغب في توسيع الميزات الطرفية للميكروكونترولر ، فسوف يزداد التعقيد واستهلاك الطاقة. تتوفر أنواع مختلفة من بروتوكولات الحافلات مثل USART و SPI و CAN و بروتوكول ناقل I2C ، وما إلى ذلك ، والتي تستخدم لنقل البيانات بين نظامين.

بروتوكول I2C

ما هو I2C Bus؟




يتطلب إرسال المعلومات واستلامها بين جهازين أو أكثر من جهازين مسار اتصال يسمى نظام ناقل. ناقل I2C عبارة عن ناقل تسلسلي ثنائي الاتجاه يستخدم لنقل البيانات بين الدوائر المتكاملة. يرمز I2C إلى 'Inter Integrated Circuit'. تم تقديمه لأول مرة بواسطة أشباه الموصلات من Philips في عام 1982. ويتكون ناقل I2C من ثلاث سرعات لنقل البيانات مثل الوضع القياسي والوضع السريع والوضع عالي السرعة. يدعم ناقل I2C جهاز مساحة العنوان 7 بت و 10 بت ويختلف تشغيله مع الفولتية المنخفضة.

بروتوكول ناقل I2c

بروتوكول ناقل I2c



خطوط إشارة I2C

خطوط إشارة I2C

خطوط إشارة I2C

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

مخرجات الصرف المفتوح


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

واجهات I2C

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

معدلات نقل البيانات I2C

يعمل بروتوكول I2C بثلاثة أوضاع مثل: الوضع السريع والوضع عالي السرعة والوضع القياسي حيث تتراوح سرعة بيانات الوضع القياسي من 0 هرتز إلى 100 هرتز ، ويمكن نقل بيانات الوضع السريع من 0 هرتز إلى 400 كيلو هرتز ووضع السرعة العالية مع 10 كيلو هرتز إلى 100 كيلو هرتز. يتم إرسال البيانات ذات 9 بتات لكل عملية نقل حيث يتم إرسال 8 بتات بواسطة جهاز الإرسال MSB إلى LSB ، وتكون البتة التاسعة عبارة عن بتة إقرار يرسلها المستقبِل.

معدلات نقل البيانات I2C

معدلات نقل البيانات I2C

اتصالات I2C

يتم استخدام بروتوكول ناقل I2C بشكل شائع في الاتصالات الرئيسية والتابعة حيث يُطلق على المعالج اسم 'متحكم دقيق' ، ويسمى العبد الأجهزة الأخرى مثل ADC و EEPROM و DAC والأجهزة المماثلة في النظام المضمن. يتم توصيل عدد الأجهزة التابعة بالجهاز الرئيسي بمساعدة ناقل I2C ، حيث يتكون كل تابع من عنوان فريد لتوصيله. يتم استخدام الخطوات التالية لتوصيل الجهاز الرئيسي بالعبد:

الخطوة 1: أولاً ، يصدر الجهاز الرئيسي شرط بدء لإبلاغ جميع الأجهزة التابعة حتى تستمع إلى خط البيانات التسلسلي.

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

الخطوه 3: يستجيب الجهاز التابع مع العنوان المطابق الذي تم استلامه من السيد ، بإقرار للسيد بعد ذلك يتم إنشاء اتصال بين كل من الأجهزة الرئيسية والأجهزة التابعة على ناقل البيانات.

الخطوة 4: يتلقى كل من السيد والعبد البيانات وينقلها اعتمادًا على ما إذا كان الاتصال يُقرأ أو يكتب.

الخطوة 5: بعد ذلك ، يمكن للسيد إرسال 8 بتات من البيانات إلى جهاز الاستقبال الذي يرد بإقرار 1 بت.

I2C تعليمي

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

أساسيات بروتوكول I2C

بشكل عام ، يتكون نظام ناقل I2C من سلكين يتم استخدامهما بسهولة لتوسيع الميزات الطرفية للإدخال والإخراج مثل ADC و EEROM و RTC و المكونات الأساسية الأخرى لإنشاء نظام أقل تعقيدًا.

مثال: نظرًا لأن متحكم 8051 لا يحتوي على ADC يحمل في ثناياه عوامل - لذلك ، إذا أردنا ربط أي مستشعرات تناظرية بالمتحكم الدقيق 8051 - فعلينا استخدام أجهزة ADC مثل ADC0804-1 channel ADC و ADC0808-8 قناة ADC وما إلى ذلك باستخدام ADCs ، يمكننا ربط المستشعرات التناظرية بالمتحكم الدقيق.

بدون استخدام البروتوكول لتوسيع ميزات الإدخال / الإخراج لأي متحكم أو معالج ، يمكننا الانتقال إلى 8255 ICit 8-pin device. ال 8051 متحكم دقيق 40 دبوس باستخدام 8255 IC ، يمكننا توسيع منافذ 3-I / O مع 8 دبابيس في كل منفذ. باستخدام جميع الأجهزة مثل RTC و ADC و EEPROM و Timers ، وما إلى ذلك - لتوسيع الدوائر الطرفية - يتم أيضًا زيادة التعقيد والتكلفة واستهلاك الطاقة وحجم المنتج.

للتغلب على هذه المشكلة ، يأتي مفهوم البروتوكول في الصورة لتقليل تعقيد الأجهزة واستهلاك الطاقة. يمكننا توسيع المزيد من الميزات ، مثل I / 0 peripherals و ADCs و T / C وأجهزة الذاكرة حتى 128 جهازًا باستخدام بروتوكول I2C هذا.
المصطلحات المستخدمة في بروتوكولات I2C

المرسل: يُطلق على الجهاز الذي يرسل البيانات إلى الناقل اسم جهاز الإرسال.

المتلقي: يسمى الجهاز الذي يستقبل البيانات من الناقل جهاز الاستقبال.

يتقن: يُطلق على الجهاز الذي يبدأ عمليات النقل لإنشاء إشارات الساعة وإنهاء النقل اسم 'رئيسي'.

شريحة: الجهاز الذي يوجهه السيد يسمى العبد.

مالتي ماستر: يمكن أن يحاول أكثر من سيد واحد التحكم في الناقل في نفس الوقت دون إفساد الرسالة ويسمى Multimaster.

تحكم: إجراء لضمان أنه ، إذا حاول أكثر من سيد واحد في وقت واحد التحكم في الناقل - لا يُسمح إلا لواحد فقط بالقيام بذلك ، فالرسالة الفائزة لا تالفة.

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

تسلسل أوامر I2C الأساسية

  1. بدء شرط بت
  2. حالة بت التوقف
  3. شرط الإقرار
  4. إتقان عملية الكتابة الرقيق
  5. قراءة عملية Slave to Master

بدء وإيقاف حالة بت

عندما يرغب السيد (متحكم دقيق) في التحدث إلى جهاز تابع (على سبيل المثال ADC) ، فإنه يبدأ الاتصال بإصدار شرط بدء على ناقل I2C ، ثم يصدر حالة توقف. مستويات منطق البدء والإيقاف I2C موضحة في الشكل.

تُعرّف حالة بدء I2C بأنها انتقال عالي إلى منخفض لخط SDA بينما يكون خط SCL مرتفعًا. تحدث حالة توقف I2C عندما يتحول خط SDA من منخفض إلى مرتفع بينما يكون خط SCL مرتفعًا.

يقوم سيد I2C دائمًا بتوليد الشرطين S و P. بمجرد أن يبدأ سيد I2C في حالة START ، يعتبر ناقل I2c في حالة الانشغال.

بدء وإيقاف حالة بت

بدء وإيقاف حالة بت

برمجة:

بدء الشرط:

sbit SDA = P1 ^ 7 // تهيئة دبابيس SDA و SCL الخاصة بالمتحكم الدقيق //
sbit SCL = P1 ^ 6
تأخير باطل (بدون توقيع int)
باطل رئيسي ()
{
SDA = 1 // معالجة البيانات //
SCL = 1 // ساعة عالية //
تأخير()
SDA = 0 // أرسل البيانات //
تأخير()
SCL = 0 // إشارة الساعة منخفضة //
}
تأخير باطل (int p)
{
غير موقعة ، ب
لـ (أ = 0 أ<255a++) //delay function//
لـ (ب = 0 ب}

حالة التوقف:

باطل رئيسي ()
{
SDA = 0 // إيقاف معالجة البيانات //
SCL = 1 // ساعة عالية //
تأخير()
SDA = 1 // توقف //
تأخير()
SCL = 0 // إشارة الساعة منخفضة //
}
تأخير باطل (int p)
{
غير موقعة ، ب
لـ (أ = 0 أ<255a++) //delay function//
لـ (ب = 0 ب}

حالة الإقرار (ACK) وعدم الإقرار (NCK)

كل بايت يتم إرساله عبر ناقل I2C يتبعه حالة استلام من جهاز الاستقبال ، مما يعني أنه بعد أن يسحب السيد SCL منخفضًا لإكمال إرسال 8 بتات ، سيتم سحب SDA منخفضًا بواسطة جهاز الاستقبال إلى السيد. إذا لم يتم سحب الإرسال من جهاز الاستقبال ، فإن خط SDA LOW يعتبر حالة NCK.

شكر وتقدير (ACK)

شكر وتقدير (ACK)

برمجة

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

سيد العبد يكتب العملية

ينقل بروتوكول I2C البيانات في شكل حزم أو بايت. كل بايت يتبعه بت إقرار.

تنسيق نقل البيانات

تنسيق نقل البيانات

تنسيق نقل البيانات

بداية: في المقام الأول ، يبدأ تسلسل نقل البيانات بواسطة السيد الذي ينشئ شرط البدء.

عنوان 7 بت: بعد ذلك يرسل السيد العنوان التابع بتنسيقين 8 بت بدلاً من عنوان واحد 16 بت.

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

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

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

برمجة

اكتب العملية

voidwrite (حرف د غير موقع)
{
char k غير موقعة ، j = 0x80
لـ (ك = 0 ك<8k++)
{
SDA = (د & ي)
J = j >> 1
SCL = 1
تأخير (4)
SCL = 0
}
SDA = 1
SCL = 1
تأخير (2)
ج = SDA
تأخير (2)
SCL = 0
}

سيد لعملية قراءة الرقيق

تتم قراءة البيانات مرة أخرى من الجهاز التابع في شكل بت أو بايت - اقرأ البت الأكثر أهمية أولاً ثم اقرأ البت الأقل أهمية أخيرًا.

تنسيق قراءة البيانات

تنسيق قراءة البيانات

تنسيق قراءة البيانات

بداية: في المقام الأول ، يبدأ تسلسل نقل البيانات من قبل السيد الذي ينشئ شرط البدء.

عنوان 7 بت: بعد ذلك يرسل السيد العنوان التابع بتنسيقين 8 بت بدلاً من عنوان واحد 16 بت.

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

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

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

برمجة

قراءة باطلة ()
{
char j غير موقعة ، z = 0x00 ، q = 0x80
SDA = 1
لـ (j = 0j<8j++)
{
SCL = 1
تأخير (100)
العلم = SDA
إذا (العلم == 1)
ف)
س = ف >> 1
تأخير (100)
SCL = 0

مثال عملي لربط ADC بالميكروكونترولر 8051

ADC هو جهاز يستخدم لتحويل البيانات التناظرية إلى شكل رقمي ورقمي إلى تناظري. لا يحتوي الميكروكونترولر 8051 على ADC يحمل في ثناياه عوامل لذلك يتعين علينا إضافة خارجي من خلال بروتوكول I2C. PCF8591 هو I2C القائم التناظرية إلى الرقمية والمحول الرقمي إلى التناظري. يمكن لهذا الجهاز أن يدعم بحد أقصى 4 قنوات إدخال تناظرية إلى جانب 2.5 إلى 6 فولت.

المخرجات التناظرية

تأتي النواتج التناظرية في شكل الفولتية. على سبيل المثال ، يعطي المستشعر التماثلي 5 فولت منطق خرج من 0.01 فولت إلى 5 فولت.
الحد الأقصى للقيمة الرقمية 5 فولت = 256.
قيمة 2.5 فولت = 123 وفقًا لقيمة الجهد القصوى.

صيغة المخرجات التناظرية هي:

صيغة المخرجات الرقمية:

ربط ADC بالمتحكم 8051

ربط ADC بالمتحكم 8051

يوضح الشكل أعلاه نقل البيانات باستخدام بروتوكول I2C من جهاز ADC إلى متحكم 8051. يتم توصيل دبابيس ADC الخاصة بـ SCL و SDA بالدبوس 1.7 و 1.6 من وحدة التحكم الدقيقة لإنشاء الاتصال بينهما. عندما يعطي المستشعر قيمًا تمثيلية لـ ADC ، فإنه يتحول إلى رقمي وينقل البيانات إلى وحدة التحكم الدقيقة من خلال بروتوكول I2C.

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