چرا پروتکل I2C ؟
برای فهمیدن دلیل استفاده از پروتکل I2C ، ابتدا آن را با دیگر گزینههای موجود مقایسه میکنیم تا تفاوتهای آن مشخص شود.
عیب پورت های سریال چیست؟
به دلیل اینکه پورتهای سریال آسنکرون هستند(سیگنال کلاکی فرستاده نمیشود)، دستگاههای استفاده کننده از آن باید از قبل بر سر یک نرخ انتقال دادهی مشخص توافق کنند. همچنین هر دو دستگاه باید کلاکهایی نزدیک به همان نرخ انتقال داشته باشند – اختلاف زیاد بین نرخهای کلاک در هر یک از دو سمت منجر به از دست رفتن داده میشود.
پورتهای سریال آسنکرون نیاز به سخت افزار اضافی دارند. – UART در هر یک از دو طرف برای پیادهسازی دقیق نرمافزاری در صورت نیاز نسبتا سخت و پیچیده است. حداقل یک بیت شروع و یک بیت پایان بخشی از هر فریم داده است، به این معنی که برای انتقال هر 8 بیت داده به زمانی معادل با انتقال 10 بیت داده نیاز است، که به شدت نرخ انتقال داده را پایین میآورد.
یک ایراد بنیادی دیگر در در پورتهای سریال آسنکرون این است که آنها به طور ذاتی برای ارتباط بین دو، و فقط دو دستگاه طراحی شدهاند. با این که اتصال چندین دستگاه به یک پورت ممکن است، تداخل در باس یا bus contention ( هنگامی که دو دستگاه همزمان میخواهند روی یک خط داده ارسال کنند) همواره یک مشکل است و باید با استفاده از سخت افزار خارجی و بسیار بااحتیاط با آن برخورد شود تا از آسیب رسیدن به دستگاههای متصل جلوگیری شود.
در آخر، نرخ تبادل داده یک مشکل است. با این که از نظر تئوری محدودیتی در ارتباطات سریال آسنکرون وجود ندارد، بیشتر دستگاههای USART تنها از مجموعهای از باود ریتهای ثابت استفاده میکنند، که بالاترین آنها معمولا حدود 230400 بیت بر ثانیه است.
عیب پروتکل 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 تنها به دو سیم نیاز دارد، مانند ارتباط سریال آسنکرون، اما این دو سیم میتوانند از 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/