GPIO pinlerinde push-pull, open-drain, pull-up ve pull-down yapılandırmaları ne işe yarar?
Cevap
Çıkış modları
| Mod | Davranış | Kullanım |
|---|---|---|
| Push-pull | Pin aktif olarak hem HIGH (VDD) hem LOW (GND) sürülür | LED, chip select, genel dijital çıkış |
| Open-drain | Pin yalnızca LOW'a çeker; HIGH için harici/dahili pull-up gerekir | I2C, paylaşılan interrupt hattı, farklı voltaj seviyesine sürme |
Open-drain'de birden fazla cihaz aynı hatta bağlanabilir; biri LOW çektiğinde hat LOW olur (wired-AND). Push-pull çıkışlar birbirine bağlanırsa biri HIGH, diğeri LOW sürdüğünde kısa devre oluşur.
Giriş modları
- Floating (high-Z): Pin hiçbir yere bağlı değilse gürültüden rastgele 0/1 okunur ve giriş tamponu fazla akım çekebilir.
- Pull-up: Pin direnç üzerinden VDD'ye bağlanır; varsayılan HIGH. Butonun diğer ucu GND'ye bağlanır, basınca LOW okunur (aktif-düşük).
- Pull-down: Pin GND'ye çekilir; varsayılan LOW.
- Analog: Dijital tampon kapatılır; ADC için ve güç tasarrufu için kullanılmayan pinlerde tercih edilir.
Dahili pull-up'lar genelde 30-50 kΩ civarındadır; I2C gibi hızlı hatlarda yetersiz kalır, harici 2.2-4.7 kΩ kullanılır.
STM32 HAL örneği
GPIO_InitTypeDef g = {0};
g.Pin = GPIO_PIN_0;
g.Mode = GPIO_MODE_INPUT;
g.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &g);
g.Pin = GPIO_PIN_5;
g.Mode = GPIO_MODE_OUTPUT_PP; /* push-pull */
g.Pull = GPIO_NOPULL;
g.Speed = GPIO_SPEED_FREQ_LOW; /* EMI için gerekenden hızlı seçmeyin */
HAL_GPIO_Init(GPIOA, &g);Diğer önemli ayarlar: slew rate/speed (yüksek hız EMI artırır), drive strength, alternate function (UART/SPI gibi çevresel birime bağlama) ve pinin 5V tolerant olup olmadığı.
İlgili Mikrodenetleyiciler soruları
- Kesme (interrupt) nedir? ISR yazarken nelere dikkat edilir?
- Watchdog timer nedir, ne işe yarar?
- Bir bootloader nasıl çalışır? Uygulamaya atlama ve güvenli firmware güncellemesi nasıl tasarlanır?
- Mekanik bir butonun debounce işlemi neden gereklidir ve yazılımda nasıl yapılır?
- DMA nedir, ne zaman kullanılır? DMA kullanırken cache coherency ve double buffering gibi konularda nelere dikkat edilmelidir?
- ADC çözünürlüğü, referans voltajı ve örnekleme hızı nedir? ADC okumasında doğruluğu etkileyen faktörler nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.