اقرأ في هذا المقال
- ما هي الدائرة المتكاملة البينية I2C؟
- ما هو بروتوكول الدائرة المتكاملة I2C؟
- الهدف من استخدام I2C
- آلية عمل I2C
- خطوات نقل البيانات I2C
- مزايا الدائرة المتكاملة I2C
- عيوب الدائرة المتكاملة I2C
يجمع “I2C” بين أفضل ميزات “SPI” و”UART“، وباستخدام “I2C” يمكنك توصيل العديد من الفروع والمسؤول واحد مثل “SPI”، ويمكن أن يكون لديك العديد من الأساتذة الذين يتحكمون في فرع واحد أو عدة فروع، وهذا مفيد عندما تريد أن يكون لديك أكثر من متحكم واحد لتسجيل البيانات على بطاقة ذاكرة واحدة أو عرض نص على شاشة “LCD” واحدة.
ما هي الدائرة المتكاملة البينية I2C؟
الدائرة المتكاملة البينية “I2C”: هي بروتوكول اتصال تسلسلي متزامن، وتم تطويره للاتصال التسلسلي بين الأجهزة الإلكترونية، وهو بروتوكول اتصال موجه “8 بت”، حيث تستخدم اتصالات “I2C” سلكين للاتصال.
طورت شركة “Philips” بروتوكول الاتصال المتزامن “I2C” في عام 1982م، ويستخدم على نطاق واسع لتوصيل الأجهزة الطرفية منخفضة السرعة بأجهزة إلكترونية أكثر تعقيداً، مثل المعالجات وأجهزة التحكم الدقيقة للاتصالات قصيرة المسافة أو داخل اللوحة “Board”، كما تم إصدار العديد من إصدارات بروتوكول “I2C” في الوقت المناسب.
في عام 2007م، تم تقديم الإصدار 3.0. والإصدار 4، الذي يضيف “5 ميجابت في الثانية” فائق السرعة وتم تقديمه في عام 2012م، وفي عام 2014م تم إصدار آخر مراجعة الإصدار 6.
- “I2C” هي اختصار لـ “Inter-Integrated Circuit”.
- “UART” هي اختصار لـ “Universal asynchronous receiver-transmitter”.
- “SPI” هي اختصار لـ “Serial Peripheral Interface”.
- “LCD” هي اختصار لـ “Liquid Crystal Displays”.
ما هو بروتوكول الدائرة المتكاملة I2C؟
بروتوكول الدوائر المتكاملة “I2C”: هو بروتوكول يهدف إلى السماح لدوائر رقمية متكاملة “طرفية” متعددة “شرائح” بالاتصال بشريحة “تحكم” واحدة أو أكثر، ومثل الواجهة الطرفية التسلسلية “SPI” فهي مخصصة فقط للاتصالات قصيرة المسافة داخل جهاز واحد، ومثل الواجهات التسلسلية غير المتزامنة مثل “RS-232” أو “UART”، لا يتطلب الأمر سوى سلكي إشارة لتبادل المعلومات.
الهدف من استخدام I2C:
نظراً لأنّ المنافذ التسلسلية غير متزامنة أي لا يتم نقل بيانات الساعة، يجب أن توافق الأجهزة التي تستخدمها مسبقاً على معدل البيانات، كما يجب أن يحتوي الجهازان أيضاً على ساعات قريبة من نفس المعدل، وستظل كذلك وستؤدي الاختلافات المفرطة بين معدلات الساعة على أي من الطرفين إلى بيانات مشوشة.
تتطلب المنافذ التسلسلية غير المتزامنة حمل الأجهزة ويعتبر “UART” في أي من الطرفين معقداً نسبياً ويصعب تنفيذه بدقة في البرامج إذا لزم الأمر، كما يُعد بت البداية والإيقاف واحدة على الأقل جزءاً من كل إطار من البيانات، ممّا يعني أنّ “10 بتات” من وقت الإرسال مطلوبة لكل “8 بتات” من البيانات المرسلة ممّا يؤثر على معدل البيانات.
خطأ أساسي آخر في المنافذ التسلسلية غير المتزامنة هو أنّها مناسبة بطبيعتها للاتصالات بين جهازين وجهازين فقط، وفي حين أنّه من الممكن توصيل أجهزة متعددة بمنفذ تسلسلي واحد فإنّ التنازع على الناقل، حيث يحاول جهازان قيادة نفس الخط في نفس الوقت يمثل دائماً مشكلة ويجب التعامل معه بعناية لمنع تلف الأجهزة المعنية، وعادةً من خلال الأجهزة الخارجية.
كما أنّ معدل البيانات يمثل مشكلة، وعلى الرغم من عدم وجود حد نظري للاتصالات التسلسلية غير المتزامنة، فإنّ معظم أجهزة “UART” تدعم فقط مجموعة معينة من معدلات البث بالباود الثابتة، وعادةً ما يكون أعلىها حوالي “230400 بت في الثانية”.
آلية عمل I2C:
مع “I2C” يتم نقل البيانات في الرسائل، ويتم تقسيم الرسائل إلى إطارات بيانات، وتحتوي كل رسالة على إطار عنوان يحتوي على العنوان الثنائي للرقيق، وواحد أو أكثر من إطارات البيانات التي تتضمن على البيانات التي يتم إرسالها، وتحتوي الرسالة كذلك على متطلبات حالة البدء وحالة التوقف للإرسال وبتات القراءة / الكتابة وبتات “ACK / NACK” بين كل إطار معلومات:
1- حالة البدء:
يتبدل خط “SDA” من مستوى الجهد العالي إلى مستوى الجهد المنخفض قبل أن يتحول خط “SCL” من مستوى مرتفع إلى منخفض.
- “SDA” هي اختصار لـ “Serial Data”.
- “SCL” هي اختصار لـ “Serial Clock”.
2- حالة الإيقاف:
يتحرك خط “SDA” من مستوى الجهد المنخفض إلى مستوى الجهد العالي بعد أن ينتقل خط “SCL” من مستوى منخفض إلى مرتفع.
3- إطار العنوان:
تسلسل 7 أو 10 بت فريد لكل فرع يحدد الفرع عندما يريد المدير التحدث إليه، ولا تحتوي “I2C” على خطوط تابعة مثل “SPI”، كما يرسل المدير عنوان الفرع الذي يريد التواصل معه إلى كل فرع مرتبط به، ثم يقارن كل فرع العنوان المرسل من المدير إلى عنوانه، وإذا تطابق العنوان فإنّه يرسل بت “ACK” منخفض الجهد إلى المديير، وإذا كان العنوان غير متطابق فلن يفعل الفرع شيئاً ويظل خط “SDA” مرتفعاً.
- “ACK” هي اختصار لـ “acknowledgment”.
4- بت القراءة / الكتابة:
بت واحد يحدد ما إذا كان المدير يرسل البيانات إلى الفرع أي مستوى الجهد المنخفض أو يطلب البيانات منه مستوى الجهد العالي، ويشتمل إطار العنوان على بت واحد في النهاية يُعلم الفرع بما إذا كان المدير يريد كتابة البيانات إليه أو تلقي البيانات منه، وإذا كان المدير يريد إرسال البيانات إلى الفرع فإنّ بت القراءة أو الكتابة هي مستوى جهد منخفض، وإذا طلب المدير البيانات من الفرع فإنّ البت هو مستوى الجهد العالٍ.
5- بت “ACK / NACK”:
كل إطار في الرسالة يكون متضمن معه بت استلام أو عدم استلام، وإذا تم تلقي إطار عنوان أو إطار بيانات بنجاح فسيتم إرجاع بت “ACK” إلى المرسل من جهاز الاستلام.
لا تحتوي “I2C” على خطوط تابعة مثل “SPI”، لذا فهي تحتاج إلى طريقة أخرى لإعلام الفرع بأنّه يتم إرسال البيانات إليه وليس فرعاً آخر، ويفعل هذا عن طريق معالجة، ودائماً ما يكون إطار العنوان هو الإطار الأول بعد بت البداية في رسالة جديدة.
خطوات نقل البيانات I2C:
- يرسل المدير حالة البداية إلى كل تابع متصل عن طريق تحويل خط “SDA” من مستوى الجهد العالي إلى مستوى الجهد المنخفض قبل تبديل خط “SCL” من الأعلى إلى المنخفض.
- يرسل المدير لكل فرع العنوان المكون من 7 أو 10 بتات للرقيق الذي يريد التواصل معه، جنباً إلى جنب مع بت القراءة أو الكتابة.
- يقارن كل فرع العنوان المرسل من المدير إلى عنوانه، وإذا تطابق العنوان فإنّ الفرع يُرجع بت “ACK” عن طريق سحب خط “SDA” منخفضاً لبت واحد، وإذا كان العنوان من المدير لا يتطابق مع عنوان الفرع الخاص، فإنّ الفرع يترك خط “SDA” عالياً.
- يرسل المدير أو يستقبل إطار البيانات.
- بعد نقل كل إطار بيانات يقوم جهاز الاستقبال بإرجاع بت “ACK” آخر إلى المرسل للإقرار باستلام الإطار بنجاح.
- لإيقاف نقل البيانات يرسل المسؤول حالة توقف إلى التابع عن طريق تبديل “SCL” عالياً قبل تبديل “SDA” عالياً.
مزايا الدائرة المتكاملة I2C:
- يستخدم فقط سلكين.
- يدعم رؤساء متعددين وفروع متعددين.
- تعطي بتة “ACK / NACK” تأكيداُ على نقل كل رتل بنجاح.
- الأجهزة أقل تعقيداً من الأجهزة التي تستخدم “UART”.
- بروتوكول معروف ومستخدم على نطاق واسع.
عيوب الدائرة المتكاملة I2C:
- معدل نقل البيانات أبطأ من “SPI”.
- حجم إطار البيانات محدود بـ “8 بتات”.
- يلزم تنفيذ أجهزة أكثر تعقيداً من “SPI”.