- ما هو بروتوكول الاتصال I2C؟
- كيف تعمل I2C Communication؟
- أين تستخدم اتصالات I2C؟
- I2C في MSP430: التحكم في مقياس الجهد الرقمي AD5171
MSP430 عبارة عن منصة قوية توفرها شركة Texas Instruments للمشاريع المضمنة ، وقد جعلتها طبيعتها متعددة الاستخدامات تجد طرقًا في العديد من التطبيقات وما زالت المرحلة مستمرة. إذا كنت تتابع دروس MSP430 الخاصة بنا ، فستلاحظ أننا قمنا بالفعل بتغطية مجموعة واسعة من البرامج التعليمية حول هذا المتحكم الدقيق بدءًا من الأساسيات. منذ الآن ، قمنا بتغطية الأساسيات التي يمكننا الدخول فيها إلى أشياء أكثر إثارة للاهتمام مثل بوابة الاتصالات.
في النظام الواسع للتطبيقات المضمنة ، لا يمكن لأي متحكم تنفيذ جميع الأنشطة بمفرده. في مرحلة ما من الوقت ، يتعين عليه الاتصال بأجهزة أخرى لمشاركة المعلومات ، وهناك العديد من أنواع بروتوكولات الاتصال المختلفة لمشاركة هذه المعلومات ، ولكن أكثرها استخدامًا هي USART و IIC و SPI و CAN. كل بروتوكول اتصال له ميزته وعيوبه. دعنا نركز على جزء I2C في الوقت الحالي لأن هذا هو ما سنتعلمه في هذا البرنامج التعليمي.
ما هو بروتوكول الاتصال I2C؟
يشير المصطلح IIC إلى " الدوائر المتكاملة المشتركة ". يُشار إليه عادةً باسم I2C أو I تربيع C أو حتى على أنه بروتوكول واجهة بسلكين (TWI) في بعض الأماكن ، لكن كل هذا يعني نفس الشيء. I2C هو بروتوكول اتصال متزامن بمعنى أن كلا الجهازين اللذين يتشاركان المعلومات يجب أن يشتركان في إشارة ساعة مشتركة. يحتوي على سلكين فقط لمشاركة المعلومات ، أحدهما يستخدم لإشارة الديك والآخر يستخدم لإرسال واستقبال البيانات.
كيف تعمل I2C Communication؟
تم تقديم اتصال I2C لأول مرة بواسطة Phillips. كما ذكرنا سابقًا أنه يحتوي على سلكين ، سيتم توصيل هذين السلكين عبر جهازين. هنا جهاز واحد يسمى رئيسي والجهاز الآخر يسمى عبد. يجب أن يحدث الاتصال وسيحدث دائمًا بين اثنين من السيد والعبد. ميزة اتصال I2C هي أنه يمكن توصيل أكثر من عبد واحد بالسيد.
يتم الاتصال الكامل من خلال هذين السلكين وهما الساعة التسلسلية (SCL) والبيانات التسلسلية (SDA).
Serial Clock (SCL): يشارك إشارة الساعة التي تم إنشاؤها بواسطة السيد مع التابع
Serial Data (SDA): يرسل البيانات من وإلى السيد والعبد.
في أي وقت من الأوقات ، لن يتمكن سوى السيد من بدء الاتصال. نظرًا لوجود أكثر من عبد واحد في الحافلة ، يتعين على السيد أن يشير إلى كل عبد باستخدام عنوان مختلف. عند مخاطبته فقط العبد بهذا العنوان المعين سيرد بالمعلومات بينما يستمر الآخرون في الإقلاع. بهذه الطريقة يمكننا استخدام نفس الناقل للتواصل مع أجهزة متعددة.
لم يتم تحديد مستويات الجهد في I2C مسبقًا. اتصال I2C مرن ، يعني أن الجهاز الذي يعمل بجهد 5 فولت ، يمكنه استخدام 5 فولت لـ I2C ويمكن للأجهزة 3.3 فولت استخدام 3 فولت لاتصالات I2C. ولكن ماذا لو احتاج جهازان يعملان بجهد كهربائي مختلف إلى الاتصال باستخدام I2C؟ A 5V I2C حافلة لا يمكن ان تكون مرتبطة مع 3.3V الجهاز. في هذه الحالة ، تُستخدم محولات الجهد لمطابقة مستويات الجهد بين ناقلتي I2C.
هناك مجموعة من الشروط التي تؤطر الصفقة. يبدأ بدء الإرسال بحافة متساقطة من SDA ، والتي يتم تعريفها على أنها حالة "START" في الرسم البياني أدناه حيث يترك Master SCL مرتفعًا مع ضبط SDA منخفض.
كما هو موضح في الرسم البياني أعلاه ،
الحافة المتساقطة لـ SDA هي مشغل الأجهزة لحالة START. بعد ذلك ، تدخل جميع الأجهزة الموجودة على نفس الحافلة في وضع الاستماع.
بنفس الطريقة ، تعمل الحافة الصاعدة لـ SDA على إيقاف الإرسال الذي يظهر على أنه حالة "STOP" في الرسم البياني أعلاه ، حيث يترك السيد SCL مرتفعًا ويطلق أيضًا SDA للارتفاع. لذا فإن ارتفاع حافة SDA يوقف الإرسال.
تشير بت R / W إلى اتجاه إرسال البايتات التالية ، إذا كانت عالية ، فهذا يعني أن العبد سينقلها وإذا كانت منخفضة ، فهذا يعني أن السيد سوف يرسل.
يتم إرسال كل بت في كل دورة ساعة ، لذلك يستغرق الأمر 8 دورات على مدار الساعة لإرسال بايت. بعد إرسال كل بايت أو استلامه ، يتم الاحتفاظ بدورة الساعة التاسعة لـ ACK / NACK (معترف به / غير معترف به). يتم إنشاء بت ACK عن طريق إما تابع أو رئيسي حسب الحالة. لبت ACK، يتم تعيين SDA إلى الأقل قبل رئيسي أو الرقيق في 9 عشر دورة على مدار الساعة. لذلك فهو منخفض يعتبر ACK وإلا NACK.
أين تستخدم اتصالات I2C؟
يستخدم اتصال I2C فقط للاتصال قصير المدى. إنه بالتأكيد موثوق إلى حد ما لأنه يحتوي على نبض ساعة متزامن لجعله ذكيًا. يستخدم هذا البروتوكول بشكل أساسي للتواصل مع المستشعر أو الأجهزة الأخرى التي يتعين عليها إرسال المعلومات إلى السيد. يكون مفيدًا جدًا عندما يتعين على المتحكم الدقيق الاتصال بالعديد من الوحدات التابعة الأخرى باستخدام الحد الأدنى من الأسلاك فقط. إذا كنت تبحث عن اتصال بعيد المدى ، فعليك تجربة RS232 وإذا كنت تبحث عن اتصال أكثر موثوقية ، فعليك تجربة بروتوكول SPI.
I2C في MSP430: التحكم في مقياس الجهد الرقمي AD5171
يعد Energia IDE أحد أسهل البرامج لبرمجة MSP430 الخاص بنا. إنه نفس Arduino IDE. يمكنك معرفة المزيد حول بدء استخدام MSP430 باستخدام Energia IDE هنا.
لذلك ، لاستخدام I2C في Energia IDE ، يتعين علينا فقط تضمين ملف رأس wire.h. يوجد إعلان PIN (SDA و SCL) داخل مكتبة الأسلاك ، لذلك لا نحتاج إلى الإعلان في وظيفة الإعداد .
يمكن العثور على أمثلة نموذجية في قائمة الأمثلة الخاصة بـ IDE. أحد الأمثلة موضح أدناه:
يوضح هذا المثال كيفية التحكم في مقياس الجهد الرقمي AD5171 للأجهزة التناظرية والذي يتصل عبر البروتوكول التسلسلي المتزامن I2C. باستخدام مكتبة الأسلاك I2C الخاصة بـ MSP ، سوف يتخطى الوعاء الرقمي 64 مستوى من المقاومة ، مما يؤدي إلى تلاشي مؤشر LED.
أولاً ، سنقوم بتضمين المكتبة المسؤولة عن اتصالات i2c ، أي مكتبة الأسلاك
#تضمن
في وظيفة الإعداد ، سنبدأ مكتبة الأسلاك من خلال وظيفة .begin () .
إعداد باطل () { Wire.begin () ؛ }
ثم تهيئة متغير فال لتخزين القيم من الجهد
بايت فال = 0 ؛
في وظيفة الحلقة ، سنبدأ الإرسال إلى جهاز الرقيق i2c (في هذه الحالة مقياس الجهد الرقمي IC) عن طريق تحديد عنوان الجهاز الوارد في ورقة بيانات IC.
حلقة باطلة () { Wire.beginTransmission (44) ؛ // إرسال إلى الجهاز رقم 44 (0x2c)
بعد ذلك ، قائمة البايت ، أي البيانات التي تريد إرسالها إلى IC لإرسالها باستخدام وظيفة write () .
Wire.write (بايت (0x00)) ؛ // يرسل تعليمات بايت Wire.write (val) ؛ // يرسل بايت قيمة مقياس الجهد
ثم أرسلها عن طريق استدعاء endTransmission () .
Wire.endTransmission () ؛ // توقف عن الإرسال val ++ ؛ // قيمة الزيادة إذا (val == 64) {// إذا وصلت إلى الموضع 64 (الحد الأقصى) val = 0 ؛ // البدء من جديد من أدنى قيمة } تأخير (500) ؛ }