I2C ve SPI Haberleşme: Hangisini Ne Zaman Kullanmalı?
# I2C ve SPI Haberleşme: Hangisini Ne Zaman Kullanmalı?
Mikrodenemeler ve sensörler arasında veri aktarmanın iki ana yolu vardır: I2C (Inter-Integrated Circuit) ve SPI (Serial Peripheral Interface). İkisi de senkron (saatli) protokoller olsa da çalışma mantıkları ve kullanım alanları farklıdır.
I2C iki hat kullanır: SDA (veri) ve SCL (saat). Birden fazla cihaz aynı hatlara bağlanabilir; her cihazın benzersiz bir adresi vardır. Daha az kabloya ihtiyaç duyar, ama veri hızı daha düşüktür (100 kbit/s ila 400 kbit/s tipik).
Avantajları: Az kablolama, çok cihaz desteği, basit.
Dezavantajları: Yavaş, uzun mesafelerde sorunlu.
SPI dört hat kullanır: MOSI (master to slave), MISO (slave to master), SCK (saat) ve CS (chip select). Her cihaz için ayrı CS hattı gerekir. Hızlı (1 Mbit/s ila 50+ Mbit/s) ve güvenilirdir.
Avantajları: Hızlı, güvenilir, uzun mesafe uygun.
Dezavantajları: Daha fazla kablolama, tek master.
- I2C seçin: Sensör okuma (sıcaklık, nem), EEPROM, RTC gibi yavaş cihazlarda.
- SPI seçin: SD kart, LCD ekran, hızlı ADC gibi yüksek hızlı uygulamalarda.
Bir DHT22 sensörü (I2C) okumak:
1#include <Wire.h>2#include "DHT.h"34#define DHTPIN 25#define DHTTYPE DHT226DHT dht(DHTPIN, DHTTYPE);78void setup() {9Serial.begin(9600);10Wire.begin();11dht.begin();12}1314void loop() {15float temp = dht.readTemperature();16float humidity = dht.readHumidity();1718Serial.print("Sıcaklık: ");19Serial.print(temp);20Serial.print(" °C, Nem: ");21Serial.println(humidity);2223delay(2000);24}Beklenen çıktı:
1Sıcaklık: 24.5 °C, Nem: 65.32Sıcaklık: 24.6 °C, Nem: 65.11#include <SPI.h>2#include <SD.h>34const int chipSelect = 10;5File dataFile;67void setup() {8Serial.begin(9600);9SPI.begin();1011if (!SD.begin(chipSelect)) {12Serial.println("SD kart başlatılamadı!");13return;14}1516dataFile = SD.open("veri.txt", FILE_WRITE);17if (dataFile) {18dataFile.println("I2C vs SPI test");19dataFile.close();20Serial.println("Veri yazıldı.");21}22}2324void loop() {}Beklenen çıktı:
1Veri yazıldı.Özet: Yavaş, basit uygulamalar için I2C; hızlı ve hassas veri aktarımı için SPI. Prototip aşamasında hangisinin rahat olacağını test ederek karar ver.
0 yorum