Programlama Kartları ve Programlayıcılar Rehberi

·

USBasp, ST-Link ve USB-TTL programlayıcıların bağlantı arayüzleri şeması

Programlayıcılar, yazılan kodu mikrodenetleyicinin belleğine aktaran donanım arayüzleridir. Arduino gibi hazır kartlarda bu iş USB üzerinden yapılır çünkü kartta zaten bir bootloader ve dönüştürücü bulunur. Çıplak bir mikrodenetleyici kullanıldığında ise ayrı bir programlayıcı gerekir.

Kısaca: AVR ve ATmega için USBasp, STM32 için ST-Link, ESP ve seri iletişim için USB-TTL, profesyonel hata ayıklama için J-Link kullanılır. Programlayıcı sadece kod yüklemez; birçoğu aynı zamanda adım adım hata ayıklama imkânı sunar.

Programlayıcı seçiminde en sık yapılan hata, mikrodenetleyicinin arayüzüne bakmadan alım yapmaktır. AVR ailesi ISP (SPI tabanlı), STM32 ailesi SWD, ESP ailesi ise seri UART kullanır. Bu arayüzler birbirinin yerine geçmez.

Programlayıcı tipleri

ProgramlayıcıHangi çipArayüzHata ayıklama
USBaspAVR / ATmega / ATtinyISPYok
USBtinyISPAVR / ATtinyISPYok
ST-Link V2STM32 / STM8SWD / JTAGVar
J-LinkARM Cortex geneliSWD / JTAGVar (üst düzey)
USB-TTL (CP2102, CH340)ESP, seri cihazlarUARTYok
PICkitPIC ailesiICSPVar
CMSIS-DAPARM CortexSWDVar

Programlayıcı seçimi tamamen hedef mikrodenetleyiciye bağlıdır. ST-Link ile ATmega programlanamaz, USBasp ile STM32 programlanamaz. Birden fazla aile ile çalışılıyorsa iki ayrı programlayıcı bulundurmak gerekir.

USBasp ve ISP programlama

ISP (In-System Programming), çipi devreden sökmeden programlamayı sağlayan yöntemdir. SPI hattı üzerinden çalışır.

Altı kablo kullanılır: MOSI, MISO, SCK, RESET, VCC ve GND. Standart 6 pinli veya 10 pinli konnektör vardır; 10 pinli kablo 6 pine dönüştürücüyle bağlanır.

USBasp’ın en yaygın kullanımı: Arduino kartına yeni bootloader yüklemek veya çıplak ATmega328 çipini programlamak. Bootloader bozulmuş bir kart USB üzerinden kod almaz; ISP ile kurtarılır.

Gerilim jumper’ı: USBasp kartlarında 3,3 V / 5 V seçim jumper’ı bulunur. 3,3 V bir hedefe 5 V uygulamak çipi kalıcı olarak bozabilir. Bağlantı öncesi jumper konumu kontrol edilmelidir.

USBasp’ın hata ayıklama özelliği yoktur; yalnızca yazar ve okur. Adım adım kod izleme gerekiyorsa debugWIRE veya farklı bir programlayıcı gerekir.

Fuse ayarı riski

AVR çiplerinde fuse bitleri saat kaynağını ve temel davranışı belirler. Yanlış fuse yazmak çipi erişilemez hale getirir; harici saat sinyali veya yüksek gerilimli programlayıcı olmadan kurtarılamaz. Fuse değiştirmeden önce hesaplayıcı ile doğrulayın.

ST-Link ve SWD arayüzü

STM32 ailesi SWD (Serial Wire Debug) kullanır. Yalnızca iki sinyal hattı gerekir: SWDIO ve SWCLK. Buna VCC ve GND eklenir.

ST-Link V2 ucuz ve yaygındır. Kod yükler, ayrıca breakpoint koyma, değişken izleme ve adım adım çalıştırma imkânı verir. Bu özellik karmaşık projelerde hata bulma süresini büyük ölçüde kısaltır.

STM32 kartlarında ayrıca dahili bootloader vardır. BOOT0 pini yükseğe çekilip kart resetlenirse çip seri porttan program kabul eder; bu yöntemle USB-TTL ile de yükleme yapılabilir. Ancak hata ayıklama yapılamaz.

Blue Pill gibi ucuz STM32 kartlarında sahte veya farklı çip kullanılabilir; bazı klon kartlarda bağlantı sorunları görülür. Bu durumda “connect under reset” seçeneği denenmelidir.

Nucleo ve Discovery kartlarında ST-Link kart üzerinde yerleşiktir; ayrı programlayıcı gerekmez. Bu kartların programlayıcı bölümü ayrılıp harici çipleri programlamak için de kullanılabilir.

USB-TTL dönüştürücüler

USB-TTL dönüştürücüler programlayıcı değil, seri port köprüsüdür. Bilgisayarın USB portunu mikrodenetleyicinin UART hattına bağlar.

Kullanım alanları: ESP8266/ESP32 programlama, bootloader üzerinden yükleme, seri monitör ile hata ayıklama, GSM ve GPS modüllerine AT komutu gönderme.

Yaygın çipler: CH340 ucuzdur ve sürücü kurulumu gerektirebilir. CP2102 daha kararlıdır. FT232 en güvenilir olanıdır ancak piyasada sahtesi çoktur; sahte FT232 çipleri sürücü güncellemesinde çalışmayı durdurabilir.

Gerilim seviyesi kritiktir. ESP modülleri 3,3 V mantık kullanır. Dönüştürücü 5 V konumundayken bağlanırsa modül zarar görür. Çoğu kartta jumper veya anahtar ile seviye seçilir.

Bağlantı sırası: TX ucu karşı tarafın RX ucuna, RX ucu karşı tarafın TX ucuna bağlanır. TX-TX bağlantısı en sık yapılan hatadır ve hiç veri gelmemesine yol açar.

Bootloader nedir, ne zaman yüklenir?

Bootloader, mikrodenetleyicinin belleğinde bulunan küçük bir programdır. Açılışta çalışır ve seri porttan yeni kod gelip gelmediğine bakar.

Arduino kartlarının USB üzerinden programlanabilmesinin sebebi budur. Bootloader olmasaydı her yüklemede ISP programlayıcı gerekirdi.

Ne zaman yeniden yüklenir? Çıplak bir ATmega çipi alındığında, yanlış fuse ayarı sonrası veya kart USB’den kod kabul etmeyi bıraktığında.

Bootloader yükleme Arduino IDE üzerinden “Bootloader Yaz” seçeneğiyle yapılır; programlayıcı olarak USBasp seçilir ve hedef kart doğru tanımlanır.

Bootloader bellekte yer kaplar ve açılışta birkaç yüz milisaniye gecikme yaratır. Seri üretimde veya her baytın önemli olduğu projelerde bootloader kaldırılıp doğrudan ISP ile yükleme tercih edilir.

Sık yaşanan sorunlar

Programlayıcı bilgisayarda görünmüyor

Sürücü eksikliğidir. USBasp için libusb tabanlı sürücü, CH340 için ayrı sürücü kurulmalıdır. Ayrıca yalnızca şarj amaçlı USB kabloları veri taşımaz; veri kablosu kullanın.

Hedef çip yanıt vermiyor

Bağlantı sırası veya besleme hatalıdır. MISO-MOSI karışmış olabilir, RESET bağlı olmayabilir veya hedef çip beslenmemiş olabilir. Ayrıca hedefin saat kaynağı çalışmıyorsa ISP yanıt vermez.

Yükleme başlıyor ama tamamlanmıyor

Programlama hızı çok yüksek olabilir. USBasp’taki yavaş SCK jumper’ı takılarak düşük hızda denenmelidir. Bu, düşük saat frekanslı hedeflerde gereklidir.

ESP modülü programlama moduna girmiyor

GPIO0 pini toprağa çekilirken kart resetlenmelidir. Otomatik reset devresi olmayan çıplak ESP modüllerinde bu işlem elle yapılır. Ayrıca besleme yetersizse yükleme yarıda kesilir.

Seri monitörde anlamsız karakterler

Baud hızı uyumsuzdur. Kod ile seri monitördeki hız aynı olmalıdır. ESP modülleri açılışta 74880 baud ile hata mesajı basar; bu hızda okunursa açılış bilgileri görülebilir.

Hangi programlayıcıyı almalı?

  • Arduino ile başlayan: Ayrı programlayıcı gerekmez; USB yeterlidir. Yedek olarak USBasp faydalıdır
  • Çıplak ATmega / ATtiny kullanan: USBasp veya USBtinyISP
  • STM32 ile çalışan: ST-Link V2 — hata ayıklama özelliği tek başına değerlidir
  • ESP8266 / ESP32 kullanan: CP2102 tabanlı USB-TTL
  • Profesyonel geliştirme: J-Link — yüksek hız, geniş çip desteği, güçlü yazılım
  • PIC kullanan: PICkit serisi
  • Birden fazla aile: USBasp + ST-Link + USB-TTL üçlüsü çoğu ihtiyacı karşılar

Hata ayıklama neden önemli?

Kod yükleyen bir programlayıcı ile hata ayıklayan bir programlayıcı arasında çalışma yöntemi açısından büyük fark vardır.

Sadece yükleyen programlayıcılarla (USBasp, USB-TTL) hata bulmanın tek yolu seri porta mesaj basmaktır. Bu yöntem çalışır ama zaman alır ve zamanlamaya duyarlı hataları gizleyebilir.

Hata ayıklayabilen programlayıcılarla (ST-Link, J-Link) kod istenen satırda durdurulur, tüm değişkenler ve register içerikleri anlık olarak görülür. Karmaşık projelerde bu, saatler yerine dakikalar içinde sonuç verir.

Bu nedenle STM32 gibi ciddi projelerde ST-Link’in maliyeti hızla kendini amorti eder. Basit AVR projelerinde ise seri port çıktısı çoğu zaman yeterlidir.

Sıkça Sorulan Sorular

Arduino için programlayıcı almam gerekir mi?

Hayır. Arduino kartlarında bootloader ve USB dönüştürücü yerleşiktir, USB kablosu yeterlidir. Ancak bootloader bozulursa veya çıplak ATmega çipi programlanacaksa USBasp gerekir.

USBasp ile STM32 programlayabilir miyim?

Hayır. USBasp ISP (SPI tabanlı) arayüz kullanır, STM32 ise SWD arayüzü kullanır. STM32 için ST-Link, J-Link veya CMSIS-DAP uyumlu bir programlayıcı gerekir.

ST-Link ve J-Link farkı nedir?

ST-Link ucuzdur ve STM32/STM8 ailesiyle çalışır. J-Link daha pahalıdır ancak çok daha geniş ARM çip desteği, yüksek programlama hızı ve gelişmiş hata ayıklama özellikleri sunar.

USB-TTL dönüştürücü programlayıcı mıdır?

Tam olarak değil. Seri port köprüsüdür; hedefte bootloader varsa kod yüklenebilir. ESP modülleri ve STM32 seri bootloader modu bu şekilde programlanır ancak hata ayıklama yapılamaz.

CH340 mı CP2102 mi tercih etmeliyim?

CP2102 genellikle daha kararlıdır ve sürücü desteği daha sorunsuzdur. CH340 daha ucuzdur ve çoğu durumda yeterlidir ancak bazı işletim sistemlerinde sürücü kurulumu gerektirir.

Fuse ayarını yanlış yaparsam ne olur?

Çip erişilemez hale gelebilir. Özellikle saat kaynağı fuse’u yanlış ayarlanırsa normal ISP ile bağlantı kurulamaz. Harici saat sinyali uygulamak veya yüksek gerilimli programlayıcı kullanmak gerekir.

Bootloader nasıl yüklenir?

USBasp gibi bir ISP programlayıcı hedef karta altı kabloyla bağlanır, Arduino IDE’de doğru kart ve programlayıcı seçilir, ardından “Bootloader Yaz” komutu çalıştırılır.

Programlayıcı hedefi besleyebilir mi?

Kısa süreli ve düşük tüketimli devreler için evet. Ancak motor, ekran veya kablosuz modül içeren devrelerde programlayıcının akım kapasitesi yetmez; hedef ayrı beslenmelidir.

ESP modülü neden programlama moduna girmiyor?

GPIO0 pini toprağa çekiliyken reset uygulanmalıdır. Otomatik reset devresi olmayan modüllerde bu elle yapılır. Ayrıca besleme akımı yetersizse yükleme yarıda kesilir.

Tek programlayıcı ile tüm çipleri programlayabilir miyim?

Hayır. Her mikrodenetleyici ailesi farklı arayüz kullanır. Pratik çözüm USBasp (AVR), ST-Link (STM32) ve USB-TTL (ESP ve seri) üçlüsünü bulundurmaktır; bu kombinasyon çoğu ihtiyacı karşılar.

Nereden temin edilir?

Programlayıcı seçerken hedef mikrodenetleyicinin arayüzü ve çalışma gerilimi mutlaka kontrol edilmelidir. USBasp, ST-Link, USB-TTL ve diğer programlama araçlarını Komponentci.net programlama kartları kategorisinde, uyumlu mikrodenetleyicileri entegreler kategorisinde inceleyebilirsiniz.

İlgili Yazılar

Bu Yazıda Geçen Terimler


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir