جهاز عطله سحب منخفض مع الرجوع للصفر، وبعدين تكرار، وبعدين لوب. ده شكل معروف من أشكال أعطال I2C. طب إزاي تعرف أنهي IC على الخط هو اللي بايظ؟ أو إن المعالج نفسه مش قادر يتكلم؟ تعالى نمشيها عمليًا على بوردة iPhone 6 Plus.
يعني إيه I2C Address Map؟
I2C لغة بين المعالج والـ IC هات، المعالج فيها هو السيد والباقي عبيد، وكل IC له عنوان. ولو كتبت I2C في بحث المخطط، هتلاقي في مخططات أبل جدول اسمه I2C Address Map، يعني خريطة العناوين: كام خط عندك وكل خط عليه مين.
| الجهاز على I2C0 | العنوان | هو إيه |
|---|---|---|
| ADI PMU | 0x74 | IC الباور الأساسي |
| LM3534 BL Driver #1 | 0x63 | IC الإضاءة |
| Tristar | 0x1A | IC الـ USB |
| Chestnut | 0x27 | IC باور الشاشة |
تبدأ من أنهي خط I2C؟
ابدأ دايمًا من الخط المتوصل مع IC الباور. الخطوط بتطلع بترتيب الإقلاع، وأولها خط IC الباور. خد بالك، ممكن تلاقي جهاز I2C0 فيه مش متوصل بالباور، والخط الأساسي I2C1. الرقم مش مهم، المهم مين عليه.
إزاي تحدد نقط القياس على البوردة؟
- ابحث عن I2C0 في المخطط، هتلاقي I2C0_SCL وI2C0_SDA في صفحة المعالج.
- هتلاقيهم متوصلين بمقاومات Pull-Up واخدة من 1.8 فولت، وهنا R0302 وR0303 بقيمة 2.2 كيلو أوم.
- دوس مرتين على المسار تلاقي اسم نقطة الـ Probe، زي PP0301 وPP0302.
- لو مفيش نقطة، الحم على طرف مقاومة Pull-Up اللي على الإشارة مش اللي على 1.8 فولت.
- النقط عليها عزل، اخربشه والحم سلكين وطلع القياس برة البوردة عشان ما تلمسش الأرضي.

إزاي توصل جهاز فحص I2C؟
الجهاز له طرف أصفر SDA وطرف أحمر SCL، وأي طرف منهم في الخانة التالتة يشتغل أوسيلوسكوب. ووحد الأرضي بين الجهاز والبوردة. وصل الجهاز بالكمبيوتر واختار رقم الـ COM بتاعه.

شغل البوردة من الباور سبلاي، لأن الشاحن من غير بطارية هيعمل لوب وانت عايز عملية مستقرة. وخلي السلكين بعيد عن بعض، لأنك لو وصلتهم مع بعض عملت قفلة بين المسارين.
إزاي تقرا النتيجة؟
في خانة Slave Detector الجهاز بيدور على العبيد. هنا طلع 4 عناوين: 0x1A و0x27 و0x63 و0x74. ارجع للجدول، لو كلهم موجودين يبقى كله رد. لو عنوان ناقص، ده اللي عامل المشكلة.
بس هل المعالج بيتكلم؟ ده في خانة Generic I2C Decoder. تلاقي سطور بالشكل ده: S 74 R + 04+ 38+ 02+. والمفتاح:
| الرمز | معناه |
|---|---|
| S | Start، بداية الكلام |
| P | Stop، نهاية الكلام |
| R / W | Read قراءة / Write كتابة |
| + | ACK، يعني معروف ووصل |
| - | NACK، يعني مش معروف |

الأرقام اللي بعد العنوان قطاعات Register جوه IC الباور، وكل قطاع مسؤول عن جهد أو وظيفة. ومش كل NACK عطل، ممكن المعالج يبعت أمر جديد بعده. أما لو لقيت 74، 74، 74 تحت بعض بس، يبقى الـ IC رد بعنوانه ومش بيرد بكلامه، وده اللعب فيه.
ليه بعض الـ IC هات ما بتردش وهي سليمة؟
- وظايف ما بتردش غير لما تشتغل: الكاميرات والسبيكر والفيبريشن.
- IC الإضاءة وباور الشاشة كلامهم في أول الإقلاع، ولما يعرف إن الشاشة مش متركبة يقل كلامه.
- الجهاز في Sleep بيكلم IC الباور بس، فلازم تدوس باور عشان تصحي الباقي.
- فيه حساسات المعالج محتاج بياناتها في أول التشغيل، إنما الـ Proximity بيتكلم معاه بعد ما الجهاز يقلع.
لو ما عندكش جهاز فحص I2C تعمل إيه؟
قيس الممانعة على مقاومات Pull-Up من ناحية خطوط الإشارة، وقارن ببوردة سليمة. لو أعلى أو أقل من المطلوب يبقى فيه IC على الخط بايظ. أنهي واحد؟ مش هتعرف، هتستبعدهم واحد ورا التاني. وقيس كمان قيمة المقاومة نفسها بالأوم. وخد بالك إن مقاومة Pull-Up عالية بالكيلو أوم، فالتيار اللي بيعدي منها ضعيف جدًا، وأي IC ماسك الخط ممكن يخلل باقي الـ IC هات اللي معاه على نفس الأوتوبيس.
في أندرويد الموضوع أتعب شوية، لأن مفيش جدول دايمًا، فهتمشي ورا المسار بنفسك وتجمع عناوين الـ IC هات. بس الترتيب نفسه: العناوين الأول، وبعدها الكلام.
