چطور دو آیسی با هم حرف میزنند؟ — انتقال دیجیتال و پروتکل I²C
در آموزش تعمیرات موبایل یکی از مهمترین مباحث، درک نحوهٔ ارتباط بین قطعات است. وقتی میگوییم «دو آیسی با هم صحبت میکنند»، منظورمان ارسال و دریافت اطلاعات بهصورت الکترونیکی و دیجیتال است. در موبایلها بیش از ۹۹ درصد انتقالهای داخلی بهصورت دیجیتال انجام میشود. این مقاله از پایه توضیح میدهد که «دیجیتال» به چه معناست، موج مربعی چیست، چرا کلاک لازم است، و چگونه پروتکلهای مثل I²C زبان صحبت کردن آیسیها را امکانپذیر میکنند. همچنین نکات شماتیک و خواندن نقشه برای تعمیرکاران موبایل را مرور میکنیم.
🌿 دیجیتال یعنی چه؟ موج مربعی و منطق صفر/یک
دیجیتال یعنی اطلاعات به صورت مجموعهای از صفر و یکها نمایش داده میشود. این صفر و یکها در دنیای سختافزار به کمک موجهای مربعی پیاده میشوند: زمانی که ولتاژ روی یک لاین بالا باشد، آن را «یک منطقی» مینامیم (معمولاً ۱.۸ ولت در مدارهای موبایل). زمانی که ولتاژ پایین باشد، آن را «صفر منطقی» مینامیم.
نکتهٔ مهم: صفر منطقی به معنای «صفر مطلق ولتاژ» نیست. یک مسیر آزاد روی برد وقتی «ولتاژ ندارد» در واقع نزدیک به صفر است اما از نویز محیط یا سطوح شناور ممکن است در حد میلیولت، ولتاژ داشته باشد. برای داشتن مرجع صفر واقعی، آن لاین را به زمین (GND) وصل میکنیم؛ اما باز هم صفر منطقی در پروتکلها صرفاً بازهای از ولتاژ است که به عنوان «صفر» درنظر گرفته میشود.
فرض کنید موج مربعی را یک ولت بالاتر میبریم؛ در این حالت مقادیری که بهعنوان «یک منطقی» و «صفر منطقی» تعریف شدهاند تغییر میکنند. بهعبارت دیگر، اگر قبلاً یک منطقی را ۱.۸ ولت در نظر گرفته باشیم، با افزایش یک ولت آن را ۲.۸ ولت حساب میکنیم؛ همینطور صفر منطقی که قبلاً ۰ ولت بود، اکنون برابر ۱ ولت محسوب میشود. بنابراین تعریف صفر و یک منطقی وابسته به سطح مرجع است. هنگام خواندن شماتیک یا عیبیابی آیسیها همیشه سطوح ولتاژ مرجع و مقدار «Logic Level» را چک کنید.
⚡ مثال: آیسی تغذیه، CPU و مسئلهٔ تعداد پایهها
فرض کنید یک آیسی تغذیه چند خروجی سوئیچینگ و چند خروجی LDO دارد. CPU میخواهد هر کدام را جداگانه فعال/غیرفعال کند و وضعیت هر بلوک را بداند. اگر برای هر کنترل و گزارش یک پایهٔ جدا روی برد گذاشته شود، تعداد پایهها و مسیرها زیاد و غیرعملی خواهد شد.
راه حل این است که یک اینترفیس داخلی در آیسی تغذیه پیادهسازی کنیم که چندین سیگنال کنترلی را در قالب یک خط سریال ارسال و دریافت کند. CPU به جای استفاده از دهها خط، از یک خط دیتا استفاده میکند. اینجاست که مفهوم پروتکل و زبان آیسی وارد میدان میشود.
CPU میتواند رشتهٔ طولانیای از بیتها ارسال کند (مثلاً: 0101001101000110011) و اینترفیس داخل آیسی تغذیه آن را تفسیر کند و دستورهای کنترلی را اجرا کند.
برای صرفهجویی در حجم و پهنای باند، فرستنده معمولاً دادهها را فشرده یا کدگذاری میکند: کدگزار (encoder) در CPU، دادهٔ طولانی را به کدی کوتاهتر تبدیل میکند (مثلاً آن را به 010 فشرده میکند) و گیرنده با مترجم (decoder) آن را بازسازی میکند.
- 
- 
شرط کارکرد صحیح: هر دو طرف باید از یک پروتکل یا همان «زبان آیسی» استفاده کنند. 
 
- 
⏱️ چرا به کلاک نیاز داریم؟ مشکل مرز بیتها
اگر فرستنده تنها موج مربعی داده را بدون مرجع زمانی ارسال کند، گیرنده نمیتواند تشخیص دهد که هر بخش از موج مربوط به کدام بیت است و کدام بخش به بیت بعدی تعلق میگیرد.
فرض کنید دیتای شما 11000011 است. اگر زمان واحد بیت مشخص نباشد، تقسیمبندی روی موج میتواند تغییر کند و دِکُد شدن اشتباه رخ دهد.
برای حل این مشکل یک موج زمانبندی ثابت لازم است: کلاک (CLK). کلاک یک موج منظم است که طول هر بیت را مشخص میکند. وقتی دیتای سریال (DATA) روی لاین موازی با کلاک ارسال میشود، گیرنده میتواند در لبههای مشخص کلاک بیتها را نمونهبرداری کند. یعنی: DATA + CLK = سریال قابل فهم.
معمولاً نامهای متداول در مدارهای موبایل برای خطوط سریال عبارتاند از SDA (Serial Data) و SCL (Serial Clock) — مخصوصاً در پروتکل I²C. در توضیحات بعدی این موارد را دقیقتر خواهیم دید.
🔗 I²C — یک پروتکل محبوب در موبایل
I²C (Inter-Integrated Circuit) یک پروتکل سریال دو سیمه است که اتصال چندین آیسی روی یک برد را ممکن میکند.
در بسیاری از طراحیهای موبایل از I²C برای ارتباط بین CPU (یا PMIC) و آیسیهای کنترلی کوچک استفاده میشود. در این پروتکل معمولاً دو خط داریم:
- SDA — خط داده (Serial Data)
- SCL — خط کلاک (Serial Clock)
چند خصوصیت کلیدی I²C که تعمیرکار موبایل باید بداند:
- Open-drain / Open-collector:
 خطوط SDA و SCL بهصورت مشترک با مقاومتهای «کشنده به بالا» (pull-up) متصلاند؛ یعنی وقتی هیچکس کاری نکند، این مقاومتها خط را به سطح منطقی 1 میبرند. آیسیها فقط میتوانند خط را به زمین بکشانند (یعنی 0 کنند)، و برای برگشتن به 1 نیازی به «فشار» ندارند — مقاومت pull-up خود خط را بالا میکشند.
- آدرسدهی:
 هر برد یا آیسی یک آدرس منطقی دارد. مستر (مثلاً CPU) با ارسال آدرس صحیح، اسلیو مورد نظر را صدا میزند.(مثلاً کد 001 برای تغذیه هست)
- ACK/NACK:
 در صورت دریافت صحیح داده، گیرنده یک تأییدیه (ACK) ارسال میکند که نشاندهنده موفقیتآمیز بودن دریافت است. اما اگر داده به صورت ناقص دریافت شده باشد یا گیرنده آماده نباشد، یک عدم تأییدیه (NACK) ارسال میشود. این پاسخ به فرستنده اعلام میکند که باید داده را مجدداً ارسال کند.
- سرعتها:
 I²C در حالتهای مختلف عمل میکند (Standard, Fast, Fast-Plus, High-Speed) که سرعت نمونهبرداری و مشخصات زمانی را تعیین میکنند — در موبایلها معمولاً حالتهای 100kHz رایجاند اما گاهی بیشتر هم استفاده میشود.
بنابراین I²C همان «زبان آیسی» است که CPU و دیگر آیسیها را قادر میسازد با یک پایهٔ دیتا و مدیریت کلاک، اطلاعات کنترلی و گزارش وضعیت را رد و بدل کنند.
🧩 نحوه انتقال داده در I²C (بایت، آدرس، ACK و فریمها)
در پروتکل I²C انتقال داده بهصورت مرحلهبهمرحله و بر پایه بایت انجام میشود. به بیان سادهتر، دادهها در قالب فریمهای مشخص ارسال و دریافت میشوند. ترتیب معمول انتقال به شکل زیر است:
- 
- ابتدا مستر ارتباط را با ارسال سیگنال START آغاز میکند (در این حالت خط SDA از سطح منطقی ۱ به ۰ تغییر میکند در حالیکه SCL در سطح بالا قرار دارد).
- مستر آدرس آیسی مقصد (اسلیو) و بیت تعیینکننده نوع عملیات (خواندن یا نوشتن – R/W) را ارسال میکند.
 
- اگر آدرس دریافتشده به اسلیو تعلق داشته باشد، اسلیو بیت تأیید (ACK) میفرستد و دریافت صحیح داده را نشان میدهد.
- در صورتیکه داده دریافت نشود یا اسلیو آماده پاسخگویی نباشد، بیت NACK ارسال میشود که بهمعنای عدم دریافت داده است.
- در ادامه، دادهها بهصورت بایتبهبایت منتقل میشوند و پس از هر بایت، سیگنال ACK یا NACK از طرف گیرنده ارسال میگردد.
- در پایان، مستر با ارسال سیگنال STOP ارتباط را خاتمه میدهد (SDA از ۰ به ۱ تغییر میکند در حالیکه SCL در سطح بالا قرار دارد).
در نقشهها و شماتیکها، هرگاه خطوط SDA و SCL را مشاهده کردید که از طریق مقاومتهای pull-up به ولتاژ مثبت متصل هستند، به احتمال زیاد با یک باس I²C روبهرو هستید. این ساختار، زبان ارتباطی میان آیسیها محسوب میشود و شناخت آن برای تعمیرکاران موبایل از اهمیت بالایی برخوردار است.
🔧 نکات عملی برای عیبیابی و شماتیکخوانی — مخصوص تعمیرکاران موبایل
۱. ترسیم مسیرها در شماتیک:
در شماتیک دنبال مقاومتهای pull-up روی SDA/SCL بگردید (معمولاً 2.2k یا 10k استفاده شود). این مقاومتها مسئول کشیدن خط به ولتاژ منطقی ۱ هستند.
۲. مشخص کردن مستر و اسلیو:
در گوشیهای موبایل معمولاً پردازنده (CPU) نقش مستر را دارد و کنترل باس I²C را بر عهده میگیرد.
سایر آیسیها مانند سنسورها، آیسی تغذیه (PMIC)، و آیسیهای کمکی معمولاً اسلیو هستند و دستورات را از مستر دریافت میکنند.
برای تشخیص این نقشها، همیشه میتوانید به دیتاشیت آیسیها و نام پینهایی مثل SDA و SCL مراجعه کنید.
۳. نویز و تغییر شکل موج سیگنال:
خطوط سریال حساس به نویز هستند. اگر SCL یا SDA با نویز مواجه شود، ACK قطع میشود و انتقال ناقص میماند. در عیبیابی با اسیلوسکوپ دنبال شکل موج منظم کلاک (SCL) و لبههای تمیز روی SDA باشید.
۴. بررسی سطوح ولتاژ:
پیش از شروع عیبیابی، با مولتیمتر یا اسیلوسکوپ سطح منطقی خطوط SDA و SCL را بررسی کنید.
اطمینان حاصل کنید که ولتاژ مقاومتهای Pull-up در محدودهٔ صحیح قرار دارد.
همچنین بررسی کنید آیا یکی از آیسیها بهصورت دائم خط را در سطح پایین نگه داشته است یا خیر — این مورد میتواند نشانهای از خرابی یا اتصال نادرست باشد.
۵. خواندن نقشه:
در نقشهخوانی به دنبال net name هایی مثل I2C_SDA یا I2C_SCL باشید. این نامها معمولاً نشاندهندهٔ خطوط زبان آیسی هستند و مسیرها و قطعات مرتبط را سریعتر پیدا میکنید.
📘 مثال سادهٔ کدگزار و مترجم — مثال «لیوان را بنداز»
🔹 مقدمه
برای درک بهتر نحوهٔ کار کدگزار و مترجم در آیسیها، تصور کنید دو نفر روبهروی هم نشستهاند. کنار یکی از آنها لیوانی قرار دارد و نفر دیگر میخواهد لیوان را بگیرد.
🔹 جزئیات حرکات
اگر بخواهیم تمام حرکات لازم برای رساندن لیوان را دقیق توضیح دهیم، مراحل را به این شکل انجام بده: ابتدا کمرت را صاف کن و آرنجت را باز کن. سپس مچت را راست بگیر و انگشتهایت را باز کن تا دور لیوان را بگیری و فشار دهی تا نیفتد. بعد دستت را بالا بیاور و به سمت داخل حرکت بده. در لحظهٔ مناسب، انگشتهایت را باز کن تا لیوان پرتاب شود.
🔹 خلاصهسازی دستور
اما در واقعیت، تمام این فرمانها در یک جملهٔ ساده خلاصه میشود: «لیوان را بنداز». مغز فرستنده این دستور طولانی را کدگذاری کرده و مغز گیرنده (دوستش) با ترجمهٔ همان کد، تمام مراحل را انجام میدهد.
🔹 ارتباط با دنیای الکترونیک
در دنیای الکترونیک هم دقیقاً همین اتفاق میافتد. مثلاً CPU میخواهد به آیسی تغذیه دستور دهد چند بلوک خاص را روشن کند و ولتاژ بقیه را تنظیم کند. اگر قرار بود این کار با دهها خط و مسیر انجام شود، مدار بسیار پیچیده میشد. به همین دلیل CPU همهٔ این فرمانها را به یک کد کوتاه تبدیل میکند و آن را از طریق پروتکل مشخص (مثل I²C) میفرستد.
🔹 فرآیند فشردهسازی و ترجمه
- CPU یک دستور طولانی مثلاً شامل ۱۰۰ بیت دارد که وضعیت چندین بلوک را مشخص میکند.
- کدگزار در CPU، دستور طولانی را فشرده میکند و سپس آن را به کدی کوتاهتر (مثلاً ۳ بیت) تبدیل میکند.
- این کد از طریق خط دیتا ارسال میشود و مترجم در آیسی تغذیه آن را دوباره باز میکند و فرمانهای اصلی را اجرا مینماید.
🔹 نکتهٔ کلیدی
نکتهٔ کلیدی این است که هر دو طرف، یعنی کدگزار در CPU و مترجم در آیسی تغذیه، باید از یک سیستم زبانی مشترک استفاده کنند. این زبان مشترک همان پروتکل یا زبان آیسیها است که پایهٔ ارتباط در تعمیرات موبایل و نقشهخوانی مدارها محسوب میشود.
✅ خلاصه و جمعبندی (برای آموزش تعمیرات موبایل)
• در موبایلها اغلب آیسیها با هم به صورت دیجیتال و سریال صحبت میکنند.
• موج مربعی و سطوح منطقی (مثلاً ۱.۸ ولت) پایهٔ کار هستند.
• بدون کلاک، مرز بیتها مشخص نمیشود؛ کلاک (SCL) زمان نمونهبرداری را تعیین میکند.
• پروتکل I²C یک زبان آیسی محبوب است که با دو خط SDA و SCL و مکانیزم ACK/ADDRESS کار میکند.
• در عیبیابی و نقشهخوانی باید به pull-up، شرایط START/STOP، و شکل موجها دقت کنید.
این مطلب بخشی از زبان آیسی است که هر تعمیرکار موبایل باید بداند و در دورههای آموزش تعمیرات موبایل مهندس مهدی روحی بارها تمرین و بررسی میشود. تعمیرکارانی که شماتیکها را میخوانند و شکل موجها را با اسیلوسکوپ بررسی میکنند، تفاوت خود را با تعمیرکاران سطحی نشان میدهند.
 
															 
								 
															






