۰

پروتکل I2C چیست ؟

بازدید 625

پروتکل I2C چیست قسمت سوم

قبلا در مورد پروتکل های UART و SPI توضیح دادیم قبل از ادامه این مقاله حتما این دو مقاله را بخوانید. 

در ادامه به بررسی پروتکل I2C می پردازیم.

پروتکل I2C

این پروتکل در واقع تمام مزیت های پروتکل UART , SPI را در کنار هم دارد و در بسیاری از پروژه های الکترونیک و برد موبایل کاربرد دارد.

پروتکل I2C از پروتکل SPI امکان اتصال چند slave به یک master و حتی  استفاده از چند master برای کنترل یک یا چند slave وجود دارد.و همچنین مانند روش UART در I2C نیز از دو سیم برای انتقال اطلاعات استفاده می شود.

از این پروتکل برای ارتباط با انواع ماژول ها و سنسور ها ، ژیروسکوپ ، و حتی صفحه نمایش از این پروتکل استفاده می شود.

پروتکل I2C (the inter-integrated circuit) امکان اتصال چند slave به یک master (مثل SPI) و یا استفاده از چند master برای کنترل یک یا چند slave وجود دارد.

این ویژگی زمانی که شما می خواهید از چند میکروکنترلر مثل AVR ARM ,.. برای ارسال داده به یک کارت حافظه و یا نمایش بر روی صفحه نمایش استفاده کنید، بسیار مناسب است.

 

در برد موبایل از پروتکل I2C برای ارتباط بسیاری از آی سی ها و قطعات با یکدیگر استفاده می شود.مثلا برای ارتباط IC CODEC با CPU، ارتباط دوربین با CPU ,… استفاده می شود.

 

برای تعمیر موبایل و طراحی برد های الکترونیکی آشنایی با این پروتکل و مسیر های آن و نحوه عملکرد I2C الزامی است.

در ادامه به بررسی نحوه عملکرد این پروتکل ارتباطی میپردازیم.

معرفی مسیرهای پروتکل I2C

همانطور که گفتیم یکی از مزیت های I2C ارتباط با دو سیم است که در دو مسیر SDA , SCL ارتباط برقرار می شود.

SDA (Serial Data) =  خطی برای ارسال و دریافت داده بین master و slave

SCL (Serial Clock) =  خطی که حامل سیگنال CLOCK می باشد.

ارتباط در I2C به صورت سریال می باشد. بنابراین دیتا به صورت بیت به بیت و به نوبت در مسیر SDA انتقال می یابد.

در پروتکل I2C همانند پروتکل SPI دیتا در هر CLOCK به صورت بیت به بیت انتقال می یابد و سیگنال CLOCK توسط MASTER کنترل می شود.

نحوه عملکرد پروتکل I2C

در I2C دیتاها به صورت پیام هایی فرستاده شده و پیام ها نیز خود به چند بخش تقسیم می شوند. هر پیام شامل یک بخش آدرس بوده، که همان آدرس باینری مربوط به slave  است. یک یا دو بخش مربوط به دیتا نیز در پیام های ارسالی وجود دارد. پیام همچنین شامل شرایط اولیه و پایانی، بیت های read/write و بیت های ACK / NACK بین هربخش از پیام می شود.

در شکل زیر یک بسته پیام را مشاهده میکنید.

شرایط شروع START CONDITION : تغییر خط SDA از حالت (1)high به حالت (0)low، و تغییر خط SCL به همین صورت.

شرایط پایان STOP CONDITION : تغییر خط SDA از حالت (0)low به حالت (1)high، و تغییر خط SCL به همین صورت.

فریم آدرس ADDRESS FRAME : توالی 7 یا 10 بیتی منحصر به فرد برای هر Slave که وقتی Master می خواهد با آن صحبت کند ، Slave را مشخص می کند.

بیت read / write : وجود یک بیت وقتی که داده از طرف master برای slave (ولتاژ سطح low) و بر عکس (ولتاژ سطح high) فرستاده می شود.

بیت ACK / NACK : هر بخش پیام شامل یک بیت تایید کننده / عدم تایید کننده می باشد. در صورتی که بخش آدرس پیام یا  بخش داده ی پیام به درستی دریافت شود، یک بیت ACK از طرف دستگاه دریافت کننده به فرستنده ارسال می گردد.

نحوه آدرس دادن در I2C:

I2C برخلاف SPI دارای خطی برای انتخاب slave مورد نظر نیست. بنابراین برای اینکه هرslave  تشخیص دهد که کدام دیتا برای آن ارسال شده، از روش آدرس دهی استفاده می شود. قسمت آدرس همیشه اولین بخش بعد از بیت شروع در هر پیام می باشد.

Master آدرس slave مورد نظر را برای اتصال ارسال می کند. سپس هر کدام از slave ها این آدرس را با آدرس خود مقایسه می کند. در صورت همخوانی آدرس، یک بیت سطح پایین ACK برای master فرستاده می شود.

در صورتی که آدرس هم خوانی نداشته باشد، اتفاقی نیافتاده و خط SDA در وضعیت high باقی می ماند.

بیت read / write :

بخش آدرس در انتهای خود شامل یک بیت بوده که به slave اطلاع می دهد، که master قصد خواندن اطلاعات از آن و یا ارسال اطلاعات به آن را دارد.

در صورتی که master قصد ارسال اطلاعات داشته باشد، این بیت در وضعیت low و در صورتی که در قصد خواندن داشته باشد، این بیت در وضعیت high قرار میگیرد.

بخش داده:

بعد از دریافت بیت ACK توسط master از طرف slave، اولین بخش دیتا آماده ارسال می شود.

بخش دیتا شامل 8 بیت می باشد و بیت های باارزش تر (MSB)  ابتدا فرستاده می شود. این بخش ها بلافاصله با بیت ACK / NACK همراه شده تا تشخیص داده شود، که دیتا به درستی دریافت شده است.

بیت ACK قبل از اینکه دیتا بعدی ارسال گردد، باید توسط master  و یا slave دریافت شود ( بستگی دارد به اینکه کدام یک دیتا را ارسال کرده باشد).

بعد از ارسال تمامی بخش های پیام، master می تواند شرایط توقف را به slave ارسال کند تا انتقال اطلاعات متوقف شود. شرایط پایانی در واقع تغییر ولتاژ خط SDA از حالت low به high، بعد از تغییر خط SCL به همین صورت و باقی ماندن در وضعیت high می باشد.

مراحل انتقال دیتا در پروتکل I2C:

1- شرایط شروع (START CONDITION) از طرف master به تمامی slave هایی که به آن متصل هستند، ارسال می گردد. به این صورت که ابتدا خط SDA سپس خط SCL از حالت low به high تغییر می کند.

2- از طریق بیت read/write آدرس 7 یا 10 بیتی توسط master برای slave ها فرستاده می شود، تا هدف مورد نظر پیدا شود.

3- هر کدام از slave ها آدرس فرستاده شده را با آدرس خود مقایسه می کند. در صورت همخوانی آدرس، slave مورد نظر بیت ACK را از طریق قرار دادن خط SDA در حالت low برای مستر، ارسال می کند. و در صورتی که آدرس همخوانی نداشته باشد، خط SDAدر حالت high ثابت باقی می ماند.

Master -4  بسته دیتا را ارسال می کند.

5- بعد از ارسال هر کدام از بسته های دیتا، دستگاه دریافت کننده یک بیت ACK به فرستنده ارسال می کند، تا دریافت کامل دیتا را اطلاع دهد.

6- برای توقف انتقال دیتا، master شرایط توقف (STOP CONDITION) را به slave ارسال می کند، به این صورت که ابتدا خط SCL سپس خط SDA را از حالت low به حالت high تغییر می کند.

استفاده از یک master برای کنترل چند slave:

چون I2C از روش آدرس دهی استفاده می کند، امکان کنترل چند slave از طریق یک master وجود دارد.نحوه اتصال در این روش را نیز در شکل زیر مشاهده می کنید، که مقاومت های 4.7 کیلو اهم pull-up از خط های SDA و SCL به VCC متصل می شوند.

برای اطلاع از مقاومت pull-up , pull-down و دلیل استفاده از این مقاومت حتما مطلب مقاومت pull up و pull down چیست؟ را بخوانید (کلیک کنید)

 

که در شماتیک گوشی در مسیر های I2C  مقامت های PULL UP I2C را مشاهده میکیند.

همانطور که مشاهده میکنید ولتاژ VCC این مقوامت ها 1.8 ولت است و ر مسیر SCL , SDA قرار دارد.

استفاده از چند master برای کنترل چند slave:

یکی از مزیت های I2C امکان اتصال چند master به یک و یا چند slave  است.

در این حالت مشکل زمانی به وجود می آید که دو master بخواهند به طور هم زمان از یک خط SDA دیتا را ارسال و دریافت کنند.

برای حل این مشکل هر کدام از master ها قبل از ارسال پیام باید تشخیص دهند که خط SDA در حالت low قرار دارد و یا حالت high. در صورتی که خط SDA در حالت low باشد، به این معناست که گذرگاه دیتا توسط master دیگری در حال استفاده می باشد، لذا باید تا پایان ارسال دیتا منتظر ماند.

در صورتی که خط SDA در حالت high  باشد، به معنای آزاد بودن خط است و امکان ارسال دیتا وجود دارد. نحوه اتصالات در  این روش هم در شکل زیر آمده است که از خط های SDA و SCL با مقاومت 4.7 کیلو اهم pull-up به VCC متصل شده اند.

 

جمع بندی :

در تعمیرات موبایل دانستن این پروتکل ها الزامی است و می توان با روش هایی مسیر های I2C را عیب یابی کرد ولی برای عیب یابی باید با اصطلاحات و نحوه کار این پروتکل ها آشنا باشید در دوره های آموزش تعمیرات موبایل شیراز فیدار که در آموزشگاه تعمیرات موبایل شیراز فیدار برگذار میگردد تمام روش های عیب یابی مسیر های I2C را به صورت حرفه ای آموزش میدهند.برای شرکت در دوره ها به لینک آموزشگاه تعمیرات موبایل شیراز فیدار مراجعه کنید و برای مشاهده  آموزش ها و تکنیک رایگان تعمیرات موبایل به کانال یوتیوب fidarteam ، آپارات fidarteam و اینستگرام ما به آدرس fidarteam مراجعه کنید

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سوال داری کلیک کن
تماس با ما در واتساپ
گروه مشاوره آموزشگاه فیدار
برای مشاوره رایگان تو واتساپ کلیک کن