STM32 / Ders 6 / I2C
Slave’i bul, ACK’i oku, NACK’in nedenini ayırt et.
I2C laboratuvarında amaç yalnızca veri okumak değil, işlemin neden bazen hiç başlamadığını ya da adres aşamasında koptuğunu ayırabilmektir. Burada fiziksel bus koşulu ile protokol düzeyi hata aynı ekranda görünür.
İlk tur için kısa rota
1. Başarıyı kur
Sıcaklık sensörünü seç, ADDR pinini `LOW` bırak ve `0x48` adresinden `TEMP` register'ını oku.
2. Sonra yanlış adrese geç
Master hedef adresini değiştir; bu kez adres aşamasında `NACK` geldiğini transcript içinde gör.
3. Pull-up'ı kapat
Bus artık high seviyeye dönemediği için daha protokol başlamadan fiziksel hata oluştuğunu fark et.
Öğrenme Çıktısı
Adresleme, ACK/NACK, register okuma ve pull-up mantığını tek işlem akışında yorumlayabilmek.
Kart Karşılığı
Bu akış, STM32 master ile tipik bir I2C sıcaklık sensörü ya da EEPROM arasında kurulan başlangıç laboratuvarlarını temsil eder.
Pedagojik Hedef
Hatanın fiziksel mi, adresleme mi, yoksa mod/sürat kaynaklı mı olduğunu ayırt etmeyi öğretmek.
Bus Görünümü ve Transaction
Bu görsel, master ile slave arasındaki I2C işlemini; bus hatları, işlem fazları ve transcript üzerinden özetler.
STM32 Master
Adres gönderir, register seçer ve okuma işlemini başlatır.
SCL / SDA
Sıcaklık sensörü
ADDR pinine göre adres değişir. Register temelli okuma yapar.
7-bit: 0x48
SCL
SDA
Son Paket
Henüz transaction başlatılmadı.
Slave 7-bit
0x48
HAL Adresi
0x90
Register
0x00
Sonuç
Bekliyor
Register Yorumu
Seçilen register'ın anlamı burada görünür.
Pull-up
Var
Adres eşleşmesi
Uyumlu
Bus hızı
Güvenli
İşlem durumu
Hazır
I2C Transcript
Mini Quiz
I2C sezgisini üç kısa kontrol ile yerleştir.
1. Pull-up neden gerekir?
Open-drain hattı düşün.
2. Slave adresi yanlışsa tipik sonuç nedir?
Adres fazına odaklan.
3. STM32 HAL’de neden adres çoğu zaman sola kaydırılır?
7-bit ve 8-bit temsil farkını düşün.