فهرست مطالب

پروتکل‌های ارتباطی SPI در مقابل I2C: تفاوت‌های کلیدی

پروتکل SPI در الکترونیک چیست؟

The رابط سریال لوازم جانبی (SPI), که توسط موتورولا توسعه داده شده است، یکی از محبوب‌ترین رابط‌های ارتباطی الکترونیکی است. این رابط، تبادل داده با سرعت بالا بین میکروکنترلرها و دستگاه‌های جانبی مانند ... را تسهیل می‌کند. حسگرها, ، مبدل‌های آنالوگ به دیجیتال، LCDها و دستگاه‌های حافظه.

SPI به عنوان یک پروتکل ارتباط سریال طبقه‌بندی می‌شود زیرا داده‌ها را بیت به بیت در یک جریان پیوسته از طریق ... ارسال می‌کند. MOSI (خروجی اصلی، اسلیو ورودی) و میسو (ورود استاد، خروج برده) خطوط، که هر خط به عنوان یک کانال واحد برای انتقال داده عمل می‌کند. این رویکرد ترتیبی تضمین می‌کند که هر بیت پس از بیت قبلی، با سیگنال ساعت ارائه شده توسط دستگاه اصلی، همگام‌سازی می‌شود.

پروتکل SPI

خطوط سیگنال اصلی SPI

SPI با استفاده از معماری master-slave عمل می‌کند، که در آن دستگاه master ارتباطات را کنترل می‌کند و دستوراتی را به دستگاه‌های slave صادر می‌کند که بر اساس آن پاسخ می‌دهند. این پروتکل از چهار خط اصلی برای ارتباط استفاده می‌کند:

  • MOSI (خروجی اصلی، خروجی فرعی، ورودی): این خط، داده‌های منتقل شده از دستگاه اصلی به دستگاه‌های فرعی را حمل می‌کند. به عنوان مثال، ارتباط از یک میکروکنترلر به دستگاه‌های حسگر را تسهیل می‌کند.

  • میسو (ورود استاد، خروج برده): این خط برای انتقال داده‌ها از دستگاه Slave به دستگاه Master استفاده می‌شود، مانند داده‌های حسگر که به میکروکنترلر ارسال می‌شوند.

  • SCK (کلاک سریال): دستگاه اصلی سیگنال ساعت را روی این خط تولید می‌کند که انتقال داده بین دستگاه‌های اصلی و فرعی را همزمان می‌کند.

  • SS (انتخاب برده): این خط برای انتخاب دستگاه slave برای ارتباط استفاده می‌شود. slave توسط یک سطح ولتاژ پایین فعال می‌شود که به عنوان active low شناخته می‌شود.

اگرچه SPI به یک استاندارد بالفعل در صنعت الکترونیک تبدیل شده است، اما یک استاندارد قانونی نیست، به این معنی که فاقد مشخصات رسمی است. این انعطاف‌پذیری می‌تواند برای طراحان مفید باشد و به آنها اجازه دهد قابلیت‌های اجزای منفرد را به حداکثر برسانند. با این حال، می‌تواند اتصال بین اجزای مختلف از تولیدکنندگان مختلف را نیز پیچیده کند، زیرا تغییرات در پیاده‌سازی ممکن است منجر به مشکلات سازگاری شود.

حالت‌های انتقال SPI

CPOL: قطبیت کلاک

  • تعریفCPOL (قطبیت کلاک) به حالت بیکار خط کلاک اشاره دارد، زمانی که هیچ ارتباطی برقرار نیست.
  • عملکردCPOL سطح منطقی اولیه سیگنال کلاک را قبل از شروع یک جلسه ارتباطی تعیین می‌کند. این کنترل می‌کند که آیا خط کلاک در سطح پایین (0 ولت) بیکار بماند یا خیر. ولتاژ بالا سطح زمانی که هیچ تبادل داده‌ای وجود ندارد.

CPHA: فاز ساعت

  • تعریفCPHA (فاز کلاک) نشان می‌دهد که داده‌ها چه زمانی نمونه‌برداری می‌شوند و چه زمانی داده‌ها باید نسبت به لبه‌های کلاک پایدار باشند.
  • عملکرد: CPHA تصمیم می‌گیرد که داده‌ها در کدام لبه کلاک باید نمونه‌برداری شوند. اگر CPHA روی ۰ تنظیم شود، داده‌ها در لبه اول سیکل کلاک نمونه‌برداری می‌شوند (یا لبه بالارونده اگر CPOL صفر باشد، یا لبه پایین رونده اگر CPOL یک باشد). اگر CPHA روی ۱ تنظیم شود، داده‌ها در لبه دوم سیکل کلاک نمونه‌برداری می‌شوند (یا لبه پایین رونده اگر CPOL صفر باشد، یا لبه بالا رونده اگر CPOL یک باشد.)
زمان‌بندی SPI
زمان‌بندی SPI

حالت‌های SPI

با ترکیب تنظیمات CPOL و CPHA، چهار حالت SPI ممکن را خواهید داشت:

  • حالت ۰ (CPOL = ۰، CPHA = ۰): کلاک در حالت بیکاری در سطح پایین قرار دارد و داده‌ها در لبه‌ی بالارونده‌ی کلاک ثبت شده و در لبه‌ی پایین‌رونده منتشر می‌شوند.
  • حالت ۱ (CPOL = ۰، CPHA = ۱): کلاک در حالت بیکاری در سطح پایین قرار دارد و داده‌ها در لبه پایین رونده کلاک ثبت شده و در لبه بالا رونده منتشر می‌شوند.
  • حالت ۲ (CPOL = ۱، CPHA = ۰): کلاک در حالت بیکاری در وضعیت بالا قرار دارد و داده‌ها در لبه پایین رونده کلاک ثبت شده و در لبه بالا رونده منتشر می‌شوند.
  • حالت ۳ (CPOL = ۱، CPHA = ۱): کلاک در حالت بیکاری در وضعیت بالا (high) قرار دارد و داده‌ها در لبه‌ی بالارونده‌ی کلاک ثبت شده و در لبه‌ی پایین‌رونده منتشر می‌شوند.
حالت‌های SPI
حالت‌های SPI

نحوه کار SPI: مثالی از ارتباط

در این مثال، فرض می‌کنیم یک میکروکنترلر به عنوان Master عمل می‌کند و با دو دستگاه جانبی ارتباط برقرار می‌کند: Slave A و Slave B.

راه‌اندازی اولیه

  1. پیکربندی رابط SPI:

    • استادمیکروکنترلر به عنوان رابط اصلی SPI تنظیم شده است.
    • قطبیت کلاک (CPOL) و فاز کلاک (CPHA)این پارامترها نحوه نمونه‌برداری و قفل شدن داده‌ها را تعریف می‌کنند. برای سادگی، فرض کنید CPOL = 0 و CPHA = 0 باشد، به این معنی که داده‌ها در لبه بالارونده کلاک نمونه‌برداری می‌شوند.
    • سرعت کلاکسرعت کلاک SPI را طبق مشخصات لوازم جانبی تنظیم کنید.
  2. سیم‌ها را وصل کنید:

    • SCK (کلاک سریال): به هر دو slave متصل شوید.
    • MOSI (خروجی اصلی، اسلیو ورودی): به هر دو slave متصل شوید.
    • میسو (ورود استاد، خروج برده): به هر دو slave متصل شوید.
    • SS/CS (انتخاب اسلیو/انتخاب تراشه)برای هر Slave از خطوط جداگانه استفاده کنید (SS_A برای Slave A و SS_B برای Slave B).

ارتباط با برده A

  1. برده A را انتخاب کنید:

    • برای انتخاب Slave A، خط SS_A را در حالت Low قرار دهید. این عمل Slave A را قادر می‌سازد تا با Master ارتباط برقرار کند.
  2. انتقال داده به Slave A:

    • داده‌های MOSI: استاد، داده‌ها را بیت به بیت به اسلیو A ارسال می‌کند.
      • در هر لبه بالارونده SCK (از آنجایی که CPHA = 0 است)، دستگاه اصلی یک بیت داده را از طریق خط MOSI ارسال می‌کند.
      • Slave A داده‌های MOSI را در هر لبه‌ی بالارونده می‌خواند.
    • داده‌های MISOهمزمان، Slave A می‌تواند از طریق خط MISO داده‌ها را به Master ارسال کند.
      • استاد، داده‌های MISO را در هر لبه‌ی بالارونده‌ی SCK می‌خواند.
  3. مثال انتقال داده:

    • فرض کنید استاد بایت را به Slave A ارسال می‌کند:0xA5
      • دنباله بیت: 10100101
      • استاد هر بیت را روی خط MOSI ارسال می‌کند و همزمان از MISO می‌خواند.
    • برده A ممکن است یک بایت مانند زیر را برگرداند:0x3C
      • دنباله بیت: 00111100
  4. لغو انتخاب Slave A:

    • برای قطع ارتباط با Slave A، خط SS_A را به بالا بکشید.

انواع توپولوژی‌های SPI

۱. خطوط انتخاب مستقل Slave

پیکربندی:

  • قطعات: یک دستگاه اصلی و چندین دستگاه فرعی.
  • اتصالات:
    • خطوط مشترک: MOSI، MISO و SCK.
    • هر slave خط SS (Slave Select) مخصوص به خود را دارد که به master متصل است.

عملیات:

  • دستگاه اصلی با پایین کشیدن خط SS مربوط به هر دستگاه فرعی، ارتباط با آن را کنترل می‌کند.
  • فقط دستگاه Slave انتخاب شده فعال است و با دستگاه Master ارتباط برقرار می‌کند، در حالی که بقیه غیرفعال می‌مانند.
  • داده‌ها از طریق خطوط مشترک MOSI، MISO و SCK رد و بدل می‌شوند و دستگاه اصلی (Master) سیگنال کلاک را فراهم می‌کند.

مزایا:

  • امکان راه‌اندازی مستقل و همزمان برای هر دستگاه slave را فراهم می‌کند.
  • مدیریت و کنترل آسان هر برده به صورت جداگانه.

معایب:

  • برای هر slave به یک خط SS جداگانه نیاز دارد که پیچیدگی سیم‌کشی را افزایش می‌دهد.
  • فضای فیزیکی ممکن است با افزایش تعداد برده‌ها محدود شود.
توپولوژی انتخاب مستقل برده
توپولوژی انتخاب مستقل برده

۲. توپولوژی زنجیره‌ای دیزی

پیکربندی:

  • قطعات: یک دستگاه اصلی و چندین دستگاه فرعی که به صورت سری به هم متصل شده‌اند.
  • اتصالات:
    • خطوط مشترک: SCK و یک خط داده پیوسته (MOSI به MISO).
    • دستگاه اصلی (Master) داده‌ها را از طریق یک خط MOSI ارسال می‌کند؛ MISO هر دستگاه فرعی (slave) به MOSI دستگاه فرعی بعدی متصل می‌شود.
    • فقط یک خط SS برای کل زنجیره مورد نیاز است.

عملیات:

  • دستگاه اصلی (Master) داده‌ها را به صورت یک جریان پیوسته از طریق زنجیره ارسال می‌کند.
  • هر برده، داده‌های دریافتی خود را به برده بعدی در زنجیره منتقل می‌کند.
  • دستگاه اصلی (Master) از طریق خط MISO، داده‌ها را از آخرین دستگاه فرعی (Slave) دریافت می‌کند.
  • همه بردگان باید با تنظیمات SPI یکسانی کار کنند.

مزایا:

  • تعداد خطوط SS مورد نیاز را کاهش می‌دهد و سیم‌کشی را ساده می‌کند.
  • مناسب برای سناریوهایی که به حداقل رساندن اتصالات بسیار مهم است.

معایب:

  • افزایش تأخیر داده به دلیل عبور متوالی داده‌ها از طریق هر slave.
  • مدیریت داده‌های پیچیده‌تر، زیرا هر slave باید داده‌ها را به درستی مدیریت و ارسال کند.
  • بروز مشکل در یکی از Slaveها می‌تواند بر ارتباط در سراسر زنجیره تأثیر بگذارد.
توپولوژی زنجیره دیزی
توپولوژی زنجیره دیزی

پروتکل I²C در الکترونیک چیست؟

پروتکل I2C

I²C یک پروتکل ارتباط سریال است که معمولاً برای ارتباط بین تراشه‌ها در فواصل کوتاه، معمولاً بین میکروکنترلرها و دستگاه‌های جانبی، استفاده می‌شود. این پروتکل در دهه ۱۹۸۰ توسط فیلیپس اختراع شد و برای فعال کردن ارتباط کم‌سرعت و کم‌هزینه با استفاده از تنها دو سیم طراحی شده است. این سیم‌ها از حالت ارتباط نیمه‌دوطرفه پشتیبانی می‌کنند و به داده‌ها اجازه می‌دهند در هر دو جهت بین دستگاه اصلی و فرعی، اما فقط در یک جهت در هر زمان، حرکت کنند.

خطوط سیگنال I²C

  1. SDA (خط داده سریال)

    • عملکردخط SDA برای انتقال داده بین دستگاه‌های روی گذرگاه I²C استفاده می‌شود. این خط دو طرفه است، به این معنی که می‌تواند توسط دستگاه‌های اصلی و فرعی برای ارسال و دریافت داده استفاده شود.
    • عملیاتداده روی خط SDA زمانی معتبر است که خط SCL (کلاک) در وضعیت high باشد. برای اطمینان از انتقال صحیح داده، خط باید در طول دوره‌های high کلاک پایدار نگه داشته شود.
    • ساختارخط SDA یک اتصال درین باز یا کلکتور باز است، به این معنی که می‌تواند توسط هر دستگاهی روی باس به حالت پایین کشیده شود اما برای بازگشت به حالت بالا به یک مقاومت بالاکش نیاز دارد.
  2. SCL (خط ساعت سریال)

    • عملکردخط SCL برای همگام‌سازی انتقال داده بین دستگاه‌ها استفاده می‌شود. این خط سیگنال کلاک را فراهم می‌کند که زمان ارسال داده‌ها از طریق خط SDA را تنظیم می‌کند.
    • عملیاتدستگاه اصلی (Master) سیگنال کلاک را روی خط SCL تولید می‌کند. هر دو دستگاه اصلی و فرعی از این کلاک برای زمان‌بندی انتقال داده استفاده می‌کنند و تضمین می‌کنند که همه دستگاه‌ها داده‌ها را به صورت همگام می‌خوانند و می‌نویسند.
    • ساختارمانند خط SDA، خط SCL نیز از نوع درین باز/کلکتور باز است و برای حفظ حالت بالا، زمانی که به طور فعال در حالت پایین قرار ندارد، به یک مقاومت بالاکش نیاز دارد.

ویژگی‌های کلیدی I²C

  • قابلیت چند کارشناسی ارشد: چندین دستگاه اصلی می‌توانند ارتباطات را در یک گذرگاه مدیریت کنند.
  • سیم کشی ساده: فقط دو سیم مورد نیاز است که پیچیدگی و هزینه را کاهش می‌دهد.
  • آدرس‌دهیدستگاه‌ها با آدرس‌های منحصر به فرد (۷ بیتی یا ۱۰ بیتی) شناسایی می‌شوند.
  • داوری و تشخیص برخورد: هنگامی که چندین master به طور همزمان ارتباط را آغاز می‌کنند، یکپارچگی داده‌ها را تضمین می‌کند.

فرآیند انتقال داده I²C 

داده‌ها و دستورات به صورت توالی‌های ۸ بیتی (بایتی) ارسال می‌شوند. پس از هر ارسال بایتی، یک بیت تأیید (ACK) می‌آید. عدم وجود ACK می‌تواند به عنوان علامت خطا یا پایان ارسال استفاده شود.

خواندن از یک رجیستر در یک دستگاه

خواندن از یک رجیستر در یک دستگاه
خواندن از یک رجیستر در یک دستگاه
  1. شرایط شروع: استاد با ارسال شرط شروع (S) ارتباط را آغاز می‌کند.

  2. آدرس دستگاه با بیت نوشتن: مستر آدرس ۷ بیتی دستگاه اسلیو را ارسال می‌کند و به دنبال آن یک بیت نوشتن (۰) ارسال می‌کند. این نشان می‌دهد که مستر قصد دارد آدرس ثباتی را که می‌خواهد از آن بخواند، بنویسد یا مشخص کند.

  3. تأیید از طرف Slave (ACK): دستگاه پیرو، دریافت آدرس خود و قصد نوشتن را تأیید می‌کند.

  4. آدرس ثبت نام: استاد یک آدرس ۸ بیتی از رجیستر مورد نظر برای خواندن ارسال می‌کند.

  5. تأیید از طرف Slave (ACK): برده دریافت آدرس ثبت را تأیید می‌کند.

  6. شروع مکرر: به جای شرط توقف، استاد یک شرط شروع مکرر (Sr) ارسال می‌کند تا جهت ارتباط را بدون آزاد کردن گذرگاه تغییر دهد.

  7. آدرس دستگاه با بیت خواندن: دستگاه اصلی همان آدرس دستگاه فرعی را به همراه یک بیت خواندن (1) ارسال می‌کند که نشان می‌دهد اکنون مایل به خواندن داده‌ها است.

  8. تأیید از طرف Slave (ACK): برده تأیید می‌کند و آماده ارسال داده‌ها می‌شود.

  9. بایت داده از رجیستر: اسلیو (slave) داده‌های ۸ بیتی را از رجیستر مشخص شده ارسال می‌کند.

  10. عدم تایید از طرف سرور اصلی (NACK): دستگاه اصلی (Master) یک سیگنال عدم تأیید (No Confirm) برای اعلام پایان فرآیند خواندن ارسال می‌کند.

  11. شرط توقف (P): استاد یک شرط توقف برای آزاد کردن گذرگاه و پایان دادن به ارتباط ارسال می‌کند.

نوشتن در یک رجیستر در یک دستگاه

نوشتن در یک رجیستر در یک دستگاه
نوشتن در یک رجیستر در یک دستگاه
  1. شرایط شروع: استاد (Master) ارتباط را با شرط شروع (S) آغاز می‌کند.

  2. آدرس دستگاه با بیت نوشتن: دستگاه اصلی آدرس ۷ بیتی دستگاه فرعی را ارسال می‌کند و به دنبال آن یک بیت نوشتن (۰) ارسال می‌کند که نشان دهنده قصد نوشتن است.

  3. تأیید از طرف Slave (ACK): برده دریافت آدرس خود را تأیید می‌کند.

  4. آدرس ثبت نام: استاد یک آدرس ۸ بیتی از رجیستر را که داده‌ها در آن نوشته خواهند شد، ارسال می‌کند.

  5. تأیید از طرف Slave (ACK): برده دریافت آدرس ثبت را تأیید می‌کند.

  6. بایت داده برای ثبت: استاد، داده ۸ بیتی را که باید نوشته شود، به رجیستر مشخص شده ارسال می‌کند.

  7. تأیید از طرف Slave (ACK): برده دریافت داده‌ها را تأیید می‌کند.

  8. شرط توقف (P): استاد با ارسال شرط توقف، ارتباط را پایان می‌دهد و گذرگاه را آزاد می‌کند.

لایه فیزیکی I²C

چرا از خروجی‌های تخلیه باز به جای خروجی‌های فشاری-کششی استفاده کنیم؟

عملکرد خروجی فشاری-کششیدر پیکربندی خروجی پوش-پول، پین خروجی دستگاه مستقیماً خط را به ولتاژ بالا یا پایین هدایت می‌کند. وقتی ولتاژ بالا می‌شود، ترانزیستورهای داخلی به ... متصل می‌شوند. منبع تغذیه, و وقتی در حالت کم ولتاژ قرار می‌گیرند، به زمین متصل می‌شوند.

اتصال کوتاهاغلب چندین دستگاه به باس I²C متصل می‌شوند. اگر از خروجی‌های پوش-پول استفاده شود، وقتی یک دستگاه سعی می‌کند باس را در حالت بالا به VDD هدایت کند در حالی که دستگاه دیگر سعی می‌کند همزمان آن را در حالت پایین به زمین هدایت کند، می‌تواند تداخل مستقیم ایجاد شود. این خروجی‌های تداخلی منجر به یک مسیر مستقیم برای جریان از VDD از طریق خروجی یک دستگاه به خروجی دستگاه دیگر می‌شود که به زمین جریان می‌یابد و در نتیجه ... اتصال کوتاه.

تخلیه باز در مقابل فشاری-کششی
تخلیه باز در مقابل فشاری-کششی

نحوه کار تخلیه روباز

در یک سیستم تخلیه باز، پین خروجی یک دستگاه یا خط را به زمین می‌کشد، که نشان دهنده ... است. منطق '0'‘, یا آن را شناور (قطع) رها می‌کند. حالت شناور به طور طبیعی بالا نمی‌رود، بنابراین اینجاست که یک مقاومت بالاکش وارد عمل می‌شود. مقاومت بین خط ارتباطی و سطح ولتاژ بالاتر (اغلب ولتاژ منبع تغذیه) متصل می‌شود. وقتی هیچ دستگاهی خط را پایین نمی‌آورد، مقاومت ولتاژ روی خط را به ولتاژ بالاتر ‘بالا می‌کشد’ که به عنوان ... خوانده می‌شود. منطق '1'‘.

تخلیه باز کم است
تخلیه باز کم است
تخلیه باز بالا
تخلیه باز بالا

مقاومت بالاکش

مقاومت بالاکش (pull-up resistance) مقاومتی است که بین یک خط سیگنال (مانند ورودی میکروکنترلر) و یک منبع ولتاژ مثبت (معمولاً VCC) متصل می‌شود.

چرا I²C به مقاومت پول‌آپ نیاز دارد؟

در یک گذرگاه I²C، هر دستگاه می‌تواند با روشن کردن یک MOSFET و اتصال خط به زمین، خط را به حالت Low ببرد. با این حال، هنگامی که دستگاه به طور فعال خط را Low نمی‌کند، MOSFET خاموش می‌شود و یک مدار باز ایجاد می‌شود. در این حالت، بدون مقاومت Pull-up، خط شناور می‌ماند که می‌تواند به دلیل حساسیت خطوط شناور به نویز و تداخل، منجر به رفتار غیرقابل پیش‌بینی و نامنظم شود.

مقاومت بالاکش مسیری را به منبع ولتاژ مثبت (VCC یا VDD) فراهم می‌کند و تضمین می‌کند که خط در سطح منطقی بالا نگه داشته شود، زمانی که توسط هیچ دستگاهی در سطح منطقی پایین قرار نگرفته باشد. این امر یک حالت منطقی پایدار و تعریف‌شده را تضمین می‌کند و از مشکلات مرتبط با خطوط شناور جلوگیری کرده و ارتباط و عملکرد قابل اعتماد را در مدارهای دیجیتال امکان‌پذیر می‌سازد.

تحلیل مدار I²C

چرا ولتاژ پس از عبور از مقاومت پول‌آپ در مدار I²C ثابت می‌ماند؟

در نمودار مدار زیر، برای اینکه خط سیگنال در پیکربندی تخلیه باز در سطح بالایی باشد، MOSFET باید خاموش باشد. R2 نشان دهنده ورودی به دستگاه دیگر است و معمولاً مقاومت معادل بسیار بالایی دارد. هنگامی که MOSFET خاموش است، معادل یک مدار باز است، به این معنی که R1 و R2 به صورت سری قرار دارند. 3.3 ولت از طریق یک مقاومت پول آپ R1، با اتصال سری R1 و R2، به خط ارتباطی I²C (مانند SDA یا SCL) اعمال می‌شود.

محاسبه مقاومت کل:

با خاموش بودن ماسفت و باز بودن مدار، R1 و R2 به صورت سری قرار می‌گیرند و یک مقاومت کل (R_{\text{total}} \) تشکیل می‌دهند که به صورت زیر محاسبه می‌شود:

\[ R_{\text{total}} = R_1 + R_2 \]

با توجه به اینکه R2 مقدار مقاومت بسیار بالایی دارد، به طور قابل توجهی بر مقاومت کل مدار تأثیر می‌گذارد.

محاسبه جریان:

جریان \(I \) که از مدار عبور می‌کند برابر است با:

\[ I = \frac{V}{R_{\text{total}}} = \frac{3.3V}{R_1 + R_2} \]

به دلیل مقاومت بالای R2، جریان حاصل بسیار کوچک است.

محاسبه افت ولتاژ:

افت ولتاژ در R1 \( V_{R1} \) به صورت زیر محاسبه می‌شود:

\[ V_{R1} = I \ضرب R_1 \]

افت ولتاژ در R2 \(V_{R2} \)، که بیشتر افت ولتاژ به دلیل مقاومت بزرگتر آن رخ می‌دهد، برابر است با:

\[ V_{R2} = I \ضرب R_2 \]

اثرات خاموش بودن MOSFET:

با خاموش بودن ماسفت و باز بودن مدار، R1 و R2 به صورت سری قرار می‌گیرند. از آنجایی که جریان عبوری از مدار حداقل است، افت ولتاژ در R1 نیز ناچیز است. در نتیجه، تقریباً تمام ولتاژ ۳.۳ ولت تغذیه در R2 افت می‌کند.

تأثیر بر خطوط ارتباطی I²C:

نقش R1 به عنوان یک مقاومت بالاکش (pull-up) در حفظ حالت بالا (high) خطوط داده یا کلاک I²C در زمان بیکاری آنها بسیار مهم است. اگرچه R1 و R2 با MOSFET خاموش سری هستند، مقاومت بالای R2 تضمین می‌کند که افت ولتاژ در R1 حداقل باقی بماند، بنابراین ولتاژ روی خط I²C نزدیک به ولتاژ تغذیه 3.3 ولت نگه داشته می‌شود. این پیکربندی تضمین می‌کند که خط بالا می‌ماند، که برای جلوگیری از شناور شدن خط و اطمینان از ارتباط قابل اعتماد I²C ضروری است.

توزیع ولتاژ مقاومت‌های پول‌آپ

مقدار مقاومت پول‌آپ

ظرفیت انگلی

خازن انگلی بین خطوط سیگنال روی برد مدار وجود دارد، از جمله مدارهای مجتمع, ، و موارد دیگر قطعات الکترونیکی. این می‌تواند بر یکپارچگی سیگنال و زمان پاسخ مدارها تأثیر بگذارد. در مورد مقاومت‌های بالاکش، خازن پارازیتی با مقاومت یک فیلتر RC تشکیل می‌دهد و زمان‌های صعود و نزول سیگنال‌ها را تعیین می‌کند. در نظر گرفتن اندازه خازن پارازیتی برای بهینه‌سازی عملکرد مدار حیاتی است و جلوگیری از تأخیر سیگنال در فرآیند طراحی.

زمان ظهور
زمان ظهور

مقاومت‌های پول‌آپ با مقدار بالا

مزایا:

  • جریان نشتی کمیک مقاومت بالاکش با مقدار بالا، جریان عبوری را محدود می‌کند و در نتیجه مصرف توان را کاهش می‌دهد. این امر به ویژه در کاربردهای باتری‌دار یا کم‌مصرف اهمیت دارد.

معایب:

  • قابلیت رانندگی ضعیفمقاومت بالاکش، همراه با خازن پارازیتی، مدت زمان لازم برای افزایش ولتاژ خط به سطح بالا را تعیین می‌کند. مقدار مقاومت بالا منجر به افزایش ثابت زمانی RC می‌شود، به این معنی که زمان افزایش ولتاژ خط طولانی‌تر می‌شود. اگر زمان افزایش سیگنال خیلی کند باشد، ممکن است در سیکل ساعت بعدی یک مدار دیجیتال در سطح بالا تثبیت نشود و بر سرعت پاسخ و قابلیت اطمینان مدار تأثیر بگذارد.

مقاومت‌های پول‌آپ کم‌مقدار

مزایا:

  • قابلیت رانندگی قوی: مقدار مقاومت کم، ثابت زمانی شبکه RC را کاهش می‌دهد، بنابراین زمان افزایش ولتاژ خط را تسریع می‌کند. این امر برای ... بسیار مهم است. مدارهای پرسرعت زیرا تضمین می‌کند که سیگنال به سرعت و به طور پایدار به سطح بالایی برسد.

معایب:

  • جریان نشتی بالاوقتی مقدار مقاومت مقاومت پول‌آپ کم باشد، حتی وقتی دستگاه خروجی سعی می‌کند آن را به پایین‌ترین سطح برساند، همچنان اجازه عبور مقدار قابل توجهی جریان را می‌دهد. این امر منجر به افزایش مصرف کلی برق می‌شود و ممکن است باعث شود دستگاه خروجی بیش از حد گرم شود و تحت شرایط خاصی به طور بالقوه آسیب ببیند.

مقایسه دقیق SPI و I²C

SPI در مقابل I2C

تفاوت کلیدی بین SPI و I²C

مقایسه SPI در مقابل I²C
ویژگی SPI (رابط سریال لوازم جانبی) I²C (مدار مجتمع داخلی)
سرعت انتقال داده تا ۵۰ مگابیت بر ثانیه یا بیشتر استاندارد: ۱۰۰ کیلوهرتز، سریع: ۴۰۰ کیلوهرتز، حالت سریع پلاس: ۱ مگاهرتز، فوق سریع: ۵ مگاهرتز
نوع ارتباط دوبلکس کامل نیمه دوبلکس
خطوط مورد نیاز حداقل ۴ (MISO، MOSI، SCLK، SS) ۲ (SDA، SCL)
تعداد دستگاه‌ها محدود به تعداد خطوط SS تا ۱۲۷ دستگاه با آدرس‌دهی ۷ بیتی
مدیریت خطا بررسی خطای داخلی ندارد دارای ACK/NACK داخلی برای بررسی خطا
پیچیدگی پروتکل ساده به دلیل رسیدگی و داوری پیچیده‌تر است
مقیاس‌پذیری مقیاس‌پذیری محدود به دلیل وجود چندین خط SS به راحتی با آدرس‌دهی مقیاس‌پذیر است
مصرف برق به طور کلی به دلیل خطوط بیشتر و سرعت بیشتر، بالاتر است به دلیل خطوط کمتر و سرعت کمتر، قیمت پایین‌تری دارد
انعطاف‌پذیری نرخ کلاک قابل تنظیم نرخ‌های ثابت برای حالت‌های مختلف
کشش ساعت پشتیبانی نمی‌شود پشتیبانی می‌شود، اما نه توسط همه دستگاه‌ها

ملاحظات کلیدی برای انتخاب I²C یا SPI

1. سرعت انتقال داده

  • آی²سیمناسب برای کاربردهایی که سرعت انتقال داده پایین‌تر تا متوسط قابل قبول است، مانند جمع‌آوری داده‌های حسگر یا تنظیمات پیکربندی. حداکثر سرعت معمولاً از ۱۰۰ کیلوهرتز (حالت استاندارد) تا ۵ مگاهرتز (حالت فوق سریع).

  • اس پی آیایده‌آل برای برنامه‌های کاربردی با سرعت بالا، مانند پردازش داده‌های بلادرنگ یا لوازم جانبی با پهنای باند بالا. SPI می‌تواند نرخ داده را مدیریت کند. تا 50 مگابیت بر ثانیه یا بالاتر.

2. تعداد دستگاه‌ها

  • آی²سی: از چندین دستگاه روی یک گذرگاه دو سیمه، تا ۱۲۷ دستگاه با استفاده از آدرس‌دهی ۷ بیتی، پشتیبانی می‌کند. این برای برنامه‌هایی که نیاز به اتصال دستگاه‌های زیادی با حداقل سیم‌کشی دارند، عالی است.

  • اس پی آیمناسب برای سیستم‌هایی با دستگاه‌های کمتر به دلیل نیاز به خطوط SS (Slave Select) مجزا برای هر slave. دستگاه‌های بیشتر به معنای نیاز به پین‌های بیشتر است.

3. در دسترس بودن پین

  • آی²سی: نیاز دارد فقط دو پین (SDA و SCL), که آن را برای میکروکنترلرهایی با GPIO محدود مناسب می‌کند.

  • اس پی آی: نیاز دارد حداقل چهار پین (MISO، MOSI، SCLK، SS) به علاوه خطوط SS اضافی برای هر slave، که می‌تواند به سرعت پین‌های موجود را مصرف کند.

4. نوع ارتباط

  • آی²سی: ارتباط نیمه دوطرفه را ارائه می‌دهد، که در آن داده‌ها فقط می‌توانند در یک زمان ارسال یا دریافت شوند. اغلب برای پیکربندی‌های master-slave با چندین دستگاه جانبی استفاده می‌شود.

  • اس پی آی: ارتباط کاملاً دوطرفه را فراهم می‌کند و امکان ارسال و دریافت همزمان داده‌ها را فراهم می‌کند. این برای برنامه‌هایی که نیاز به جریان داده دوطرفه با توان عملیاتی بالا دارند، مفید است.

5. پیچیدگی پروتکل

  • آی²سی: به دلیل آدرس‌دهی و داوری پیچیده‌تر است، اما این پیچیدگی از ویژگی‌هایی مانند قابلیت‌های چند استادی و بررسی خطا با سیگنال‌های ACK/NACK پشتیبانی می‌کند.

  • اس پی آیپروتکل ساده‌تر با حداقل سربار و بدون طرح آدرس‌دهی. پیاده‌سازی آن ساده است اما فاقد بررسی خطای داخلی است.

6. مصرف برق

  • آی²سی: به طور کلی به دلیل تعداد خطوط کمتر و سرعت کمتر، برق کمتری مصرف می‌کند و آن را برای کاربردهای باتری‌دار مناسب می‌سازد.

  • اس پی آی: ممکن است به دلیل سرعت بالاتر و خطوط بیشتر، برق بیشتری مصرف کند، اما می‌تواند در سیستم‌های با کارایی بالا که در آن‌ها سرعت بر نگرانی‌های مربوط به برق غلبه دارد، کارآمد باشد.

7. مقیاس‌پذیری و توسعه‌پذیری

  • آی²سیبه راحتی با چندین دستگاه در یک گذرگاه، بدون نیاز به اضافه کردن اتصالات فیزیکی بیشتر فراتر از SDA و SCL، قابل مقیاس‌بندی است.

  • اس پی آیمقیاس‌پذیری می‌تواند به دلیل نیاز به خطوط SS اضافی برای هر دستگاه، چالش‌برانگیز باشد و تعداد لوازم جانبی قابل اتصال را محدود کند.

8. الزامات برنامه

  • آی²سیایده‌آل برای کاربردهایی مانند شبکه‌های حسگر، جمع‌آوری داده‌های کم‌سرعت و پیکربندی‌هایی که در آن‌ها چندین دستگاه نیاز به ارتباط با یک میکروکنترلر با حداقل سیم‌کشی دارند.

  • اس پی آی: برای کاربردهایی که نیاز به نرخ داده سریع دارند، مانند رابط‌های صوتی دیجیتال، دسترسی به حافظه فلش یا درایورهای صفحه نمایش که از تبادل سریع داده بهره‌مند می‌شوند، ترجیح داده می‌شود.

مالتی‌پلکس کردن پین

رابط‌های مالتی‌پلکس

مالتی‌پلکس پین به یک پین روی میکروکنترلر یا مدار مجتمع اجازه می‌دهد تا چندین عملکرد را انجام دهد. این رویکرد به حداکثر استفاده از پین‌های موجود، صرفه‌جویی در فضا و کاهش هزینه‌ها کمک می‌کند. 

پین‌های چند منظوره: یک پین فیزیکی می‌تواند برای اهداف مختلفی مانند ورودی/خروجی دیجیتال (GPIO)، ورودی آنالوگ یا رابط‌های ارتباطی مانند UART، SPI و I²C پیکربندی شود.

پیکربندی نرم‌افزار: عملکرد یک پین را می‌توان به صورت پویا از طریق برنامه‌نویسی نرم‌افزار تغییر داد. اکثر میکروکنترلرهای مدرن دارای رجیسترهایی هستند که به شما امکان می‌دهند عملکرد هر پین را پیکربندی کنید.

مزایا

  • صرفه‌جویی در فضا: تعداد پین‌های مورد نیاز روی یک تراشه را کاهش می‌دهد و آن را برای بسته‌های کوچک و طرح‌های فشرده مناسب می‌سازد.
  • کاهش هزینه: با کاهش نیاز به اجزای اضافی یا تراشه‌های بزرگتر، هزینه کلی سیستم را کاهش می‌دهد.
  • انعطاف‌پذیری طراحی: امکان طراحی‌های متنوع را فراهم می‌کند که می‌توانند بدون نیاز به تغییرات سخت‌افزاری با کاربردهای مختلف سازگار شوند.

کاربرد عملی مالتی‌پلکس پین

سناریو

در یک سیستم نظارت بر محیط زیست، شما باید از هر دو سنسور I²C (مانند یک) استفاده کنید. سنسور دما و رطوبت) و یک دستگاه SPI (مانند یک کارت SD برای ثبت داده‌ها) با یک میکروکنترلر که پین‌های محدودی دارد.

نحوه کار مالتی‌پلکس پین

  1. پین‌های اشتراکی: میکروکنترلر دارای پین‌هایی است که می‌توانند برای انجام چندین عملکرد پیکربندی شوند. به عنوان مثال، می‌توان از یک مجموعه پین برای ارتباطات I²C و SPI استفاده کرد.

  2. راه اندازی اولیه:

    • حالت I²C: در ابتدا، پین‌ها برای ارتباط I²C تنظیم شده‌اند. میکروکنترلر از این پین‌ها برای خواندن داده‌ها از سنسور I²C استفاده می‌کند.
  3. انتقال به SPI:

    • وقتی زمان ثبت داده‌های حسگر فرا می‌رسد، میکروکنترلر پیکربندی پین‌ها را تغییر می‌دهد تا آنها را به حالت SPI تغییر دهد.
    • این به میکروکنترلر اجازه می‌دهد تا با استفاده از همان پین‌های فیزیکی با کارت SD ارتباط برقرار کند، اما اکنون عملکرد متفاوتی را انجام می‌دهد.
  4. سوئیچینگ پویا:

    • میکروکنترلر می‌تواند در صورت نیاز بین حالت‌های I²C و SPI سوئیچ کند و امکان استفاده کارآمد از پین‌های موجود را فراهم کند.
    • این انعطاف‌پذیری به سیستم اجازه می‌دهد تا داده‌های حسگر را جمع‌آوری کرده و با استفاده از حداقل منابع سخت‌افزاری، آنها را ثبت کند.

نتیجه‌گیری

انتخاب بین I²C و SPI به عوامل مختلفی از جمله تعداد دستگاه‌ها، الزامات سرعت داده و پیچیدگی بستگی دارد. I²C به دلیل سادگی و پیکربندی دو سیمه، برای پروژه‌هایی با چندین دستگاه در یک گذرگاه واحد ایده‌آل است. این پروتکل برای کاربردهای کم‌سرعت که در آن‌ها به حداقل رساندن سیم‌کشی بسیار مهم است، به خوبی کار می‌کند. SPI برای انتقال داده با سرعت بالا ترجیح داده می‌شود و برای کاربردهایی که نیاز به ارتباط سریع دارند، مناسب است. به دلیل ماهیت کاملاً دوطرفه، توان عملیاتی بهتری ارائه می‌دهد، اما به سیم‌های بیشتری نیاز دارد که می‌تواند پیچیدگی را افزایش دهد.

سوالات متداول در مورد SPI و I2C

بله، چندین جایگزین برای I2C و SPI وجود دارد که هر کدام مزایا و موارد استفاده خاص خود را دارند. UART (گیرنده-فرستنده ناهمزمان جهانی) یک جایگزین رایج است که برای ارتباط سریال، به ویژه در اتصالات نقطه به نقطه، استفاده می‌شود. این روش ساده است و نیازی به خط ساعت ندارد. جایگزین دیگر CAN (شبکه ناحیه کنترل کننده) است که به طور گسترده در ... استفاده می‌شود. خودرو و کاربردهای صنعتی برای ارتباط قوی و قابل اعتماد در فواصل طولانی‌تر. برای ارتباط بی‌سیم, ، پروتکل‌هایی مانند بلوتوث و Wi-Fi را می‌توان بسته به نیازهای برنامه در نظر گرفت.

انتخاب بین I2C و SPI به عوامل مختلفی از جمله تعداد دستگاه‌ها، الزامات سرعت داده و پیچیدگی بستگی دارد. I2C به دلیل سادگی و پیکربندی دو سیمه برای پروژه‌هایی با چندین دستگاه در یک گذرگاه واحد ایده‌آل است. این پروتکل برای کاربردهای کم‌سرعت که به حداقل رساندن سیم‌کشی بسیار مهم است، به خوبی کار می‌کند. SPI برای انتقال داده با سرعت بالا ترجیح داده می‌شود و برای کاربردهایی که نیاز به ارتباط سریع دارند مناسب است. به دلیل ماهیت کاملاً دوطرفه خود، توان عملیاتی بهتری ارائه می‌دهد اما به سیم‌های بیشتری نیاز دارد که می‌تواند پیچیدگی را افزایش دهد. برای تصمیم‌گیری آگاهانه، الزامات پروژه خود مانند سرعت، فاصله و تعداد دستگاه‌ها را در نظر بگیرید.

بله، بسیاری از میکروکنترلرهای مدرن از هر دو پروتکل I2C و SPI پشتیبانی می‌کنند. شما می‌توانید از هر دو پروتکل روی یک میکروکنترلر واحد استفاده کنید تا از نقاط قوت هر پروتکل برای اجزای مختلف در یک سیستم بهره ببرید. به عنوان مثال، می‌توانید از I2C برای ارتباط با حسگرهایی که به پهنای باند کمتری نیاز دارند و از SPI برای دستگاه‌هایی مانند نمایشگرها یا حافظه‌هایی که به نرخ داده بالاتری نیاز دارند، استفاده کنید. استفاده از هر دو پروتکل امکان انعطاف‌پذیری بیشتر و عملکرد بهینه را فراهم می‌کند. سیستم‌های تعبیه‌شده.

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

سرعت کلاک در هر دو ارتباط I2C و SPI بسیار مهم است زیرا نرخ انتقال داده‌ها بین دستگاه‌ها را تعیین می‌کند. در I2C، سرعت کلاک بالاتر می‌تواند منجر به افزایش نویز و کاهش قابلیت اطمینان، به ویژه در فواصل طولانی‌تر، شود. انتخاب سرعت کلاک که تعادل بین سرعت و قابلیت اطمینان را برقرار کند، مهم است. در SPI، سرعت کلاک بر توان عملیاتی تأثیر می‌گذارد؛ با این حال، سرعت‌های بالاتر می‌توانند منجر به مشکلات یکپارچگی سیگنال شوند. انتخاب سرعت کلاک مناسب شامل در نظر گرفتن مشخصات هر دو دستگاه اصلی و فرعی برای اطمینان از ارتباط پایدار است.

دریافت قیمت

وبلاگ‌های مرتبط