متوسط⏱ 13 دقیقه مطالعه
SPI یک پروتکل ارتباطی سریعتر از I2C است که از ۴ سیم استفاده میکند: MOSI (خروجی داده مستر)، MISO (ورودی داده مستر)، SCK (ساعت) و CS/SS (انتخاب چیپ). بهدلیل سرعت بالا، برای نمایشگرهای TFT، کارتهای SD و برخی حسگرهای دقیق استفاده میشود.
مقایسهٔ سریع I2C و SPI
- I2C: دو سیم، آدرسدهی نرمافزاری، کندتر، مناسب چند قطعهٔ کمسرعت
- SPI: حداقل چهار سیم، انتخاب سختافزاری با CS، سریعتر، مناسب نمایشگر و حافظه
CPP
#include <SPI.h>
const int CS_PIN = 5;
void setup() {
Serial.begin(115200);
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH);
// SCK=18, MISO=19, MOSI=23 (پایههای پیشفرض SPI روی اغلب بردهای ESP32)
SPI.begin(18, 19, 23, CS_PIN);
SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
digitalWrite(CS_PIN, LOW); // فعالسازی دستگاه
SPI.transfer(0x01);
SPI.transfer(0x02);
SPI.transfer(0x03);
digitalWrite(CS_PIN, HIGH); // غیرفعال کردن دستگاه
SPI.endTransaction();
Serial.println("داده از طریق SPI ارسال شد");
}
void loop() {}ℹ️ اطلاعات
هر دستگاه SPI روی گذرگاه معمولاً یک پایهٔ CS اختصاصی دارد؛ برای افزودن چند دستگاه، هر کدام باید CS جداگانه داشته باشند.
🛠️ کارگاه عملی
کارگاه عملی: مستندات یک نمایشگر TFT مبتنی بر SPI (مثل ST7735، با کتابخانهٔ Adafruit_ST7735) را بررسی کنید و پایههای آن را با نقشهٔ بالا مقایسه کنید.
❓ کدام سیم در SPI مسئول انتخاب دستگاه موردنظر روی گذرگاه است؟
→ درس قبلی: درس ۹: پروتکل I2C و نمایشگر OLED
شروع فصل بعد: فصل ۵: شبکه و اینترنت اشیا: درس ۱۱: اتصال ESP32 به شبکه Wi-Fi ←
طراحی و توسعه: امین شیخ نجدی — glcd.ir | نسخهٔ افزونه: 1.21.0