مبانی امبدد

تفاوت I2C، SPI و UART؛ انتخاب رابط برای سنسور و ماژول

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

فهرست مطالب
عکس واقعی برد آموزشی با عنوان STM32F103 در منبع؛ پارت و نقشهٔ برد خود را جدا تطبیق دهید.
عکس واقعی برد آموزشی با عنوان STM32F103 در منبع؛ پارت و نقشهٔ برد خود را جدا تطبیق دهید. عکس: Popolon؛ منبع Wikimedia Commons؛ CC BY-SA 4.0. محتوای عکس ویرایش نشده؛ نسخهٔ نمایشی ویکی‌مدیا استفاده شده است.

پاسخ کوتاه: رابط را از روی نوع دستگاه انتخاب کنید

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

این مقایسه دربارهٔ رابط‌های منطقی روی مدار کوتاه است. UART سطح منطقی را با RS-232 یا RS-485 یکی نگیرید؛ آن‌ها به لایهٔ الکتریکی و درایور مناسب نیاز دارند. زیادکردن Baud یا Clock نیز سیم‌بندی نامناسب و اختلاف سطح را اصلاح نمی‌کند.

جدول تفاوت‌ها در حالت‌های متعارف

ویژگیI2CSPI چهار‌سیمهٔ رایجUART رایج
سیگنال‌های اصلی، به‌جز زمینSDA و SCLSCLK، MOSI، MISO و CSTX و RX
کلاک مشترکداردداردندارد؛ تنظیم دو طرف باید سازگار باشد
انتخاب گیرندهآدرس باسمعمولاً CS جدا برای هر دستگاهمعمولاً یک لینک؛ آدرس در صورت نیاز در پروتکل بالاتر
رفتار خطOpen-drain و Pull-up در حالت متعارفوابسته به مشخصات دستگاه؛ معمولاً خروجی فعالوابسته به خروجی و سطح منطقی دستگاه
نکتهٔ راه‌اندازیآدرس، Pull-up و ظرفیتMode، ترتیب بیت و CSBaud، قالب فریم، سطح و تقاطع TX/RX

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

I2C: آدرس درست، تازه شروع کار است

در یک پروژهٔ دما و نور، SHT31 و BH1750 می‌توانند در صورت سازگاری الکتریکی و آدرس‌ها، روی باس مشترک قرار گیرند. اما پاسخ ACK در اسکنر، مدل قطعه یا معتبر بودن داده را ثابت نمی‌کند. فرمان، طول پاسخ، زمان تبدیل و بررسی صحت دادهٔ مستند هنوز لازم‌اند.

قالب آدرس ۷ بیتی را با عدد شامل بیت خواندن/نوشتن اشتباه نگیرید. بالاکش‌های چند ماژول ممکن است موازی شوند و ظرفیت کابل، زمان بالا رفتن را تغییر دهد. در مشخصات I2C و عیب‌یابی I2C این مسئله را دنبال کنید. برای سطح ۵ و ۳٫۳ ولت، اتصال ۵ ولت به ESP32؛ انتخاب تبدیل سطح ۳٫۳ و ۵ ولت مکمل این بخش است.

نمودار آموزشی تألیفی: تفاوت I2C، SPI و UART؛ انتخاب رابط برای سنسور و ماژول
نمودار آموزشی تألیفی LCENJ؛ عکس مدار، شکل موج اندازه‌گیری‌شده یا نتیجهٔ آزمایش فیزیکی نیست. فرض‌ها و کاربرد آن در متن توضیح داده شده است.

SPI: تنظیم Mode و CS بخشی از قرارداد است

در SPI، فرستادن چند بایت با کلاک درست کافی نیست. CPOL سطح بیکار کلاک و CPHA لبهٔ نمونه‌برداری را مشخص می‌کند. Mode، ترتیب بیت، بیشترین Clock و زمان‌های قبل و بعد از CS را از دیتاشیت همان نمایشگر، حافظه یا سنسور بخوانید. تنظیم یک دستگاه را به همهٔ قطعات روی باس تعمیم ندهید.

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

UART: خط مشترک کلاک نداریم، قرارداد همچنان لازم است

TX یک طرف به RX طرف دیگر و RX آن به TX مقابل می‌رود؛ مرجع زمین و سطح منطقی باید مناسب باشد. دو طرف باید Baud، تعداد بیت داده، Parity و Stop را مطابق قرارداد تنظیم کنند. برای مثال، تنظیم 115200 و 8N1 به معنی یک پروتکل کامل برای فرمان‌های محصول نیست.

اگر در هر فریم یک Start، هشت بیت داده و یک Stop داشته باشیم، هر بایت داده ده بیت روی خط می‌گیرد. سقف نظری داده در ۱۱۵۲۰۰ حدود ۱۱۵۲۰ بایت‌برثانیه است؛ فاصلهٔ فریم‌ها و سربار پروتکل آن را کمتر می‌کند. این عدد، نتیجهٔ آزمون یک ماژول یا تضمین تحویل پیام نیست. برای دادهٔ دودویی، طول، مرز پیام، وضعیت خطا و Timeout را صریح طراحی کنید.

از نرخ اسمی تا دادهٔ مفید؛ یک مثال انتخاب

فرض کنید دوازده بایت دادهٔ معتبر در هر ۱۰۰ ms می‌خواهید؛ نیاز مفید فقط ۱۲۰ بایت‌برثانیه است. در این پروژه، احتمالاً زمان تبدیل سنسور، اعتبار داده و مدیریت خطا مهم‌تر از بیشترین سرعت رابط‌اند. در مقابل، برای نمایشگر با فریم‌های بزرگ، تعداد بایت و نرخ به‌روزرسانی را حساب کنید و سپس پهنای باند و منابع MCU را بسنجید.

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

ترتیب عیب‌یابی و پرسش‌های رایج

  1. مدل و پایه‌های واقعی دو طرف را شناسایی کنید.
  2. با برق قطع، مسیر سیم و زمین را کنترل کنید؛ سپس تغذیه و سطح خطوط را بسنجید.
  3. یک دستگاه و یک تراکنش کوچک با تنظیمات مشخص انتخاب کنید.
  4. دادهٔ خام، طول، زمان و وضعیت خطا را کنار نتیجه ثبت کنید.
  5. پس از صحت ارتباط، تعداد دستگاه یا سرعت را مرحله‌ای بالا ببرید.
آیا SPI همیشه سریع‌تر از I2C است؟

در بسیاری از کاربردها ظرفیت سرعت بالاتری دارد، اما حد واقعی را دستگاه، MCU و طراحی مسیر تعیین می‌کنند؛ عدد نام رابط کافی نیست.

آیا UART همیشه ارتباط دوطرفه است؟

می‌تواند دوطرفه باشد، اما سیم‌بندی و برنامه ممکن است فقط یک جهت را استفاده کنند. قرارداد و منابع همان دستگاه را بررسی کنید.

برای چند سنسور کدام ساده‌تر است؟

اگر آدرس، سطح و ظرفیت سازگار باشند I2C می‌تواند تعداد خطوط را کم کند؛ برای دستگاه‌های SPI به انتخاب و آزادشدن خط مشترک توجه کنید.

برای ادامه، ESP32 یا STM32؟ انتخاب میکروکنترلر برای پروژهٔ واقعی و چگونه دیتاشیت بخوانیم؟ از حد مطلق تا انتخاب قطعه را بخوانید و برگهٔ انتخاب همراه این مقاله را برای پروژهٔ خودتان پر کنید.

منابع رسمی و فایل‌های همراه

منابع فنی در ۲۰۲۶/۱۰/۱۳ بررسی شده‌اند. نسخه و مدل قطعهٔ خود را با سند مرتبط تطبیق دهید.

دریافت برگهٔ تصمیم و ثبت آزمون (CSV)؛ بستهٔ کامل مقاله و فایل‌های همراه از بخش دانلود همین صفحه در دسترس است.

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

پرسش و پاسخ مقاله

سوال فنی خود را مطرح کنید

پرسش‌ها و پاسخ‌ها پس از بررسی مدیر منتشر می‌شوند. نویسنده، پیش‌نویس در انتظار بررسی را می‌بیند.

هنوز پرسش تاییدشده‌ای برای این مقاله ثبت نشده است.