أنا 2 ج

I2C ( الدائرة المتكاملة البينية ؛ تُنطق " آي-سكويرد-سي " أو " آي- تو -سي ")، والمعروفة أيضًا باسم I2C و IIC ، هي ناقل اتصال متزامن ، متعدد الأجهزة الرئيسية/متعدد الأجهزة التابعة ، أحادي الطرف ، تسلسلي، تم اختراعه عام 1980 بواسطة شركة فيليبس لأشباه الموصلات (الآن NXP لأشباه الموصلات ). [ 1 ] يُستخدم على نطاق واسع لربط الدوائر المتكاملة الطرفية منخفضة السرعة بالمعالجات ووحدات التحكم الدقيقة في الاتصالات قصيرة المدى داخل اللوحة.

تُستخدم ناقلة I²C في نطاق واسع من التطبيقات الإلكترونية حيث تُعدّ البساطة وانخفاض تكلفة التصنيع أهم من السرعة. تشمل مكونات وأنظمة الحاسوب التي تستخدم I²C ذاكرة EEPROM بتقنية الكشف التسلسلي عن وجود الجهاز (SPD) على وحدات الذاكرة المزدوجة المضمنة (DIMMs)، وبيانات تعريف الشاشة الموسعة (EDID) للشاشات عبر موصلات VGA و DVI و HDMI . تتضمن تطبيقات I²C الشائعة قراءة بيانات شاشات الأجهزة، وأجهزة الاستشعار، وساعات الوقت الحقيقي ، والتحكم في المشغلات، والوصول إلى محولات DAC و ADC منخفضة السرعة ، والتحكم في شاشات LCD أو OLED البسيطة ، وتغيير إعدادات عرض الحاسوب (مثل الإضاءة الخلفية، والتباين، واللون، وتوازن الألوان) عبر قناة بيانات العرض ، وتغيير مستوى صوت السماعات.

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

ناقل إدارة النظام (SMBus)، الذي عرّفته شركتا إنتل ودوراسيل عام ١٩٩٤، هو جزء من بروتوكول I²C ، ويتميز بنطاق استخدام أكثر صرامة. يهدف SMBus إلى تعزيز موثوقية الأنظمة وقابليتها للتشغيل البيني. ولذلك، تتضمن أنظمة I²C الحديثة بعض سياسات وقواعد SMBus، وتدعم أحيانًا كلاً من I²C وSMBus، مما يتطلب إعادة تهيئة بسيطة إما عن طريق الأوامر أو استخدام منافذ الإخراج. تستخدم أنظمة إدارة الحواسيب الشخصية SMBus، وتُخصص منافذه في كل من موصلات PCI التقليدية وموصلات PCI Express .

موسع الإدخال/الإخراج Microchip MCP23008 ذو 8 بت I2C في حزمة DIP-18 [ 2 ]

اختراع

في براءة الاختراع الأوروبية EP0051332B1، ذُكر اسم كل من بي إم إم مويلاندز وهيرمان شوت كمخترعين لناقل I2C. كان كلاهما يعملان عام 1980 كمهندسي تطوير في مختبر التطبيقات المركزي CAB التابع لشركة فيليبس في أيندهوفن، حيث طُوّر ناقل I2C كنظام ناقل ثنائي الأسلاك يتألف من سلك ساعة وسلك بيانات لربط عدد من المحطات. مُنحت براءة الاختراع الأمريكية برقم US 4689740A  . كان الاسم الداخلي للناقل في البداية COMIC، والذي غُيّر لاحقًا إلى I2C. نُقلت براءة الاختراع إلى شركة Koninklijke Philips NV.

تصميم

استخدمت براءات اختراع ومواصفات I2C مصطلحي " الرئيسي /التابع" بين عامي 1980 و2021. [ 1 ] [ 3 ] وفي عام 2021، غيّر الإصدار السابع من مواصفات I2C المصطلحين إلى "المتحكم/الهدف" . [ 3 ] [ 4 ] ولا تزال التعريفات التقنية لهذه الأجهزة، وأدوارها على ناقل I2C ، دون تغيير. [ 4 ]

مخطط توضيحي لمثال يتضمن وحدة تحكم واحدة ( وحدة تحكم دقيقة )، وثلاث عقد مستهدفة ( محول تناظري رقمي ، ومحول رقمي تناظري ، ووحدة تحكم دقيقة)، ومقاومات سحب لأعلى R p

يستخدم بروتوكول I²C إشارتين فقط : خط بيانات التسلسل (SDA) وخط ساعة التسلسل (SCL). وكلاهما ثنائي الاتجاه ويتم رفعهما باستخدام مقاومات . [ 3 ] الجهد المستخدم عادةً هو +5  فولت أو +3.3  فولت، مع العلم أنه يُسمح باستخدام أنظمة بجهود أخرى.

يحتوي التصميم المرجعي لبروتوكول I²C على مساحة عناوين 7 بت ، مع امتداد نادر الاستخدام 10 بت. ويشير بعض الموردين إلى عناوين 8 بت و11 بت بدلاً من ذلك، حيث تُستخدم البتة الأدنى في بايت العنوان الأول للتمييز بين أوامر الكتابة والقراءة. [ 5 ]

سرعات ناقل I2C الشائعة هي يتوفر وضع قياسي بسرعة 100 كيلوبت/ثانية ووضع سريع بسرعة 400 كيلوبت/ثانية . كما يوجد وضع منخفض السرعة بسرعة 10 كيلوبت/ثانية ، مع إمكانية استخدام ترددات ساعة منخفضة بشكل تعسفي. تدعم الإصدارات اللاحقة من بروتوكول I2C عددًا أكبر من العُقد وتعمل بسرعات أعلى ( وضع سريع بسرعة 400 كيلوبت/ثانية ، ووضع سريع مُحسّن بسرعة 1 ميجابت/ثانية ، ووضع عالي السرعة بسرعة 3.4 ميجابت/ثانية ، ووضع فائق السرعة بسرعة 5 ميجابت/ثانية ). تُستخدم هذه السرعات على نطاق أوسع في الأنظمة المُدمجة مقارنةً بأجهزة الكمبيوتر الشخصية.

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

يُحدَّد عدد العُقد التي يُمكن أن تتواجد على ناقل I²C مُعين بمساحة العناوين، وكذلك بسعة الناقل الكلية البالغة 400 بيكوفاراد ، مما يُقيِّد مسافات الاتصال العملية إلى بضعة أمتار. كما أن المعاوقة العالية نسبيًا ومقاومة الضوضاء المنخفضة تتطلبان جهدًا أرضيًا مشتركًا، مما يُقيِّد الاستخدام العملي للاتصال داخل لوحة الدوائر المطبوعة نفسها أو نظام صغير من اللوحات. 

أوضاع I 2 C
الوضع [ 3 ]أقصى سرعةالسعة القصوىيقوداتجاه
الوضع القياسي (Sm)100 كيلوبت/ثانية400 بيكوفارادمصرف مفتوح *ثنائي الاتجاه
الوضع السريع (FM)400 كيلوبت/ثانية400 بيكوفارادمصرف مفتوح*ثنائي الاتجاه
الوضع السريع بلس (Fm+)1 ميجابت/ثانية550 بيكوفارادمصرف مفتوح*ثنائي الاتجاه
وضع السرعة العالية (Hs)1.7 ميجابت/ثانية400 بيكوفارادمصرف مفتوح*ثنائي الاتجاه
وضع السرعة العالية (Hs)3.4 ميجابت/ثانية100 بيكوفارادمصرف مفتوح*ثنائي الاتجاه
الوضع فائق السرعة (UFm)5 ميجابت/ثانية؟الدفع والسحبأحادي الاتجاه

التصميم المرجعي

التصميم المرجعي المذكور أعلاه عبارة عن ناقل بيانات مزود بخط ساعة (SCL) وخط بيانات (SDA) مع عنونة 7 بت. ويؤدي هذا الناقل دورين للعقد، إما وحدة تحكم (رئيسية) أو هدف (تابعة):

  • عقدة التحكم (الرئيسية): العقدة التي تولد الساعة وتبدأ الاتصال مع الأهداف (التابعة).
  • العقدة المستهدفة (التابعة): العقدة التي تستقبل إشارة الساعة وتستجيب عند مخاطبتها من قبل وحدة التحكم (الرئيسية).

الناقل عبارة عن ناقل متعدد وحدات التحكم، مما يعني إمكانية وجود أي عدد من عقد التحكم. بالإضافة إلى ذلك، يمكن تغيير أدوار وحدة التحكم والهدف بين الرسائل (بعد إرسال رسالة إيقاف).

قد يكون هناك أربعة أوضاع تشغيل محتملة لجهاز ناقل معين، على الرغم من أن معظم الأجهزة لا تستخدم سوى دور واحد ووضعيه:

  • إرسال وحدة التحكم (الرئيسية): تقوم عقدة التحكم بإرسال البيانات إلى هدف (تابع).
  • يستقبل المتحكم (الرئيسي): تستقبل عقدة المتحكم البيانات من هدف (تابع).
  • إرسال الهدف (التابع): تقوم العقدة المستهدفة بإرسال البيانات إلى وحدة التحكم (الرئيسية).
  • استقبال الهدف (التابع): تستقبل العقدة المستهدفة البيانات من وحدة التحكم (الرئيسية).

بالإضافة إلى بتات البيانات 0 و1، يسمح ناقل I2C بإشارات بدء وإيقاف خاصة، تعمل كفواصل للرسائل وتختلف عن بتات البيانات. (يختلف هذا عن بتات البدء والإيقاف المستخدمة في الاتصال التسلسلي غير المتزامن ، والتي تختلف عن بتات البيانات فقط من خلال توقيتها).

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

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

يتم إرسال العنوان وبايتات البيانات، البت الأكثر أهمية أولاً. تُشير حالة البدء إلى انتقال إشارة SDA من مستوى عالٍ إلى مستوى منخفض مع ارتفاع إشارة SCL؛ وتُشير حالة الإيقاف إلى انتقال إشارة SDA من مستوى منخفض إلى مستوى عالٍ مع ارتفاع إشارة SCL. تحدث جميع انتقالات إشارة SDA الأخرى مع انخفاض إشارة SCL.

إذا رغب المتحكم في الكتابة إلى الهدف، فإنه يرسل بايتًا بشكل متكرر، ويرسل الهدف بت تأكيد (ACK). (في هذه الحالة، يكون المتحكم في وضع الإرسال، ويكون الهدف في وضع الاستقبال).

إذا رغب المتحكم في القراءة من الهدف، فإنه يستقبل بايتًا واحدًا بشكل متكرر من الهدف، ويرسل بت تأكيد (ACK) بعد كل بايت باستثناء البايت الأخير. (في هذه الحالة، يكون المتحكم في وضع الاستقبال، ويكون الهدف في وضع الإرسال).

قد تتكون معاملة I2C من عدة رسائل. يقوم المتحكم بإنهاء الرسالة بشرط إيقاف إذا كانت هذه نهاية المعاملة، أو قد يرسل شرط بدء آخر للاحتفاظ بالتحكم في الناقل لرسالة أخرى ( معاملة بتنسيق مُدمج ).

بروتوكولات الرسائل

تحدد بروتوكولات I2C الأنواع الأساسية للمعاملات، والتي تبدأ كل منها بـ START وتنتهي بـ STOP:

  • رسالة واحدة حيث يقوم جهاز تحكم (رئيسي) بكتابة البيانات إلى هدف (تابع).
  • رسالة واحدة حيث يقوم جهاز تحكم (رئيسي) بقراءة البيانات من هدف (تابع).
  • التنسيق المدمج، حيث يقوم جهاز التحكم (الرئيسي) بإصدار عمليتي قراءة أو كتابة على الأقل إلى هدف واحد أو أكثر (التابعين).

في المعاملة المدمجة، تبدأ كل عملية قراءة أو كتابة بإشارة بدء (START) متبوعةً بعنوان الوجهة. تُسمى إشارات البدء اللاحقة لإشارات البدء الأولى بتات البدء المتكررة . لا تسبق إشارات البدء المتكررة إشارات إيقاف (STOP)، وهذا ما يُتيح للوجهة معرفة أن الرسالة التالية جزء من نفس المعاملة.

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

تدعم أنظمة I2C النقية هياكل رسائل متنوعة. يقتصر SMBus على تسعة من هذه الهياكل، مثل قراءة كلمة N وكتابة كلمة N ، والتي تتضمن هدفًا واحدًا. يُوسّع PMBus نطاق SMBus ببروتوكول المجموعة ، مما يسمح بإرسال عدة معاملات SMBus في رسالة واحدة مُجمّعة. تُشير إشارة الإيقاف (STOP) إلى وقت سريان هذه الإجراءات المُجمّعة. على سبيل المثال، قد تُعيد عملية PMBus واحدة تهيئة ثلاثة مصادر طاقة (باستخدام ثلاثة عناوين هدف I2C مختلفة)، وستُصبح تهيئتها الجديدة سارية المفعول في الوقت نفسه: عند استلامها إشارة الإيقاف ( STOP).

باستثناءات قليلة، لا يُحدد كلٌ من بروتوكول I2C وبروتوكول SMBus دلالات الرسائل، مثل معنى بايتات البيانات في الرسائل. وتختلف دلالات الرسائل باختلاف المنتج. وتشمل هذه الاستثناءات الرسائل الموجهة إلى عنوان الاتصال العام لبروتوكول I2C (0x00) أو إلى عنوان استجابة تنبيهات SMBus ؛ والرسائل المشاركة في بروتوكول تحليل عناوين SMBus (ARP) لتخصيص العناوين وإدارتها ديناميكيًا.

عمليًا، تعتمد معظم الأجهزة المستهدفة نماذج التحكم بالطلب والاستجابة، حيث يُعامل بايت واحد أو أكثر بعد أمر الكتابة كأمر أو عنوان. وتحدد هذه البايتات كيفية التعامل مع البايتات المكتوبة اللاحقة أو كيفية استجابة الجهاز المستهدف عند عمليات القراءة اللاحقة. وتتضمن معظم عمليات SMBus أوامر أحادية البايت.

مثال على المراسلة: ذاكرة EEPROM 24C32

STMicroelectronics M24C08-BN6: ذاكرة EEPROM تسلسلية مع ناقل I 2 C [ 6 ]

من الأمثلة المحددة على ذلك ذاكرة EEPROM من نوع 24C32 ، التي تستخدم بايتين للطلب يُطلق عليهما عنوان عالي وعنوان منخفض. (وبناءً على ذلك، لا يمكن استخدام هذه الذاكرة مع مضيفات SMBus النقية، التي تدعم فقط الأوامر أو العناوين أحادية البايت). تُستخدم هذه البايتات لعنونة البايتات ضمن مساحة عناوين ذاكرة EEPROM البالغة 32 كيلوبت (أو 4 كيلوبايت ). ويُستخدم نفس نظام العنونة ثنائي البايت أيضًا مع ذاكرات EEPROM الأكبر حجمًا، مثل 24C512، التي تخزن 512 كيلوبت (أو 64 كيلوبايت). تعتمد كتابة البيانات إلى هذه الذاكرة وقراءتها منها على بروتوكول بسيط: يُكتب العنوان، ثم تُنقل البيانات حتى نهاية الرسالة. قد يُسبب جزء نقل البيانات من البروتوكول مشاكل على SMBus، نظرًا لأن بايتات البيانات لا تسبقها قيمة عد، ويمكن نقل أكثر من 32 بايتًا في المرة الواحدة. غالبًا ما يتم استخدام ذاكرة EEPROM من نوع I2C الأصغر من 32 كيلوبت، مثل 24C02 ذات 2 كيلوبت، على ناقل SMBus مع عمليات نقل بيانات أحادية البايت غير فعالة للتغلب على هذه المشكلة.      

تُكتب رسالة واحدة إلى ذاكرة EEPROM. بعد إشارة البدء (START)، يُرسل المتحكم عنوان ناقل الشريحة مع مسح بت الاتجاه ( write )، ثم يُرسل عنوان البيانات المكون من بايتين داخل ذاكرة EEPROM، ثم يُرسل بايتات البيانات المراد كتابتها بدءًا من ذلك العنوان، متبوعًا بإشارة الإيقاف (STOP). عند كتابة عدة بايتات، يجب أن تكون جميع البايتات في نفس الصفحة المكونة من 32 بايت. أثناء انشغال ذاكرة EEPROM بحفظ هذه البايتات في الذاكرة، لن تستجيب لطلبات I²C اللاحقة . (هذا أحد أوجه عدم التوافق مع SMBus: يجب على أجهزة SMBus دائمًا الاستجابة لعناوين ناقلها).

لقراءة البيانات بدءًا من عنوان محدد في ذاكرة EEPROM، تُستخدم رسالة مُدمجة. بعد إشارة البدء (START)، يقوم المتحكم أولًا بكتابة عنوان ناقل الشريحة مع مسح بت الاتجاه ( write )، ثم بايتَي عنوان بيانات EEPROM. بعد ذلك، يُرسل إشارة بدء (START) مُكررة، وعنوان ناقل EEPROM مع ضبط بت الاتجاه ( read ). ستستجيب ذاكرة EEPROM بعد ذلك ببايتَي البيانات بدءًا من عنوان بيانات EEPROM المُحدد - رسالة مُدمجة: أولًا كتابة، ثم قراءة. يُصدر المتحكم إشارة تأكيد (ACK) بعد كل بايت مُقرأ باستثناء البايت الأخير، ثم يُصدر إشارة إيقاف (STOP). يزيد EEPROM العنوان بعد كل بايت بيانات مُنقل؛ ويمكن لعمليات القراءة متعددة البايتات استرجاع محتويات EEPROM بالكامل باستخدام رسالة مُدمجة واحدة.

الطبقة المادية

ناقل I2C : Rp هي مقاومات سحب لأعلى، وRs هي مقاومات توالي اختيارية. [ 3 ]

على مستوى الطبقة الفيزيائية ، تُصمم خطوط SCL وSDA إما بنظام تصريف مفتوح ( MOSFET ) أو نظام مجمع مفتوح ( BJT )، لذا يلزم وجود مقاومة سحب لكل خط. يُخرج الخط إشارة منطقية 0 بسحبه إلى الأرض، بينما يُخرج إشارة منطقية 1 بتركه عائمًا ( مقاومة خرج عالية ) بحيث تسحبه مقاومة السحب إلى مستوى عالٍ. لا يتم رفع مستوى أي خط بشكل فعال. يسمح هذا التوصيل بتوصيل عدة عقد بالناقل دون حدوث دوائر قصر ناتجة عن تداخل الإشارات. قد تستخدم الأنظمة عالية السرعة (وبعض الأنظمة الأخرى) مصدر تيار بدلاً من المقاومة لرفع مستوى SCL فقط أو كل من SCL وSDA، وذلك لاستيعاب سعة ناقل أعلى وتمكين أوقات صعود أسرع.

من أهم نتائج ذلك أن عدة عقد قد تُشغّل الخطوط في آنٍ واحد. إذا كانت أي عقدة تُخفّض مستوى الخط، فسيبقى منخفضًا. يمكن للعقد التي تحاول إرسال إشارة منطقية (أي ترك الخط مرتفعًا) أن تكتشف ذلك وتستنتج أن عقدة أخرى نشطة في الوقت نفسه.

عند استخدام هذه التقنية على خط SCL، تُسمى تمديد الساعة ، وهي آلية للتحكم في تدفق البيانات للأهداف. أما عند استخدامها على خط SDA، فتُسمى التحكيم ، وتضمن وجود مُرسِل واحد فقط في كل مرة.

عندما يكون النظام في وضع الخمول، يكون كلا الخطين في حالة عالية. لبدء عملية نقل، يتم خفض مستوى خط SDA بينما يبقى مستوى خط SCL مرتفعًا. من غير القانوني [ 3 ] : 14 إرسال إشارة إيقاف عن طريق رفع مستوى خط SDA مرة أخرى (على الرغم من أن مثل هذه الرسالة الفارغة عادةً ما تكون غير ضارة)، لذا فإن الخطوة التالية هي خفض مستوى خط SCL.

باستثناء إشارات البدء والإيقاف، يتغير خط SDA فقط عندما تكون إشارة الساعة منخفضة؛ ويتكون إرسال بت البيانات من نبض خط الساعة عاليًا مع تثبيت خط البيانات عند المستوى المطلوب.

عندما تكون إشارة SCL منخفضة، يقوم جهاز الإرسال (المتحكم في البداية) بضبط إشارة SDA على القيمة المطلوبة، وبعد تأخير قصير للسماح للقيمة بالانتشار، يسمح لإشارة SCL بالارتفاع. ثم ينتظر المتحكم حتى ترتفع إشارة SCL فعليًا؛ وهذا سيتأخر بسبب زمن الصعود المحدود لإشارة SCL ( ثابت الزمن RC لمقاومة السحب لأعلى والسعة الطفيلية للناقل)، وقد يتأخر أيضًا بسبب تمديد إشارة الساعة للجهاز المستهدف.

بمجرد أن يصبح مستوى إشارة SCL مرتفعًا، ينتظر المتحكم فترة زمنية قصيرة (4 ميكروثانية لبروتوكول I²C  بالسرعة القياسية ) للتأكد من أن جهاز الاستقبال قد استقبل البت، ثم يخفض مستوى الإشارة مرة أخرى. وبذلك تكتمل عملية إرسال بت واحد.

بعد كل 8 بتات بيانات في اتجاه واحد، يتم إرسال بت تأكيد في الاتجاه الآخر. يتبادل المرسل والمستقبل الأدوار لبت واحد، ويرسل المستقبل الأصلي بت 0 واحد (تأكيد). إذا رأى المرسل بت 1 (رفض) بدلاً من ذلك، فإنه يستنتج ما يلي:

  • (في حال إرسال وحدة التحكم إلى الهدف) يتعذر على الهدف استقبال البيانات. لا يوجد هدف بهذا الاسم، أو لم يتم فهم الأمر، أو يتعذر استقبال المزيد من البيانات.
  • (إذا كان الهدف يرسل إلى وحدة التحكم) ترغب وحدة التحكم في إيقاف عملية النقل بعد بايت البيانات هذا.

يتغير اتجاه خط SDA فقط أثناء بتات التأكيد؛ ويتم التحكم في خط SCL دائمًا بواسطة وحدة التحكم.

بعد بت التأكيد، يكون خط الساعة منخفضًا، وقد يقوم المتحكم بأحد الأمور الثلاثة التالية:

  • ابدأ بنقل بايت آخر من البيانات: يقوم جهاز الإرسال بضبط SDA، ويقوم جهاز التحكم بإرسال نبضة عالية إلى SCL.
  • إرسال إشارة إيقاف : اضبط مستوى إشارة SDA على منخفض، ثم ارفع مستوى إشارة SCL، ثم ارفع مستوى إشارة SDA مرة أخرى. هذا يحرر ناقل I2C .
  • إرسال إشارة بدء متكررة : اضبط إشارة SDA على مستوى عالٍ، ثم دع إشارة SCL ترتفع، ثم اخفض إشارة SDA مرة أخرى. هذا يُنشئ رسالة جديدة على ناقل I2C دون تحرير الناقل.

تمديد التوقيت باستخدام SCL

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

يجب على وحدة التحكم الانتظار حتى تلاحظ ارتفاع خط الساعة، ووقت إضافي أدنى (4 ميكروثانية لـ 100 كيلوبت/ثانية I 2  C القياسي ) قبل خفض الساعة مرة أخرى.

على الرغم من أن وحدة التحكم قد تُبقي خط SCL منخفضًا لأي مدة ترغب بها (وهذا غير مسموح به منذ الإصدار  السادس من البروتوكول - القسم الفرعي 3.1.1)، فإن مصطلح " تمديد إشارة الساعة" يُستخدم عادةً فقط عندما تقوم الأجهزة المستهدفة بذلك. مع أن أي نبضة ساعة قابلة للتمديد نظريًا، إلا أن الفترات الزمنية التي تسبق أو تلي بت التأكيد هي التي تُستخدم عادةً. على سبيل المثال، إذا كان الجهاز المستهدف وحدة تحكم دقيقة ، فقد تقوم واجهة I²C الخاصة به بتمديد إشارة الساعة بعد كل بايت، إلى أن يقرر البرنامج ما إذا كان سيرسل تأكيدًا إيجابيًا أم رفضًا سلبيًا.

يُعدّ تمديد إشارة الساعة الحالة الوحيدة في بروتوكول I²C التي يقوم فيها الجهاز المستهدف بتشغيل خط SCL. لا تحتاج العديد من الأجهزة المستهدفة إلى تمديد إشارة الساعة، وبالتالي تتعامل مع خط SCL كمدخل فقط دون أي دوائر لتشغيله. قد لا تدعم بعض وحدات التحكم، مثل تلك الموجودة داخل الدوائر المتكاملة المخصصة (ASICs) ، تمديد إشارة الساعة؛ وغالبًا ما تُصنّف هذه الأجهزة على أنها واجهة ثنائية الأسلاك وليست واجهة I²C .

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

التحكيم باستخدام SDA

يراقب كل متحكم ناقل البيانات بحثًا عن بتات البدء والإيقاف، ولا يبدأ إرسال رسالة ما دام متحكم آخر يشغل الناقل. مع ذلك، قد يبدأ متحكمان الإرسال في الوقت نفسه تقريبًا؛ في هذه الحالة، يتم اللجوء إلى التحكيم. يمكن أيضًا التحكيم في وضع الإرسال المستهدف عندما يخاطب متحكمٌ عدة أهداف، لكن هذا أقل شيوعًا. على عكس البروتوكولات (مثل الإيثرنت ) التي تستخدم تأخيرات عشوائية قبل إعادة المحاولة، يعتمد بروتوكول I2C سياسة تحكيم حتمية. يتحقق كل مُرسِل من مستوى خط البيانات (SDA) ويقارنه بالمستويات المتوقعة؛ إذا لم تتطابق، يفقد هذا المُرسِل التحكيم وينسحب من تفاعل هذا البروتوكول.

إذا قام أحد أجهزة الإرسال بضبط خط SDA على 1 (أي عدم إرسال إشارة)، وقام جهاز إرسال آخر بضبطه على 0 (أي توصيله بالأرض)، فإن النتيجة هي انخفاض مستوى الخط. يلاحظ جهاز الإرسال الأول أن مستوى الخط يختلف عن المستوى المتوقع، ويستنتج أن عقدة أخرى تُرسل. العقدة الأولى التي تلاحظ هذا الاختلاف هي التي تفقد السيطرة: فتتوقف عن إرسال إشارة SDA. إذا كانت هذه العقدة وحدة تحكم، فإنها تتوقف أيضًا عن إرسال إشارة SCL وتنتظر إشارة إيقاف؛ ثم قد تحاول إعادة إرسال رسالتها كاملة. في هذه الأثناء، لم تلاحظ العقدة الأخرى أي فرق بين المستويات المتوقعة والفعلية على خط SDA، وبالتالي تستمر في الإرسال. يمكنها فعل ذلك دون مشاكل لأن الإشارة حتى الآن كانت مطابقة تمامًا لما هو متوقع؛ ولم يقم أي جهاز إرسال آخر بتشويش رسالتها.

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

نادرًا ما يحدث التحكيم، ولكنه ضروري لدعم وحدات التحكم المتعددة بشكل صحيح. وكما هو الحال مع تمديد إشارة الساعة، لا تدعم جميع الأجهزة التحكيم. أما الأجهزة التي تدعمه، فتُعلن عادةً عن دعمها للاتصال بين وحدات التحكم المتعددة .

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

في الحالات النادرة للغاية التي يرسل فيها متحكمان رسائل متطابقة في آنٍ واحد، سيعتبر كلاهما الاتصال ناجحًا، لكن الهدف لن يرى سوى رسالة واحدة. لهذا السبب، عندما يكون الهدف قابلاً للوصول إليه من قِبل عدة متحكمين، يجب أن يكون كل أمر يتعرف عليه الهدف إما متكررًا أو مضمونًا عدم إصداره من قِبل متحكمين في الوقت نفسه. (على سبيل المثال، لا يشترط أن يكون الأمر الصادر من متحكم واحد متكررًا، كما لا يشترط أن يكون أمرٌ معين متكررًا إذا كانت هناك آلية استبعاد متبادل تضمن عدم إمكانية إصدار هذا الأمر إلا من قِبل متحكم واحد في أي وقت).

التحكيم في SMBus

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

  • على الرغم من أن ناقل SMBus مصمم نظريًا ليكون ناقلًا أحادي المتحكم، إلا أن الجهاز المستهدف الذي يدعم بروتوكول إشعار المضيف يعمل كمتحكم لتنفيذ الإشعار. فهو يستحوذ على الناقل ويكتب رسالة من 3 بايتات إلى عنوان مضيف SMBus المحجوز (0x08)، مُمررًا عنوانه وبايتين من البيانات. عندما يحاول جهازان مستهدفان إشعار المضيف في الوقت نفسه، يفقد أحدهما حق التحكم ويحتاج إلى إعادة المحاولة.
  • يستخدم نظام إشعارات بديل إشارة SMBALERT# منفصلة لطلب الانتباه. في هذه الحالة، يقوم المضيف بقراءة بايت واحد من عنوان استجابة تنبيه SMBus المحجوز (0x0C)، وهو نوع من عناوين البث. تستجيب جميع الأهداف المُنبّهة ببايت بيانات يحتوي على عنوانها. عندما يُرسل الهدف عنوانه بنجاح (أي يفوز في عملية التحكيم ضد الأهداف الأخرى)، يتوقف عن إرسال هذا المقاطعة. في كلتا الحالتين، تضمن عملية التحكيم استلام رسالة أحد الأهداف، ومعرفة الأهداف الأخرى بضرورة إعادة المحاولة.
  • يدعم SMBus أيضًا بروتوكولًا لحل العناوين ، حيث تُعيد الأجهزة مُعرّفًا فريدًا للجهاز (UDID) بطول 16 بايت. قد تستجيب أجهزة متعددة؛ الجهاز ذو المُعرّف الأقصر هو الذي يفوز في عملية التحكيم ويتم التعرف عليه.

التحكيم في PMBus

يُوسّع بروتوكول PMBus الإصدار 1.3 بروتوكول استجابة تنبيهات SMBus ليشمل بروتوكول قراءة المناطق . [ 7 ] يمكن تجميع الأهداف في مناطق ، ويمكن توجيه جميع الأهداف في منطقة واحدة للاستجابة، مع إمكانية إخفاء استجاباتها (حذف المعلومات غير المرغوب فيها)، أو عكسها (بحيث تُرسل المعلومات المطلوبة على شكل أصفار، مما يُكسب عملية التحكيم)، أو إعادة ترتيبها (بحيث تُرسل المعلومات الأكثر أهمية أولاً). يضمن التحكيم أن تكون الاستجابة ذات الأولوية الأعلى هي أول استجابة تُعاد إلى وحدة التحكم.

يحجز PMBus عناوين I 2 C 0x28 و 0x37 لقراءة وكتابة المنطقة، على التوالي.

الاختلافات بين الأوضاع

توجد عدة أوضاع تشغيل ممكنة لاتصالات I2C . جميعها متوافقة من حيث إمكانية استخدام الوضع القياسي بسرعة 100 كيلوبت/ثانية دائمًا، ولكن دمج أجهزة ذات قدرات مختلفة على نفس الناقل قد يُسبب مشاكل، كما يلي:

  • يتميز الوضع السريع بتوافقه العالي، حيث يعمل ببساطة على تحسين بعض معايير التوقيت للوصول إلى سرعة 400 كيلوبت/ثانية . يدعم هذا الوضع على نطاق واسع أجهزة I2C المستهدفة، لذا يمكن لوحدة التحكم استخدامه طالما أنها على دراية بأن سعة ناقل البيانات وقوة مقاومة السحب تسمح بذلك.
  • يُحقق الوضع السريع المُعزز سرعات تصل إلى 1 ميجابت/ثانية  باستخدام مُشغلات ومقاومات سحب أقوى (20 مللي أمبير) لتحقيق أوقات صعود وهبوط أسرع. يُمكن تحقيق التوافق مع الأجهزة القياسية وأجهزة الوضع السريع (ذات قدرة سحب سفلي 3  مللي أمبير) إذا وُجدت طريقة لتقليل قوة مقاومات السحب عند الاتصال بها.
  • يتوافق وضع السرعة العالية ( 3.4 ميجابت/ثانية ) مع أجهزة I²C العادية على نفس الناقل، ولكنه يتطلب وجود مقاومة سحب نشطة على خط الساعة في وحدة التحكم، والتي يتم تفعيلها أثناء عمليات النقل عالية السرعة. يتم نقل بت البيانات الأول بحافة صاعدة عادية لإشارة الساعة ذات المصرف المفتوح، والتي قد يتم تمديدها. أما بالنسبة لبتات البيانات السبعة المتبقية وإشارة التأكيد (ACK)، فتقوم وحدة التحكم برفع إشارة الساعة في الوقت المناسب، ولا يجوز للجهاز المستهدف تمديدها. تسبق جميع عمليات النقل عالية السرعة رمز تحكم أحادي البايت بسرعة عالية أو قياسية. يخدم هذا الرمز ثلاثة أغراض:
    1. يُخبر هذا الأمر الأجهزة المستهدفة عالية السرعة بتغيير قواعد التوقيت إلى قواعد عالية السرعة.
    2. يضمن ذلك عدم محاولة الأجهزة ذات السرعة العالية أو العادية المشاركة في عملية النقل (لأن عنوانها لا يتطابق مع عنوانها)، و
    3. لأنه يحدد وحدة التحكم (هناك ثمانية رموز تحكم، ويجب على كل وحدة تحكم استخدام رمز مختلف)، فإنه يضمن اكتمال التحكيم قبل الجزء عالي السرعة من عملية النقل، وبالتالي لا يحتاج الجزء عالي السرعة إلى مراعاة هذه القدرة.
  • يُعدّ وضع السرعة الفائقة في جوهره مجموعة فرعية من بروتوكول I2C مخصصة للكتابة فقط ، وهو غير متوافق مع الأوضاع الأخرى باستثناء سهولة إضافة دعمه إلى تصميم أجهزة واجهة I2C الحالية . يُسمح باستخدام وحدة تحكم واحدة فقط، وهي تُشغّل خطوط البيانات باستمرار لتحقيق معدل نقل بيانات يبلغ 5 ميجابت/ثانية . يتم استبعاد تمديد إشارة الساعة، والتحكيم، وعمليات نقل القراءة، والإشعارات. يُستخدم هذا الوضع بشكل أساسي لشاشات LED المتحركة حيث لا يتسبب خطأ الإرسال إلا في خلل بصري عابر وغير مؤثر. يقتصر التشابه مع أوضاع ناقل I2C الأخرى على ما يلي:
    • تُستخدم شروط البدء والتوقف لتحديد عمليات النقل،
    • تتيح معالجة I2C لأجهزة مستهدفة متعددة مشاركة الناقل دون الحاجة إلى إشارات اختيار الهدف على غرار ناقل SPI ،
    • يتم إرسال نبضة ساعة تاسعة لكل بايت يتم إرساله، مما يشير إلى موضع بتات التأكيد غير المستخدمة.

يقدم بعض البائعين ما يسمى بوضع Turbo غير القياسي بسرعة تصل إلى 1.4 ميجابت/ثانية .

في جميع الأوضاع، يتم التحكم في تردد الساعة بواسطة وحدة التحكم (وحدات التحكم)، ويمكن تشغيل ناقل أطول من المعتاد بسرعة أبطأ من السرعة الاسمية عن طريق خفض تردد الساعة .

توصيلات الدوائر

لوحة تحويل تناظري رقمي 16 بت مزودة بواجهة I2C

يُعدّ بروتوكول I2C شائعًا لربط الدوائر الطرفية بأنظمة النماذج الأولية، مثل أردوينو وراسبيري باي . لا يستخدم I2C موصلًا قياسيًا؛ ومع ذلك، ابتكر مصممو اللوحات الإلكترونية مخططات توصيل متنوعة لوصلات I2C . ولتقليل التلف المحتمل الناتج عن توصيل رؤوس التوصيل ذات 0.1 بوصة بشكل عكسي، اقترح بعض المطورين استخدام توصيلات متناوبة للإشارة والطاقة وفقًا لمخططات التوصيل التالية: (GND, SCL, VCC, SDA) أو (VCC, SDA, GND, SCL). [ 8 ]

تستخدم الغالبية العظمى من التطبيقات بروتوكول I2C بالطريقة التي صُمم بها أصلاً - أي توصيل الدوائر المتكاملة الطرفية مباشرةً بالمعالج على نفس لوحة الدوائر المطبوعة، وبالتالي عبر مسافات قصيرة نسبيًا تقل عن 30 سم (قدم واحدة) ، دون الحاجة إلى موصل. مع ذلك، باستخدام مُشغّل تفاضلي، يمكن لإصدار بديل من I2C التواصل لمسافة تصل إلى 20 مترًا (وربما أكثر من 100 متر) عبر كابل CAT5 أو كابلات أخرى. [ 9 ] [ 10 ] 

تحمل العديد من الموصلات القياسية إشارات I²C . على سبيل المثال، موصلات UEXT وiPack ذات العشرة دبابيس [ 11 ] و Lego Mindstorms NXT ذات 6P6C تحمل إشارات I²C . [ 12 ] [ 13 ] [ 14 ] [ 15 ] كما تحمل جميع موصلات HDMI ومعظم موصلات DVI و VGA بيانات DDC2 عبر I²C . بالإضافة إلى ذلك، يمكن أحيانًا استخدام موصلات 8P8C وكابل CAT5، المستخدم عادةً للطبقة الفيزيائية لشبكة الإيثرنت، لنقل إشارات I²C أحادية الطرف مشفرة تفاضليًا [ 16 ] أو مُعززة . [ 17 ]

التخزين المؤقت والتعدد الإرسالي

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

يمكن استخدام المخازن المؤقتة لعزل السعة الكهربائية في جزء من خط النقل عن الآخر، أو للسماح بإرسال بيانات I²C عبر كابلات أو مسارات أطول. يجب أن تستخدم المخازن المؤقتة للخطوط ثنائية الاتجاه، مثل I²C ، إحدى الطرق العديدة لمنع ظاهرة التثبيت. نظرًا لأن I²C خط مفتوح التصريف، يجب أن تُفعّل المخازن المؤقتة إشارة منخفضة على أحد جانبيها عند رصد إشارة منخفضة على الجانب الآخر. إحدى طرق منع التثبيت هي اختيار مستويات الإدخال والإخراج للمخزن المؤقت بعناية بحيث يكون مستوى إخراج مُشغّله أعلى من عتبة الإدخال، مما يمنعه من التفعيل الذاتي. على سبيل المثال، قد يكون للمخزن المؤقت عتبة إدخال تبلغ 0.4  فولت لاكتشاف الإشارة المنخفضة، ولكن مستوى إخراج منخفض يبلغ 0.5  فولت. تتطلب هذه الطريقة أن تكون عتبات جميع الأجهزة الأخرى على ناقل البيانات متوافقة، وغالبًا ما يعني ذلك أنه لا يمكن توصيل مخازن مؤقتة متعددة تُطبّق هذه الطريقة على التوالي.

بدلاً من ذلك، توجد أنواع أخرى من المخازن المؤقتة التي تُنفذ مُضخِّمات التيار أو تتتبع الحالة (أي، أي جانب قام بخفض مستوى ناقل البيانات) لمنع حدوث ظاهرة التثبيت. تعني طريقة الحالة عادةً أنه يتم إنشاء نبضة غير مقصودة أثناء عملية التسليم عندما يقوم أحد الجانبين بخفض مستوى ناقل البيانات، ثم يقوم الجانب الآخر بخفضه، ثم يقوم الجانب الأول بتحريره (وهذا شائع أثناء تأكيد I2C ).

مشاركة SCL بين عدة حافلات

عند استخدام وحدة تحكم واحدة، يُمكن لعدة ناقلات I²C مشاركة خط SCL نفسه. [ 18 ] [ 19 ] تُرسل الحزم على كل ناقل إما بالتتابع أو في الوقت نفسه. هذا ممكن لأن الاتصال على كل ناقل يُمكن تقسيمه إلى فترات قصيرة متناوبة ذات مستوى SCL مرتفع، تليها فترات قصيرة ذات مستوى SCL منخفض. كما يُمكن تمديد إشارة الساعة إذا احتاج أحد الناقلات إلى وقت أطول في حالة معينة.

تتمثل المزايا في استخدام الأجهزة المستهدفة بنفس العنوان في نفس الوقت وتوفير الاتصالات أو زيادة الإنتاجية باستخدام عدة خطوط بيانات في نفس الوقت.

جدول حالة الخط

توضح هذه الجداول الحالات الذرية المختلفة وعمليات البت التي قد تحدث أثناء رسالة I2C .

ولاية الخط
يكتبحافلة غير نشطة

(ن)

يبدأ

(S)

عاطل

(أنا)

قف

(P)

تمديد الساعة

(CS)

ملحوظةيحق لك طلب التحكيمحجز الحافلة (المراقب)تم تسجيل الحافلة (المراقب)تحرير الحافلة (وحدة التحكم)تم إيقاف التشغيل مؤقتًا بواسطة الهدف
السبتيينتمرين السحب السلبيالحافة الهابطة (وحدة التحكم)تم تثبيته منخفضًا (وحدة التحكم)الحافة الصاعدة (وحدة التحكم)لا أهتم
SCLتمرين السحب السلبيتمرين السحب السلبيتمرين السحب السلبيتمرين السحب السلبيتم تثبيته على مستوى منخفض (الهدف)
ولاية الخط
يكتبإرسال بت بيانات واحد (1) (0)

(يتم ضبط/أخذ عينة من SDA بعد SCL لتجنب اكتشاف الحالة الخاطئة)

يرد جهاز الاستقبال ببتة تأكيد الاستلام (ACK).

(تم استلام بايت من المرسل)

رد المُستقبِل ببتة NACK

(لم يتم استلام البايت من المرسل)

إعداد البتات (Bs)جاهز للتجربة (علبة كبيرة)إعداد البتات (Bs)ACK (A)إعداد البتات (Bs)ناك (أ')
ملحوظةبت ضبط المرسل (المتحكم/الهدف)بت عينة جهاز الاستقبال (وحدة التحكم/الهدف)جهاز إرسال عالي المقاومةيلاحظ المرسل انخفاض قيمة SDAجهاز إرسال عالي المقاومةيرى المرسل أن قيمة SDA مرتفعة
السبتيينضبط البت (بعد سقوط خط SCL)بت الالتقاط (بعد ارتفاع مستوى خط التحكم بالصوت)يتم تثبيته منخفضًا بواسطة جهاز الاستقبال (بعد انخفاض مستوى SCL)يتم رفع مستوى الإشارة (أو ارتفاعها السلبي) بواسطة جهاز الاستقبال (بعد انخفاض مستوى التحكم في مستوى الإشارة)
SCLالحافة الهابطة (وحدة التحكم)الحافة الصاعدة (وحدة التحكم)الحافة الهابطة (وحدة التحكم)الحافة الصاعدة (وحدة التحكم)الحافة الهابطة (وحدة التحكم)الحافة الصاعدة (وحدة التحكم)
حالة الخط (بداية متكررة)
يكتبالإعداد لإشارة (Sr) بعد تأكيد/عدم تأكيدبداية متكررة (Sr)
ملحوظةابدأ من هنا من ACKتجنب حالة التوقف (P)ابدأ من هنا من ناكنفس إشارة البدء (S)
السبتيينتم تثبيته منخفضًا من أجل ACKالحافة الصاعدةنشوة سلبيةنشوة سلبيةالحافة الهابطة (وحدة التحكم)
SCLالحافة الهابطة (وحدة التحكم)تم إبقاؤها منخفضةالحافة الصاعدة (وحدة التحكم)نشوة سلبيةتمرين السحب السلبي

هيكل المعالجة

عنونة 7 بت

مجال:Sحقل عنوان I2CR/W'أتسلسلات رسائل I2C ...P
يكتبيبدأالبايت 1إقرارالبايت X، إلخ.

بقية القراءة أو الكتابة

تُكتب الرسالة هنا

قف
موضع البت في البايت X76543210
موضع عنوان 7 بت7654321
ملحوظةMSBLSB1 = اقرأ
٠ = اكتب

عنونة 10 بت

مجال:Sمؤشر وضع 10 بتالعنوان العلويR/W'أحقول العنوان السفليةأتسلسلات رسائل I2CP
يكتبيبدأالبايت 1إقرارالبايت 2إقراربايت X إلخ.

بقية القراءة أو الكتابة

تُكتب الرسالة هنا

قف
موضع البت في البايت X7654321076543210
قيمة البت11110XXXXXXXXXXX
موضع عنوان 10 بت10987654321
ملحوظةيشير إلى وضع 10 بتMSB1 = اقرأLSB
٠ = اكتب

العناوين المحجوزة في مساحة عناوين 7 بت

تم تخصيص مجموعتين من 8 عناوين لكل منهما لوظائف خاصة:

  • من: 0000 000إلى0000 111
  • من: 1111 000إلى1111 111
فهرس العناوين المحجوزةبايت 8 بتوصف
عنوان 7 بتقيمة R/W
البت الأكثر أهمية (4 بت)البتة الأقل أهمية (3 بت)بت واحد
10000٠٠٠0نداء عام
20000٠٠٠1بايت البداية
30000001Xعنوان CBUS
40000010Xمخصصة لأنواع الحافلات المختلفة
50000011Xمحجوز للاستخدام المستقبلي
600001XXXرمز وحدة التحكم في وضع HS
711111XX1معرف الجهاز
811110XXXعنونة الهدف (التابع) ذات 10 بت

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

يحجز SMBus بعض العناوين الإضافية. على وجه الخصوص، 0001 000يتم حجز عنوان لمضيف SMBus، والذي يمكن استخدامه بواسطة الأجهزة القادرة على التحكم، 0001 100وهو عنوان استجابة تنبيه SMBus الذي يتم استطلاعه بواسطة المضيف بعد مقاطعة خارج النطاق، وهو 1100 001العنوان الافتراضي الذي تستخدمه في البداية الأجهزة القادرة على تعيين العناوين الديناميكية.

العناوين غير المحجوزة في مساحة عناوين 7 بت

البت الأكثر أهمية (4 بت)الاستخدام النموذجي [ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ]
٠٠٠١أجهزة الاستقبال الرقمية، SMBus
٠٠١٠أجهزة فك تشفير خط الفيديو التلفزيوني، IPMB
0011برامج ترميز الصوت والفيديو
0100أجهزة تشفير الفيديو، موسعات منافذ الإدخال/الإخراج العامة
0101ACCESS.bus ، PMBus
0110VESA DDC ، PMBus
0111وحدة تحكم العرض
1000معالجة إشارات التلفزيون، معالجة الصوت، SMBus
1001تبديل الصوت والفيديو، ومحولات التناظرية إلى الرقمية ومحولات الرقمية إلى التناظرية ، وIPMB ، وSMBus
1010ذاكرة التخزين، ساعة الوقت الحقيقي
1011معالجات الصوت والفيديو
1100دوائر PLL والموالفات، والمعدِّلات ومزيلات التضمين، و SMBus
1101معالجات وأجهزة فك تشفير الصوت والفيديو، ومضخمات طاقة الصوت، وSMBus
1110محولات مساحة ألوان الصوت والفيديو

على الرغم من أن البت الأكثر أهمية (MSB) 1111محجوز لمعرف الجهاز وعنونة الهدف (التابع) ذات 10 بتات، إلا أنه يستخدم أيضًا بواسطة الأجهزة التي تعتمد على شاشة VESA DDC مثل أجهزة التأشير . [ 23 ]

تنسيق المعاملة

تتألف معاملة I2C من رسالة واحدة أو أكثر . تبدأ كل رسالة برمز بدء، وتنتهي المعاملة برمز إيقاف. تُسمى رموز البدء التي تلي الرمز الأول، والتي تبدأ رسالة ولكن ليس معاملة، برموز البدء المتكررة .

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

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

مخطط التوقيت

تسلسل نقل البيانات
تسلسل نقل البيانات
  1. يتم بدء نقل البيانات بشرط بدء (S) يتم الإشارة إليه عن طريق سحب SDA إلى مستوى منخفض بينما يظل SCL مرتفعًا.
  2. يتم سحب SCL إلى مستوى منخفض، ويقوم SDA بتعيين مستوى بت البيانات الأول مع الحفاظ على مستوى SCL منخفضًا (أثناء وقت الشريط الأزرق).
  3. يتم أخذ عينات البيانات (استلامها) عندما يرتفع مستوى خط التحكم (SCL) لأول بت (B1). ولكي يكون البت صالحًا، يجب ألا يتغير مستوى إشارة الإشارة (SDA) بين الحافة الصاعدة لمستوى خط التحكم (SCL) والحافة الهابطة اللاحقة (طوال فترة الشريط الأخضر).
  4. تتكرر هذه العملية، حيث ينتقل SDA بينما يكون SCL منخفضًا، ويتم قراءة البيانات بينما يكون SCL مرتفعًا (من B2 إلى Bn).
  5. يتبع البت الأخير نبضة ساعة، يتم خلالها سحب SDA إلى مستوى منخفض استعدادًا لبت الإيقاف .
  6. يتم الإشارة إلى حالة التوقف (P) عندما يرتفع مستوى SCL، يليه ارتفاع مستوى SDA.

لتجنب اكتشاف العلامات الخاطئة، يوجد حد أدنى للتأخير بين الحافة الهابطة لإشارة SCL وتغير إشارة SDA، وبين تغير إشارة SDA والحافة الصاعدة لإشارة SCL. يعتمد الحد الأدنى لوقت التأخير على معدل نقل البيانات المستخدم. تجدر الإشارة إلى أن رسالة I²C التي تحتوي على n بت من البيانات (بما في ذلك الإقرارات) تتضمن n + 1 نبضة ساعة.

تصميم البرمجيات

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

دعم نظام التشغيل

  • في AmigaOS يمكن للمرء استخدام مكون i2c.resource [ 25 ] لـ AmigaOS 4.x و MorphOS 3.x أو المكتبة المشتركة i2c.library بواسطة Wilhelm Noeker للأنظمة القديمة.
  • يمكن لمطوري أردوينو استخدام مكتبة Wire.
  • يمكن لمطوري CircuitPython و MicroPython استخدام فئات busio.I2C أو machine.I2C على التوالي.
  • يدعم Maximite اتصالات I 2 C بشكل أصلي كجزء من MMBasic الخاص به.
  • يستخدم PICAXE أوامر i2c و hi2c.
  • يدعم eCos تقنية I2C للعديد من بنى الأجهزة.
  • يدعم نظام التشغيل ChibiOS/RT تقنية I2C للعديد من بنى الأجهزة.
  • توفر أنظمة FreeBSD و NetBSD و OpenBSD أيضًا إطار عمل I 2 C، مع دعم لعدد من وحدات التحكم وأجهزة الاستشعار الشائعة.
    • منذ إصدار OpenBSD 3.9 (الصادر في 1 مايو 2006 ) ، يقوم نظام فرعي مركزي i2c_scan بفحص جميع رقاقات الاستشعار المتاحة دفعة واحدة أثناء بدء التشغيل، باستخدام آلية ترجيح مخصصة ووظيفة تخزين مؤقت محلية لقراءة قيم السجلات من أهداف I2C ؛ [ 26 ] وهذا يُتيح فحص المستشعرات على أجهزة i386/amd64 العامة الجاهزة للاستخدام أثناء بدء التشغيل دون أي تهيئة من المستخدم أو تأخير ملحوظ في الفحص؛ وتعتمد إجراءات مطابقة برامج التشغيل الفردية فقط على اسم سهل المطابقة قائم على سلسلة نصية؛ [ 27 ] ونتيجة لذلك، يتم تمكين معظم برامج تشغيل مستشعرات I2C تلقائيًا بشكل افتراضي في البنى المناسبة دون أي تأثير سلبي على الاستقرار؛ ويتم تصدير المستشعرات الفردية، سواءً كانت I2C أو غيرها، إلى مساحة المستخدم من خلال إطار عمل sysctl hw.sensors . اعتبارًا من مارس 2019   يحتوي OpenBSD على أكثر من عشرين برنامج تشغيل للأجهزة على I 2 C تقوم بتصدير نوع من أجهزة الاستشعار من خلال إطار عمل hw.sensors ، ويتم تمكين غالبية برامج التشغيل هذه بشكل كامل افتراضيًا في GENERICنواة i386/amd64 الخاصة بـ OpenBSD.
    • في نظام NetBSD ، يوجد أكثر من عشرين جهازًا مستهدفًا لبروتوكول I2C مزودة بمستشعرات مراقبة الأجهزة، والتي يمكن الوصول إليها عبر إطار عمل sysmon envsys كقوائم خصائص . على الأجهزة ذات الأغراض العامة، يتعين على كل برنامج تشغيل إجراء فحصه الخاص؛ لذا، يتم تعطيل جميع برامج التشغيل الخاصة بأجهزة I2C المستهدفة افتراضيًا في NetBSD في إصدارات i386/amd64.GENERIC
  • في نظام لينكس ، تتم معالجة بروتوكول I2C باستخدام برنامج تشغيل خاص بالجهاز المحدد، وآخر خاص بمحول I2C ( أو SMBus ) المتصل به. وتتضمن إصدارات نواة لينكس الحالية مئات من برامج التشغيل هذه.
  • في نظام التشغيل Mac OS X ، يوجد حوالي عشرين امتدادًا لنواة I2C تتواصل مع أجهزة الاستشعار لقراءة الجهد والتيار ودرجة الحرارة والحركة وغيرها من الحالات الفيزيائية.
  • في نظام التشغيل مايكروسوفت ويندوز ، يتم تنفيذ بروتوكول I²C بواسطة برامج تشغيل الأجهزة الخاصة بمعظم الأجهزة المتوفرة في السوق. أما بالنسبة لأجهزة HID المدمجة/ SoC ، فإن ويندوز 8 والإصدارات الأحدث تحتوي على برنامج تشغيل ناقل I²C مدمج. [ 28 ]
  • في نظام التشغيل Windows CE ، يتم تنفيذ I 2 C بواسطة برامج تشغيل الأجهزة الخاصة بمعظم الأجهزة المتاحة في الصناعة.
  • يدعم نظام التشغيل Unison OS، وهو نظام تشغيل في الوقت الحقيقي POSIX لإنترنت الأشياء، بروتوكول I 2 C للعديد من بنى الأجهزة MCU وMPU.
  • في نظام التشغيل RISC OS ، يتم توفير واجهة I2C عامة من وحدة التحكم في الإدخال/الإخراج، ويتم دعمها من نظام وحدة نظام التشغيل .
  • في أنظمة التشغيل Sinclair QDOS و Minerva QL، يتم دعم I 2 C من خلال مجموعة من الامتدادات التي توفرها TF Services.
  • في نظام التشغيل Zephyr ، يتم دعم بروتوكول I2C من خلال واجهة برمجة تطبيقات برنامج تشغيل جهاز I2C. [ 29 ] توفر واجهة برمجة التطبيقات هذه واجهة عامة للتواصل مع أجهزة I2C ، مما يسمح بدعم مجموعة واسعة من أجهزة I2C .

أدوات التطوير

عند تطوير أو استكشاف أخطاء الأنظمة التي تستخدم I2C ، يمكن أن تكون الرؤية على مستوى إشارات الأجهزة مهمة.

محولات المضيف

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

محللات البروتوكول

تُعد أجهزة تحليل بروتوكول I2C أدوات تقوم بأخذ عينات من ناقل I2C وفك تشفير الإشارات الكهربائية لتوفير رؤية عالية المستوى للبيانات التي يتم إرسالها على الناقل.

محلل المنطق

عند تطوير أو استكشاف أخطاء ناقل I²C وإصلاحها ، يُعد فحص إشارات الأجهزة أمرًا بالغ الأهمية. تُعتبر محللات المنطق أدواتٍ تجمع الإشارات وتحللها وتفك تشفيرها وتخزنها، مما يتيح للمستخدمين عرض أشكال الموجات عالية السرعة بسهولة. تعرض محللات المنطق الطوابع الزمنية لكل تغيير في مستوى الإشارة، مما يُساعد في تحديد مشكلات البروتوكول. تتمتع معظم محللات المنطق بالقدرة على فك تشفير إشارات الناقل إلى بيانات بروتوكول عالية المستوى وعرض بيانات ASCII.

توجد في العديد من الوحدات الجاهزة للاستخدام بعض الموصلات الرئيسية ومواقع توصيل الدبابيس: [ 30 ]

  • Qwiic : تم طرحه بواسطة Sparkfun في عام 2017، ويستخدم موصلات JST SH ذات 4 دبابيس 1.0 مم [ 31 ]
    • الدبوس: GND، Vcc (3.3V)، SDA، SCL
  • STEMMA QT : تم طرحها من قبل Adafruit في عام 2018، وهي ليست بالضرورة متوافقة مع Qwiic [ 32 ] ، وذلك لأنها تسمح بنطاق جهد أوسع (3 فولت - 5 فولت)؛ حجم لوحة الجهاز موحد
    • مخطط التوصيل: GND، Vcc (3 فولت - 5 فولت)، SDA، SCL
  • STEMMA : من إنتاج Adafruit، يستخدم موصلات JST PH 2.0mm ذات 4 دبابيس (الموصلات ذات 3 دبابيس مخصصة للاستخدام التناظري / PWM) [ 33 ]
    • مخطط التوصيل: GND، Vcc (3 فولت - 5 فولت)، SDA، SCL
  • Grove : من Seeed Studio ، يستخدم موصلات خاصة ذات 4 دبابيس 2.0 مم، والمعروفة باسم سلسلة A2005، أو 1125S-4P [ 34 ]
    • ترتيب الأطراف: GND، Vcc (3.3/5 فولت)، SDA، SCL
  • الجاذبية : من DFRobot تستخدم موصلات JST PH 2.0mm ذات 4 دبابيس ، نفس موصل STEMMA ولكن مع استخدام مختلف للدبابيس [ 35 ]
    • ترتيب الأطراف: SDA، SCL، GND، Vcc (3.3/5 فولت)
  • واجهة nodeLynk : تستخدم موصلات Molex SL 70553 ذات 4 دبابيس بقياس 2.54 مم
    • ترتيب الأطراف: SCL، SDA، Vcc (5 فولت)، GND
  • حديقة بريك آوت : من إنتاج شركة بيموروني، تستخدم موصلًا خماسي الأطراف بقطر 2.54 مم على لوحة دوائر بسمك 1.6 مم؛ ترتيب الأطراف متوافق مع رأس راسبيري باي
    • مخطط توصيل الأطراف: Vcc (من 2 فولت إلى 6 فولت)، SDA، SCL، غير مستخدم/مقاطعة، GND
  • UEXT : من إنتاج شركة Olimex، هو موصل رأس مغلف 5x2 2.54 مم، يدعم كلاً من I2C و SPI و UART
  • واجهة Pmod : من إنتاج شركة Digilent ، وهي عبارة عن موصل رأسي أحادي الخط بستة دبابيس بمسافة 2.54 مم، يُستخدم لبروتوكولات I²C و SPI وUART؛ وغالبًا ما توجد علىلوحات FPGA.
    • مخطط الدبابيس ("النوع 6"، متغير I 2 C): غير مستخدم/GPIO/مقاطعة من التابع إلى الرئيسي، غير مستخدم/GPIO/إعادة ضبط، SCL، SDA، GND، Vcc (3.3 فولت)

القيود

يُعدّ تخصيص عناوين الهدف نقطة ضعف في بروتوكول I²C، إذ لا تكفي سبعة بتات لمنع تصادم العناوين بين آلاف الأجهزة المتاحة. ويُخفف من مشكلة تصادم العناوين بين مختلف المصنّعين، كما يسمح بتوصيل عدة أجهزة متطابقة، تخصيص المصنّعين لدبابيس تُستخدم لضبط عنوان الهدف إلى أحد خيارات العناوين المتاحة لكل جهاز. عادةً ما يكون هناك دبوسان أو ثلاثة، وفي العديد من الأجهزة، يوجد ثلاثة خيارات توصيل أو أكثر لكل دبوس عنوان. [ 36 ] [ 37 ] [ 38 ]

لا تزال عناوين I²C ذات 10 بت غير شائعة الاستخدام، ولا تدعمها العديد من أنظمة تشغيل المضيف. [ 39 ] وكذلك الأمر بالنسبة لآلية SMBus ARP المعقدة لتخصيص العناوين ديناميكيًا (باستثناء بطاقات PCI المزودة بـ SMBus، والتي تتطلبها).

يُعدّ التكوين التلقائي للحافلة مشكلةً ذات صلة. قد يُستخدم عنوانٌ مُحدد من قِبل عددٍ من الأجهزة المختلفة غير المتوافقة مع البروتوكول في أنظمةٍ مُتعددة، ويكاد يكون من المستحيل اكتشاف أي نوعٍ من أنواع الأجهزة أثناء التشغيل. على سبيل المثال، 0x51قد يُستخدم عنوانٌ مُحدد من قِبل ذاكرة EEPROM من نوع 24LC02 أو 24C32، ذات عناوين غير متوافقة؛ أو من قِبل ساعة الوقت الحقيقي PCF8563 ، التي لا يُمكن تمييزها بشكلٍ موثوق عن أيٍّ منهما (دون تغيير حالة الجهاز، وهو أمرٌ قد يكون غير مسموحٍ به). آليات التكوين الموثوقة الوحيدة المُتاحة للمضيفين تتضمن آلياتٍ خارج النطاق، مثل الجداول التي يُوفرها برنامج النظام الثابت، والتي تُدرج الأجهزة المُتاحة. مرةً أخرى، يُمكن مُعالجة هذه المشكلة جزئيًا بواسطة بروتوكول ARP في أنظمة SMBus، خاصةً عند استخدام مُعرّفات البائع والمنتج، ولكن هذا لم ينتشر على نطاقٍ واسع. يُضيف الإصدار  3 من مواصفات I²C آليةً لمعرّف الجهاز.

يدعم بروتوكول I2C نطاقًا محدودًا من السرعات. الأجهزة المضيفة التي تدعم سرعات متعددة الميغابت نادرة. أما دعم سرعة Fm+ 1 ميغابت/ثانية فهو أكثر انتشارًا، نظرًا لأن مكوناته الإلكترونية عبارة عن نسخ مبسطة من تلك المستخدمة في السرعات المنخفضة. لا تدعم العديد من الأجهزة سرعة 400 كيلوبت/ثانية (ويرجع ذلك جزئيًا إلى أن بروتوكول SMBus لا يدعمها حتى الآن). قد لا تدعم عقد I2C المُنفذة برمجيًا (بدلاً من الأجهزة المخصصة) حتى سرعة 100 كيلوبت/ثانية ؛ لذا فإن النطاق الكامل المحدد في المواصفات نادرًا ما يكون قابلاً للاستخدام. يجب أن تدعم جميع الأجهزة، ولو جزئيًا، أعلى سرعة مستخدمة، وإلا فقد تكتشف عنوان الجهاز بشكل خاطئ.

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

نظرًا لأن I2C ناقل مشترك، فمن المحتمل أن يتعطل أي جهاز ويتسبب في توقف الناقل بأكمله. على سبيل المثال، إذا قام أي جهاز بخفض مستوى خط SDA أو SCL، فإنه يمنع وحدة التحكم من إرسال أوامر بدء التشغيل أو إيقاف التشغيل لإعادة ضبط الناقل. [ 40 ] لذلك، من الشائع أن تتضمن التصاميم إشارة إعادة ضبط توفر طريقة خارجية لإعادة ضبط أجهزة الناقل. مع ذلك، لا تحتوي العديد من الأجهزة على دبوس إعادة ضبط مخصص، مما يُجبر المصمم على إضافة دوائر تسمح بإعادة تشغيل الأجهزة إذا لزم إعادة ضبطها.

بسبب هذه القيود (إدارة العناوين، وتكوين ناقل البيانات، والأعطال المحتملة، والسرعة)، نادرًا ما تحتوي قطاعات ناقل I²C على أكثر من اثني عشر جهازًا. بدلًا من ذلك، من الشائع أن تحتوي الأنظمة على عدة قطاعات أصغر. قد يُخصص أحدها للاستخدام مع الأجهزة عالية السرعة لإدارة الطاقة بزمن استجابة منخفض. وقد يُستخدم قطاع آخر للتحكم في عدد قليل من الأجهزة حيث لا يُعد زمن الاستجابة والإنتاجية من الأمور المهمة؛ وقد يُستخدم قطاع ثالث فقط لقراءة رقائق EEPROM التي تصف البطاقات الإضافية (مثل معيار SPD المستخدم مع وحدات DRAM).

في الأنظمة منخفضة الطاقة للغاية، قد تستهلك مقاومات السحب طاقةً تفوق مجموع استهلاك باقي مكونات التصميم. في هذه الأنظمة، تُغذّى المقاومات عادةً بمصدر جهد قابل للتبديل، مثل وحدة الإدخال/الإخراج الرقمية (DIO) في وحدة تحكم دقيقة. كما تحدّ مقاومات السحب من سرعة ناقل البيانات، وتُضيف تكلفةً إضافيةً بسيطة. لذلك، يتجه بعض المصممين إلى استخدام نواقل بيانات تسلسلية أخرى لا تحتاج إلى مقاومات سحب، مثل I3C أو SPI .

التقنيات المشتقة

يُعدّ بروتوكول I2C أساسًا لـ ACCESS.bus ، وواجهة VESA Display Data Channel (DDC)، وناقل إدارة النظام (SMBus)، وناقل إدارة الطاقة (PMBus)، وناقل إدارة المنصة الذكية (IPMB، وهو أحد بروتوكولات IPMI ). وتختلف هذه الأنواع في نطاقات الجهد وتردد الساعة، وقد تحتوي على خطوط مقاطعة .

تستخدم أنظمة التوافر العالي ( AdvancedTCA ، MicroTCA ) بروتوكول I2C ثنائي الاتجاه مع خاصية التكرار لإدارة الرفوف. وتُعدّ إمكانية استخدام بروتوكول I2C مع وحدات تحكم متعددة شرطًا أساسيًا في هذه الأنظمة.

تُعدّ واجهة TWI (واجهة السلكين) أو TWSI (واجهة السلكين التسلسلية) ناقلًا واحدًا يُستخدم في معالجات النظام على شريحة (SoC) المختلفة من شركة Atmel وغيرها من الشركات المصنعة. [ 41 ] تستخدم الشركات المصنعة اسم TWI، على الرغم من أن I2C لم تكن علامة تجارية مسجلة حتى تاريخ 7 نوفمبر 2014. [ 42 ] تقتصر حماية العلامة التجارية على الشعار فقط (انظر الزاوية العلوية اليمنى)، وقد انتهت صلاحية براءات اختراع I2C . ووفقًا لشركة Microchip Technology ، توجد بعض الاختلافات بين TWI وI2C، منها أن TWI لا تدعم بايت البدء (START byte). [ 43 ]

في بعض الحالات، يشير استخدام مصطلح " واجهة ثنائية الأسلاك" إلى تطبيق غير مكتمل لمواصفات I²C . ومن القيود الشائعة عدم دعم التحكيم أو تمديد إشارة الساعة، وهو أمر لا يزال مفيدًا لوحدة تحكم واحدة تتواصل مع أجهزة بسيطة لا تقوم بتمديد إشارة الساعة.

معيار واجهة مستشعر MIPI I3C (I3C) هو تطوير لـ I2C ، وكان قيد التطوير في عام 2017. [ 44 ]

التعديلات

تاريخ إصدارات مواصفات I2C
سنةإصدارملحوظاتالمراجع
1980براءة اختراعفي عام 1980، تقدمت شركة "Philips Nv" بطلب للحصول على براءة اختراع في هولندا. وفي عام 1981، تقدمت شركة "US Phillips Corp" بطلب للحصول على براءة اختراع في الولايات المتحدة، والتي تم التنازل عنها لاحقًا في عام 1987 تحت رقم براءة الاختراع الأمريكية 4,689,740.[ 1 ] [ 45 ] [ 46 ]
1982إبداعيتم إنشاء نظام I2C بسرعة 100 كيلوبت/ثانية كنظام ناقل داخلي بسيط لبناء إلكترونيات التحكم باستخدام رقائق فيليبس المختلفة.غير متوفر
19921تمت إضافة وضع السرعة العالية (Fm) بسرعة 400 كيلوبت/ثانية ووضع عنونة 10 بت لزيادة السعة إلى 1008 عقدة. وكانت هذه أول نسخة موحدة.غير متوفر
19982تمت إضافة وضع السرعة العالية (Hs) بسرعة 3.4 ميجابت/ثانية مع متطلبات توفير الطاقة للجهد والتيار الكهربائيين.[ 47 ]
20002.1تم توضيح الإصدار الثاني، دون تغييرات وظيفية كبيرة.[ 48 ]
20073تمت إضافة وضع السرعة العالية 1 ميجابت/ثانية (Fm+) (باستخدام محركات 20 مللي أمبير)، وآلية تعريف الجهاز. [ 49 ]
20124تمت إضافة وضع السرعة الفائقة (UFm) بسرعة 5 ميجابت/ثانية لخطوط بيانات وزارة الزراعة الأمريكية (USDA) وخطوط الساعة (USCL) الجديدة باستخدام منطق الدفع والسحب بدون مقاومات سحب لأعلى ، كما تمت إضافة جدول معرفات الشركات المصنعة. وهو ناقل أحادي الاتجاه فقط .[ 50 ]
20125تم تصحيح الأخطاء.[ 51 ]
20146تم تصحيح رسمين بيانيين.[ 52 ]
20217تم تغيير مصطلحي " الرئيسي/التابع" إلى "المتحكم/الهدف" ليتوافقا مع مواصفات ناقل I3C . تم تحديث الجدول 5 الذي يحتوي على معرّفات الشركات المصنّعة. أُضيف القسم 9 الذي يُقدّم نظرة عامة على ناقل I3C. هذا هو المعيار الحالي.[ 3 ]

انظر أيضاً

مراجع

  1. 1 2 3 4 براءة الاختراع الهولندية رقم 8005976A ، "نظام ناقل ثنائي الأسلاك يتألف من سلك ساعة وسلك بيانات لربط عدد من المحطات"، مسجلة باسم شركة فيليبس للإلكترونيات NV. 
  2. "MCP23008" . شركة مايكروشيب . 26 مايو 2021. مؤرشف من الأصل في 26 مايو 2021.
  3. 1 2 3 4 5 6 7 " مواصفات ناقل I2C، الإصدار 7" ( ملف PDF) . شركة NXP لأشباه الموصلات . 1 أكتوبر 2021. مؤرشف من النسخة الأصلية (ملف PDF) في 6 أكتوبر 2022.
  4. 1 2 "ما هو جهاز I3C 'المتحكم'، ولماذا أُعيد تسمية جهاز I3C 'الرئيسي'؟" . تحالف MIPI . مقدمة إلى MIPI I3C . تم الاطلاع عليه في 27 أبريل 2025 .
  5. "عنونة I2C للأجهزة التابعة ذات 7 بت، و8 بت، و10 بت" . توتال فيز . مؤرشف من الأصل بتاريخ 2013-06-01 . تم الاطلاع عليه بتاريخ 2018-04-29 .
  6. "ذاكرة EEPROM تسلسلية بسعة 8 كيلوبت تعمل بناقل I²C (ملف PDF)" (ملف PDF) . شركة STMicroelectronics . أكتوبر 2017. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 18 أكتوبر 2019. تم الاطلاع عليه بتاريخ 19 نوفمبر 2019 .
  7. استخدام بروتوكولي ZONE_READ وZONE_WRITE (ملف PDF) (ملاحظة تطبيقية). الإصدار 1.0.1. منتدى واجهة إدارة النظام. 2016-01-07. AN001. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 2017-09-22.
  8. هل توجد أي إرشادات محددة لتوزيع دبابيس I2C؟ لا أبحث عن "معيار" محدد." . StackExchange.
  9. مذكرة تطبيق NXP رقم AN11075: تشغيل إشارات ناقل I2C عبر كابلات الأزواج الملتوية باستخدام PCA9605 (ملف PDF) ، 16-08-2017، مؤرشفة من الأصل (ملف PDF) بتاريخ 16-08-2017
  10. فاسكيز، جوشوا (16 أغسطس 2017)، الانتقال من اللوحة: مقدمة إلى بروتوكول I2C عبر الأسلاك الطويلة ، مؤرشف من الأصل في 16 أغسطس 2017
  11. تنسيق لوحة iPack القابلة للتكديس ، 19-08-2017، مؤرشف من الأصل في 19-08-2017
  12. فيراري، ماريو؛ فيراري، جوليو (29-04-2018). بناء الروبوتات باستخدام LEGO Mindstorms NXT . سينغريس. الصفحات 63-64 . ISBN  9780080554334تمت أرشفة النسخة الأصلية بتاريخ 29-04-2018.
  13. غاسبيري، مايكل؛ هوربين، فيليب (2010)، "الفصل 13: اتصال ناقل I2C" ، إكستريم إن إكس تي: توسيع ليغو مايندستورمز إن إكس تي إلى المستوى التالي ، ISBN 9781430224549
  14. فيلو. "قابس موصل NXT" مؤرشف في 20 أغسطس 2017 في آلة Wayback
  15. سيفان توليدو. "واجهة I2C الجزء 1: إضافة منافذ الإدخال/الإخراج الرقمية" مؤرشف في 12 أغسطس 2017 على موقع Wayback Machine . 2006
  16. "إرسال بروتوكول I2C بشكل موثوق عبر كابلات Cat5" مؤرشف بتاريخ 18 أغسطس 2017 في أرشيف الإنترنت
  17. "موصلات وكابلات ناقل I2C" مؤرشفة بتاريخ 18 أغسطس 2017 في أرشيف الإنترنت
  18. "حافلات I2C متعددة · Testato/SoftwareWire Wiki" . GitHub .
  19. "مشاركة ناقل I2C | مايكروشيب" .
  20. " جدول تخصيص عناوين I2C" ( ملف PDF) (دليل الاختيار). شركة فيليبس لأشباه الموصلات . 24 أغسطس 1999. مؤرشف من النسخة الأصلية (PDF) بتاريخ 16 أكتوبر 2017. تم الاطلاع عليه بتاريخ 1 أكتوبر 2017 .
  21. دليل بيانات IC12: الأجهزة الطرفية I2C، رمز طلب فيليبس 9397 750 00306
  22. "مواصفات ناقل إدارة النظام (SMBus)" (ملف PDF) . الإصدار 3.0. منتدى واجهة إدارة النظام. 2014-12-20. الصفحات 81-82 . مؤرشف (ملف PDF) من الأصل بتاريخ 2016-01-29 . تم الاطلاع عليه بتاريخ 2017-12-01 . 
  23. 1 2 "معيار واجهة أوامر قناة بيانات العرض (DDC/CI) من VESA" (ملف PDF) . الإصدار 1.1. VESA . 29-10-2004. الصفحات 15-16 . مؤرشف (PDF) من الأصل بتاريخ 09-09-2016 . تم الاطلاع عليه بتاريخ 01-12-2017 . 
  24. "مواصفات واجهة إدارة المنصة الذكية، الجيل الثاني، الإصدار 2.0" (ملف PDF) . مراجعة الوثيقة 1.1. إنتل، إن إي سي، هيوليت-باكارد، وديل. 1 أكتوبر 2013. صفحة 563. مؤرشف (ملف PDF) من الأصل بتاريخ 27 مارس 2016. تم الاطلاع عليه بتاريخ 1 ديسمبر 2017. الجزء ذو 7 بتات من عنوان الجهاز التابع لوحدة التحكم في إدارة اللوحة الأم (BMC) هو 0010_000b 
  25. مكون i2c.resource مؤرشف بتاريخ 2011-07-24 في Wayback Machine لنظام التشغيل AmigaOS 4.x.
  26. ^ ثيو دي رادت (29/05/2015). "/sys/dev/i2c/i2c_scan.c#probe_val" . المرجع الترافقي لـ BSD الخاص بالمستخدم المتميز . أوبن بي إس دي . تم الاسترجاع 2019-03-04 .static u_int8_t probe_val[256];
  27. قسطنطين أ. مورينين (21-05-2010). "5.2. مسح ناقل I2C من خلال i2c_scan.c". مستشعرات أجهزة OpenBSD - مراقبة البيئة والتحكم في المراوح ( رسالة ماجستير في الرياضيات ). جامعة واترلو : UWSpace. hdl : 10012/5234 . معرف المستند: ab71498b6b1a60ff817b29d56997a418.
  28. مقدمة إلى HID عبر I2C
  29. "ناقل الدوائر المتكاملة (I2C) - وثائق مشروع زفير" .
  30. "حديقة حيوانات الموصلات: أنظمة I2C البيئية" . 4 مايو 2022.
  31. "Qwiic" .
  32. "نظام Qwiic Connect - الأسئلة الشائعة" . www.sparkfun.com . شركة SparkFun للإلكترونيات . تاريخ الاسترجاع: 20 ديسمبر 2024 .
  33. "ما هو STEMMA؟ | Adafruit STEMMA وSTEMMA QT | نظام التعلم Adafruit" .
  34. "مخطط توصيل دبابيس I2C (Grove من Seeed Studio)" . 22 أبريل 2024.
  35. "مخطط توصيل دبابيس I2C (من DFRobot Gravity)" . 22 أبريل 2024.
  36. يحتوي LTC4151 من شركة Linear Technology، المؤرشف بتاريخ 2017-08-09 في Wayback Machine، على دبوسين لاختيار العنوان، ويمكن ربط كل منهما بمستوى عالٍ أو منخفض أو تركه غير متصل، مما يوفر 9 عناوين مختلفة.
  37. يحتوي MAX7314 من Maxim، المؤرشف بتاريخ 2017-07-13 في Wayback Machine، على دبوس واحد لاختيار العنوان ليتم ربطه بمستوى عالٍ أو منخفض أو توصيله بـ SDA أو SCL، مما يوفر 4 عناوين مختلفة.
  38. يستخدم UCD9224 من TI، المؤرشف بتاريخ 2017-11-07 في Wayback Machine، قناتين ADC تميزان اثني عشر مستوى لكل منهما لاختيار أي عنوان صالح مكون من 7 بت.
  39. ديلفار، جان (16 أغسطس 2005). "ردًا على: [ التصحيح 4/5 ] إضافة i2c_probe_device و i2c_remove_device" . قائمة بريدية لنواة لينكس . مؤرشفة من الأصل بتاريخ 17 أغسطس 2016.
  40. آرني باهل، ستيفان ديكمان (2022)، غارب، هينو (محرران)، تحليل اضطرابات المستشعرات الناتجة عن التداخل الكهرومغناطيسي الداخلي ، الصفحات 159-165 ، doi : 10.15488/12572 ، تاريخ الاسترجاع : 2025-07-04 
  41. avr-libc: مثال باستخدام واجهة السلكين (TWI) مؤرشف في 2007-05-27 في Wayback Machine .
  42. "TESS -- خطأ" . tmsearch.uspto.gov . مؤرشف من الأصل بتاريخ 24-02-2018 . تم الاطلاع عليه بتاريخ 29-04-2018 .
  43. "ما هو TWI؟ كيفية تهيئة TWI لاتصالات I2C" (ملف PDF) . شركة مايكروشيب للتكنولوجيا. 2018.
  44. ثورنتون، سكوت (29-11-2017). "الدائرة المتكاملة المحسّنة (I3C)" . نصائح حول المتحكمات الدقيقة . مؤرشف من الأصل في 3-2-2018.
  45. ↑ براءة الاختراع الأمريكية رقم 4689740 ، "نظام ناقل ثنائي الأسلاك يتألف من سلك ساعة وسلك بيانات لربط عدد من المحطات"، الصادرة بتاريخ 25 أغسطس 1987، والمُسجلة باسم شركة فيليبس الأمريكية. 
  46. "شركة فيليبس تقاضي ثماني شركات أخرى لانتهاكها براءة اختراع ناقل I2C" . مجلة EE Times . 17 أكتوبر 2001. مؤرشف من الأصل في 2 أبريل 2021.
  47. مواصفات ناقل I 2 C الإصدار 2.0؛ شركة فيليبس لأشباه الموصلات؛ ديسمبر 1998؛ مؤرشف.
  48. مواصفات ناقل I 2 C الإصدار 2.1؛ شركة فيليبس لأشباه الموصلات؛ يناير 2000؛ مؤرشف.
  49. مواصفات ناقل I 2 C الإصدار 3؛ شركة NXP لأشباه الموصلات؛ 19 يونيو 2007؛ مؤرشف.
  50. مواصفات ناقل I 2 C الإصدار 4؛ شركة NXP لأشباه الموصلات؛ 13 فبراير 2012؛ مؤرشف.
  51. مواصفات ناقل I 2 C الإصدار 5؛ شركة NXP لأشباه الموصلات؛ 9 أكتوبر 2012؛ مؤرشف.
  52. " مواصفات ناقل I2C، الإصدار 6" ( ملف PDF) . شركة NXP لأشباه الموصلات . 4 أبريل 2014. مؤرشف من النسخة الأصلية (ملف PDF) في 26 أبريل 2021.

للمزيد من القراءة

  • هيمبي، فينسنت (2011). إتقان ناقل I2C . إليكتور إنترناشونال ميديا. ISBN 978-0-905705-98-9.(248 صفحة)
  • باريت، دومينيك (1997). ناقل I2C: من النظرية إلى التطبيق . وايلي. ISBN 978-0-471-96268-7.(314 صفحة)