انتقل إلى المحتوى

通信协议 - I2C

I2C (Inter-Integrated Circuit) هو نوع من حافلة الاتصالات المتسلسلة التي تسمح بوجود عدة مضيفين ، ولكن يمكن أن يكون هناك مضيف واحد فقط متصلاً في نفس الوقت. يتكون I2C من خطي إشارة مفتوحة ، وهو سهل التوصيل ، ويستخدم مقاومة السحب العلوية ، والمستوى النمطي هو 3.3 فولت أو 5 فولت بمنطق إيجابي. تتم عملية النقل بسرعات مختلفة ، بما في ذلك الوضع السريع (400 كيلوبت في الثانية) والوضع العادي (100 كيلوبت في الثانية) والوضع البطيء (10 كيلوبت في الثانية).

على حافلة I2C ، يتم تحديد العبد بواسطة عنوان I2C الخاص به. يمكن استخدام هذا في مضيف واحد للتحكم في عدة أجهزة عبد.

أرجل I2C

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

عنوان I2C

  • تتكون عناوين I2C من عنوان 7 بت بالإضافة إلى إشارة قراءة / كتابة بت واحدة.
  • يجب أن يكون لكل جهاز على حافلة I2C عنوان فريد ، وإذا تكررت العناوين ، فسيحدث مشكلة. يمكن برمجة عناوين I2C لبعض الأجهزة.

اتصال I2C

  • START (بدء): يقوم المضيف بسحب خط SDA إلى الأسفل عندما يكون خط SCL عاليًا للبدء.
  • STOP (إيقاف): يقوم المضيف بتحرير خط SDA (يرتفع إلى مستوى عال) عندما يكون خط SCL عاليًا للإيقاف.
  • ACK (تأكيد): يتم نقل بيانات I2C مع كل نبضة SCL ، حيث يتم نقل 1 بايت (8 بت) في كل مرة. يتم الاحتفاظ بالنبضة التاسعة من كل عملية نقل كإشارة تأكيد من العبد ، وتشير إشارة ACK في كل مرة إلى نجاح العملية السابقة.

مثال على قطاع نقل I2C

قيمة هذا القطاع هي 11001101:

  1. يقوم المضيف بسحب خط SDA إلى الأسفل لإرسال إشارة START.
  2. يتم ضبط البت الأول ، حيث يقوم المضيف بسحب خط SCL إلى الأسفل ويمرر إشارة الساعة من خلال DAC.
  3. عند الوصول إلى البت التاسع ، لن يقوم المضيف بسحب خط SDA إلى الأسفل ، وإذا قام العبد بتأكيد النقل الكامل ، فسيقوم بسحب خط SDA إلى الأسفل لإعلام المضيف.

نقل البيانات الصحيح

  1. يجب أن يظل SDA ثابتًا خلال فترة الحفاظ على مستوى عال (نقل البيانات) ليكون فعالًا.
  2. يُسمح فقط بتغيير قيمة SDA خلال فترة النبضة المنخفضة لـ SCL.
  3. عندما يكون خط SCL عاليًا ويحدث تغيير في SDA ، يتم تفسيره على أنه حدث بدء أو إعادة بدء أو إيقاف.

توقيت صعود / هبوط الدائرة الواجهة

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

  • \(t_r\) (زمن الارتفاع): هو الوقت الأقصى الذي يستغرقه الإشارة للانتقال من المستوى المنخفض إلى المستوى المرتفع. نظرًا لأن I2C هو إشارة مفتوحة ، فإن زمن الارتفاع يتوقف على مقاومة السحب العلوية وثابت الزمن RC للسعة الحافلة.
  • \(t_f\) (زمن الانخفاض): هو الوقت الأقصى الذي يستغرقه الإشارة للانتقال من المستوى المرتفع إلى المستوى المنخفض.

حساب مقاومة السحب العلوية لـ I2C

  • الحد الأدنى لمقاومة السحب العلوية: \(R_{Pull(Min)}=\frac{V_{DD}-V_{OLMAX}}{I_{SinkMax}}\)
  • الحد الأقصى لمقاومة السحب العلوية: \(R_{Pull(Max)}=\frac{t_r}{0.8473*C_b}\)

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

上拉电阻最大值会带来最长的上升时间。如果使用大于此值的上拉电阻,将会违反时序要求。

إذا كانت قيمة مقاومة السحب العلوية أكبر، فستكون فترة الارتفاع أطول. إذا تم استخدام مقاومة السحب العلوية التي تزيد عن هذه القيمة، فسيتم خرق متطلبات التوقيت.

\(V_{DD}\) تمثل جهد التغذية؛ \(V_{OLMAX}\) تمثل أقصى مستوى منخفض منطقي (قيمة نموذجية 0.4 فولت)؛ \(I_{SinkMax}\) تمثل أقصى تيار تصريف (قيمة نموذجية 3 مللي أمبير)؛ \(C_b\) تمثل سعة الخط، وتعتمد على طول وعرض توصيلات الدوائر المطبوعة (PCB) وسعة الأجهزة المتصلة بالخط.

مثال حسابي:

المراجع والشكر

عنوان النص: https://wiki-power.com/ يتم حماية هذا المقال بموجب اتفاقية CC BY-NC-SA 4.0، يُرجى ذكر المصدر عند إعادة النشر.

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