I2C (INTER INTEGRATED CIRCUIT)
من اشهر بروتوكلات الاتصال التسلسلي المستعملة في تقنيات تواصل المعالجات والمتحكمات مع طرفياتها
لمحة تارخية
تم تطوير هذا البروتوكول سنة 1980 من قبل شركة Philips وقد وضع اساسا لربط بعض المحيطيات في جهاز التلفاز مع المتحكم في سبيل تقليل الكلفة وقد اطلقت عليه شركة atmel اسم( TWI (TWO WIRE INTEGRATED وقد مر البروتوكول بعمليات تطوير حديثة منها تطوير السرعة حيث بدا دعم سرعة 3.4 Mbps من بعض الطرفيات وكذلك تطوير العنونة بعد ان كانت 7 بت اصبحت 10 بت في بعض الطرفيات
تعريفه
هو بروتوكول اتصال تسلسلي متزامن اي يعمل مع توقيتات الزمن وله طرفين في التواصل
1- SCK هو طرف نقل نبضات الزمن من الجهاز القائد الى الخوادم
2-SDA هو طرف نقل البيانات عند الكتابة من القائد الى الخادم وعند القراءة من الخادم الى القائد اي ثنائي الاتجاه
يمكن ربط عدد كبير من الاجهزة على هذين السلكلين يصل الى 128 جهاز هنا السؤال كيف للبروتوكول ان يتعرف على الجهاز الذي يريد التخاطب معه من بين كل هذه الاجهزة المربوطة معا ؟ يتم ذلك عن طريق عنوان فلكل جهاز عنوان خاص به عندما يرسل المتحكم هذا العنوان يفتح الجهاز المسؤول عن هذا العنوان ويبدء بالارسال او الاستلام حسب اخر بت من العنوان حيث يتم تحديد ذلك .
1- SCK هو طرف نقل نبضات الزمن من الجهاز القائد الى الخوادم
2-SDA هو طرف نقل البيانات عند الكتابة من القائد الى الخادم وعند القراءة من الخادم الى القائد اي ثنائي الاتجاه
يمكن ربط عدد كبير من الاجهزة على هذين السلكلين يصل الى 128 جهاز هنا السؤال كيف للبروتوكول ان يتعرف على الجهاز الذي يريد التخاطب معه من بين كل هذه الاجهزة المربوطة معا ؟ يتم ذلك عن طريق عنوان فلكل جهاز عنوان خاص به عندما يرسل المتحكم هذا العنوان يفتح الجهاز المسؤول عن هذا العنوان ويبدء بالارسال او الاستلام حسب اخر بت من العنوان حيث يتم تحديد ذلك .
Sample I2C Implementation |
طريقة نقل البيانات
لدينا هنا مثال متحكم مربوط مع 10 طرفيات وسناخذ التسلسل الزمني للبتات المرسلة1- STAR BIT بت البداية يقوم باطلاقه المتحكم ( عبارة عن حافة هابطة في خط البيانات عندما يكون خط الزمن 1 منطقي ) لاخبار جميع الطرفيات بان تتحول من نمط IDLE الى نمط STAND BY اي التهيئة للاستقبال بواسطة البروتوكول التسلسلي .
2- Addres bits عبارة عن 7 بتات لاختيار احد الاجهزة العشرة والتخاطب معه نسبة لعنوانه المُعلم في الـ Datasheet الخاص بالطرفية .
3- read or write bit هو بت واحد يحدد اذما كانت العملية قراءة او كتابة فتكون كتابة عندما يكون هذا البت صفر وتكون قراءة عندما يكون واحد ويتم دمجه وارساله مع العنوان حيث تصبح عملية ارسال لبايت يحتوي في اول 7 بتات العنوان واخر بت يشير الى نوع العملية .
4- ACK هو بت التاكيد يرسل من قبل الطرفية التي توافق عنوانها مع العنوان المرسل من قبل المتحكم لتخبر المتحكم انها استلمت العنوان وهي جاهزة للعملية التالية .
5- First byte يتم ارسال اول بايت من قبل المتحكم او يتم استقبال اول بايت من قبل المتحكم حسب نوع العملية قراءة ام كتابة .
6- ACK هذا البت يعقب كل بايت للتاكد فعند الكتابة تقوم الطرفية بالرد به وعند القراءة يقوم المتحكم بارساله ليخبر الطرفية بارسال بايت اخر .
تتكرر عملية ارسال البايتات وتاكيدها الى ان ينتهي الارسال .
7- STOP BIT هو بت يصدر من المتحكم حصرا (القائد) يخبر فيه الخوادم بانتهاء عملية الارسال (عبارة عن حافة صاعدة في خط البيانات عندما يكون خط الزمن 1 منطقي) عندما تكون العملية كتابة يستلم المتحكم ACK لاخر بايت في الارسال من الطرفية ثم يرسل بت التوقف وعند القراءة يستلم المتحكم اخر بايت ثم لا يرسل بت ACK الى الطرفية بل يرسل بت التوقف مباشرتا .
ملاحظة : ان كل الطرفيات التي تم تصميمها للعمل بهذا البروتكول تحتوي بداخلها على الترانزستور open collector اي ان ترانزستورات الخرج لا تحتوي على مقاومة رفع داخلية و السبب في ذلك انه عند ربط مثلا 10 اجهزة سنحصل على 10 مقاومات متوازية وذات قيمة منخفضة و ستؤدي إلى إستهلاك عالي للتيار لذا يتم ربط مقاومات رفع للبروتوكول بالكامل عن طريق ربط مقاومتين الاولى بين خط التزامن وال +5 والثانية بين خط نقل البيانات وال+5
و ان شاء الله في التدوينة القادمة سنتكلم عن كيفية استخدامه مع متحكمات Atmel AVR بشكل مفصل
المصدر totalphase
1 التعليقات:
إضغط هنا لـ التعليقاتبارك الله فيك وفى امثالك
ردتحويل كودإخفاء محول الأكواد الإبتساماتإخفاء