پروتکل ارتباطی I3C و تفاوت آن با I2C
به تازگی پروتکل I3C معرفی شده و به مرور در آینده شاهد جاگزین شدن این پروتکل به جای نسخه قدیمی I2C خواهیم بود. در این مقاله نسخه جدید با نسخه قدیم مقایسه شده و نگاهی ریزتر به مزیت های I3C خواهیم داشت.
پس بیایید به دنیای جذاب ارتباط سریال I3C برویم و مقایسهای بین آن و نسل قبلیاش، I2C، انجام دهیم.
I2C (Inter-Integrated Circuit)
I2C یا (Inter-Integrated Circuit)، از زمان تأسیسش در دهه 1980 توسط شرکت Philips Semiconductor، به عنوان یک استاندارد غیررسمی در صنعت سیستمهای تعبیهشده شناخته شد.سالها بعد اینتل پروتکل SMBus را به عنوان I2C تعریف کرد.
I2C بهترین ویژگی های SPI و UART را با هم ترکیب می کند. با استفاده از I2C می توانید چندین Slave را به یک Master واحد متصل کنید (مانند SPI) و همچنین می توانید چندین Master را کنترل کنید که یک یا چند Slave را کنترل کنند. این امر درصورتی مفید است که می خواهید بیش از یک میکروکنترلر در پروژه خود استفاده کنید.
این پروتکل با کاهش تعداد سیمهای مورد نیاز برای اتصال دستگاهها در یک برد، به سادگی دستگاههای متصل شده را به دو خط فقط محدود میکند: یک خط SDA (خط دادههای سریال) و یک خط SCL (خط ساعت سریال).
خط SDA برای انتقال دادهها استفاده میشود، در حالی که خط SCL ارتباط بین دستگاههای اصلی و زیرمجموعهها را هماهنگ میکند.سادگی I2C باعث شد تا طراحیهای انواع بردها کوچکتر و قابل حملتری ایجاد شود.
مزایا ارتباط I2C:
- فقط از دو سیم استفاده می کند.
- پشتیبانی از چندین Master و چندین Slave
- بیت ACK / NACK تأیید می کند که هر فریم با موفقیت منتقل می شود.
- سخت افزار نسبت به UART پیچیدگی کمتری دارد.
معایب ارتباط سریال I2C:
- سرعت انتقال اطلاعات کندتر از SPI است
- اندازه فریم داده به 8 بیت محدود می شود
- سخت افزار پیچیده تری نسبت به SPI برای اجرا نیاز است.
I3C (Improved Inter-Integrated Circuit)
I3C با نام های MIPI I3C و SenseWire نیز شناخته می شود، توسط MIPI Alliance در سال 2016 معرفی شد و بر پایهی I2C ساخته شده است. این پروتکل ویژگیهای خطوط دوتایی I2C را حفظ میکند، اما در سایر زمینههایی که این پروتکل کمبود داشته، بهبود میبخشد.زیرا انتقال داده با سرعت بالا را در سطوح توان بسیار پایین فراهم می کند و در عین حال اجازه می دهد ارتباط مولتی دراپ بین پردازنده میزبان و تجهیزات جانبی وجود داشته باشد که برای هر سیستم تعبیه شده بسیار مطلوب است.
I2C VS I3C ( بهبودهای کلیدی ):
سرعت بالاتر: I3C قادر به ارسال دادهها با سرعتهای بالاتری نسبت به I2C است.
I2C از نظر سرعت به صورت زیر عمل میکند:
- حالت استاندارد: 100 کیلوهرتز
- حالت سریع: 400 کیلوهرتز
- حالت سریع پلاس: 1 مگاهرتز
- حالت سرعت بالا: 3.4 مگاهرتز
- حالت اولترا فست: 5 مگاهرتز
نرخ سرعت استاندارد دادهها 12.5 مگاهرتز در I3C: به عنوان مثال، نسخههای جدید I3C سرعتهای تا 100 مگابیت بر ثانیه را پشتیبانی میکنند.
کارآیی انرژی: I3C با مصرف کمتر انرژی، بیشتر انجام میدهد.
سازگاری بازگشتی: I3C سازگاری با I2C را حفظ میکند، همچنین تضمین میکند که انتقال برای دستگاههای موجود بدون مشکل انجام شود.
- طراحی صرفه جویی در انرژی و صرفه جویی در فضا برای دستگاه های تلفن همراه (تلفن های هوشمند و دستگاه های اینترنت اشیا).
- رابط دو قطبی که یک ابر مجموعه استاندارد I2C است. دستگاه های قدیمی I2C Slave را می توان به BUS جدیدتر متصل کرد.
- سرعت داده استاندارد (SDR) تا 12.5 مگابیت در ثانیه هنگام استفاده از سطوح ورودی / خروجی CMOS
- حالتهای HDR (نرخ داده بالا) توان عملیاتی قابل مقایسه با SPI را ارائه میکنند، اما تنها به کسری از عملکرد حالت سریع I2C نیاز دارند.
- I3C دارای مجموعه ای استاندارد از کدهای دستوری رایج (CCC) است.
سه نوع کد دستوری رایج وجود دارد: دستورات پخش، دستورات هدایت شده و خصوصی.
دستورات Broadcast مانند یک Master هستند که CCC را برای همه Slave ها ارسال می کند تا برای همه Slave های موجود در گذرگاه I3C یک مقدار ثبات را تنظیم کنند.
دستورات هدایت شده مانند یک Master هستند که CCC را به Slave خاص می فرستد تا رجیستر را از Slave بخواند/بنویسد.
- I3C از وقفه درون باند (IBI) در گذرگاه I3C پشتیبانی می کند. بنابراین نیازی به پین های جداگانه نیست.
- پشتیبانی از صف های فرمان
- تشخیص و بازیابی خطا (بررسی برابری در حالت SDR و CRC پنج بیتی برای حالتهای HDR)
- تخصیص آدرس پویا (DAA) برای بردهای I3C، اما همچنان از آدرس های ثابت برای دستگاه های قدیمی I2C پشتیبانی می کند.
- Hot-join (برخی از دستگاه های bus را می توان در حین کار روشن و خاموش کرد)
- چهار کلاس مختلف دستگاه را می توان در یک گذرگاه I3C در حالت استاندارد (SDR) پشتیبانی کرد.
به طور خلاصه، I3C نسبت به I2C سرعت بالاتر، مصرف کمتر انرژی، و قابلیت پشتیبانی از سرعتهای بیشتر را دارد.
پروتکل جالبی بود که تا حالا ندیده بودم
سلام
بسیار عالی