ارتباط I2C چیست؟

saalek110

Well-Known Member
ارتباط I2C توسط Phillips Semiconductor ساخته شد و سالها بعد اینتل پروتکل SMBus را به عنوان I2C تعریف کرد. I2C بهترین ویژگی های SPI و UART را با هم ترکیب می کند. با استفاده از I2C می توانید چندین Slave به یک Master واحد متصل کنید (مانند SPI) و همچنین می توانید چندین Master را کنترل کنید که یک یا چند Slave را کنترل کنند. این امر درصورتی مفید است که می خواهید بیش از یک میکروکنترلر در پروژه خود استفاده کنید.

ارتباط I2C چیست؟ مبانی پروتکل ارتباط سریال I2C
 

saalek110

Well-Known Member
در پاسخ به این سوال که I2C چیست می توان گفت که گذرگاه مدار مجتمع (I2C) یک رابط سریال دو سیمه است که
در آن، با استفاده از یک خط داده سریال (SDA)، یک خط ساعت سریال (SCL) و یک زمین مشترک برای انتقال کلیه ارتباطات، اتصالات به حداقل می رسد.

پروتکل ارتباطی I2C از یک سلسله مراتب master/slave پیروی می کند که
در آن master به عنوان دستگاهی تعریف می شود که کلاک یا ساعت باس را راه اندازی می کند،
به slave ها آدرس می دهد و داده ها را از داخل و خارج از ثبات ها می نویسد یا می خواند.

slave ها دستگاه هایی هستند که فقط در صورت درخواست دستگاه مستر، از طریق آدرس منحصر به فرد خود پاسخ می دهند.

slave ها هرگز انتقال داده را آغاز نمی کنند.

I2C چیست؟ (در مورد گذرگاه مدار مجتمع درونی در 8 گام بخوانید)
 

saalek110

Well-Known Member

چرا پروتکل I2C ؟​

برای فهمیدن دلیل استفاده از پروتکل I2C ، ابتدا آن را با دیگر گزینه‌های موجود مقایسه می‌کنیم تا تفاوت‌های آن مشخص شود.

عیب پورت های سریال چیست؟​

پورت های سریال

به دلیل اینکه پورت‌های سریال آسنکرون هستند(سیگنال کلاکی فرستاده نمی‌شود)، دستگاه‌های استفاده کننده از آن باید از قبل بر سر یک نرخ انتقال داده‌ی مشخص توافق کنند. همچنین هر دو دستگاه باید کلاک‌هایی نزدیک به همان نرخ انتقال داشته باشند – اختلاف زیاد بین نرخ‌های کلاک در هر یک از دو سمت منجر به از دست رفتن داده می‌شود.

پورت‌های سریال آسنکرون نیاز به سخت افزار اضافی دارند. – UART در هر یک از دو طرف برای پیاده‌سازی دقیق نرم‌افزاری در صورت نیاز نسبتا سخت و پیچیده است. حداقل یک بیت شروع و یک بیت پایان بخشی از هر فریم داده است، به این معنی که برای انتقال هر 8 بیت داده به زمانی معادل با انتقال 10 بیت داده نیاز است، که به شدت نرخ انتقال داده را پایین می‌آورد.

یک ایراد بنیادی دیگر در در پورت‌های سریال آسنکرون این است که آن‌ها به طور ذاتی برای ارتباط بین دو، و فقط دو دستگاه طراحی شده‌اند. با این که اتصال چندین دستگاه به یک پورت ممکن است، تداخل در باس یا bus contention ( هنگامی که دو دستگاه همزمان می‌خواهند روی یک خط داده ارسال کنند) همواره یک مشکل است و باید با استفاده از سخت افزار خارجی و بسیار بااحتیاط با آن برخورد شود تا از آسیب رسیدن به دستگاه‌های متصل جلوگیری شود.

در آخر، نرخ تبادل داده یک مشکل است. با این که از نظر تئوری محدودیتی در ارتباطات سریال آسنکرون وجود ندارد، بیشتر دستگاه‌های USART تنها از مجموعه‌ای از باود ریت‌های ثابت استفاده می‌کنند، که بالاترین آن‌ها معمولا حدود 230400 بیت بر ثانیه است.

عیب پروتکل SPI چیست؟​

پروتکل SPI

بزرگترین ایراد SPI تعداد پایه‌های مورد نیاز است. وصل کردن فقط یک master به یک slave از طریق SPI نیاز به 4 سیم دارد؛ هر slave اضافه‌ی دیگر یک پایه I/O chip select در سمت master نیاز دارد. افزایش سریع تعداد اتصالات پایه‌ها این پروتکل را در شرایطی که تعداد زیادی دستگاه slave باید به یک master متصل شوند بی استفاده می‌کند. همچنین، تعداد زیاد اتصالات برای هر دستگاه رسم PCB های فشرده را سخت می‌کند. SPI تنها به یک master روی باس اجازه می‌دهد، اما از تعداد دلخواه slave پشتیبانی می‌کند(تنها محدود به ظرفیت دستگاه‌های متصل به باس و تعداد پایه‌های chip select موجود).

SPI برای ارتباطات full-duplex(ارسال و دریافت همزمان داده) با نرخ انتقال بالا مناسب است زیرا از سرعت‌هایی بیشتراز 10MHz(و بنابراین، 10میلیون بیت بر ثانیه) در بعضی دستگاه‌ها پشتیبانی می‌کند. سخت افزار در هر طرف معمولا یک شیفت رجیستر ساده است، که امکان پیاده سازی نرم افزاری آسان آن را فراهم می‌کند.

پروتکل I2C – بهترین های هر دو دنیا​

پروتکل I2C

پروتکل I2C تنها به دو سیم نیاز دارد، مانند ارتباط سریال آسنکرون، اما این دو سیم می‌توانند از 1008 دستگاه salve پشتیبانی کنند. همچنین، بر خلاف SPI، از یک سیستم دارای چند master نیز پشتیبانی می‌کند که به بیش از یک master اجازه می‌دهد تا با تمامی دستگاه‌های روی باس ارتباط برقرار کند(البته masterها نمی‌توانند با یکدیگر صحبت کنند و همچنین باید از خطوط باس نیز به طور نوبتی استفاده کنند).

نرخ انتقال داده در این پروتکل بین ارتباط سریال آسنکرون و SPI قرار می‌گیرد؛ بیشتر دستگاه‌های پروتکل I2C در 100تا400 کیلوهرتز کار می‌کنند. پروتکل I2C نیز مقداری اطلاعات اضافه ارسال می‌کند؛ برای هر 8بیت داده فرستاده شده، یک بیت اضافی متا داده (بیت “ACK/NACK”، که بعدا در مورد آن بحث خواهد شد) نیز باید ارسال شود.

سخت افزار موردنیاز برای اجرای I2C پیچیده تر از SPI است، اما از ارتباط سریال آسنکرون ساده تر است. این پروتکل می‌تواند به صورت نسبتا ساده در نرم افزار پیاده سازی شود.

https://melec.ir/%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84-i2c/
 

جدیدترین ارسال ها

بالا