STM32F103C8T6, 72 MHz ARM Cortex-M3 çekirdekli, 64 KB flash ve 20 KB RAM'li 32 bitlik bir mikrodenetleyicidir; Blue Pill bu çipi taşıyan ucuz geliştirme kartıdır. Kart, ST-Link ile SWD üzerinden ya da BOOT0 jumper'ı 1'e alınıp USB-TTL dönüştürücüyle seri bootloader üzerinden programlanır ve 3,3 V mantıkla çalışır.
STM32F103C8T6, Arduino'dan bir üst seviyeye geçmek isteyenlerin en sık karşılaştığı 32 bitlik mikrodenetleyicidir ve çoğunlukla "Blue Pill" adlı küçük mavi kart üzerinde kullanılır. Bu yazıda çipin özelliklerini, Blue Pill kartında neler bulunduğunu, ST-Link ve USB-TTL ile nasıl programlandığını, Arduino IDE ve STM32CubeIDE seçeneklerini ve kartın bilinen sorunlarını anlatıyoruz. STM32 ailesine genel bir giriş için STM32 nedir ve Arduino ile farkı yazımızı okuyabilirsiniz.
STM32F103C8T6 nedir?
STM32F103C8T6, STMicroelectronics'in STM32F1 serisinden, ARM Cortex-M3 çekirdekli, 72 MHz'e kadar çalışan, 48 pinli LQFP kılıfta üretilen 32 bitlik bir mikrodenetleyicidir. Adındaki harfler kılıfı ve belleği anlatır: C = 48 pin, 8 = 64 KB flash, T = LQFP kılıf, 6 = -40 ile +85 °C çalışma aralığı.
Çip tek başına STM32F103C8T6 LQFP-48 mikrodenetleyici olarak kendi kartınıza lehimlenebilir. Hobide ise kristali, regülatörü, reset butonu ve pin başlıkları hazır olan STM32F103C8T6 mini geliştirme kartı (Blue Pill) çok daha pratiktir.
STM32F103C8T6'nın özellikleri nelerdir?
STM32F103C8T6; 72 MHz Cortex-M3 çekirdek, 64 KB flash, 20 KB SRAM, iki adet 12 bitlik ADC, USB, CAN ve çok sayıda seri arayüz sunar. Aşağıdaki tabloda ST veri sayfasındaki temel değerler ile Arduino Uno karşılaştırılmıştır.
| Özellik | STM32F103C8T6 | Arduino Uno (ATmega328P) |
|---|---|---|
| Çekirdek | 32 bit ARM Cortex-M3 | 8 bit AVR |
| Saat hızı | 72 MHz | 16 MHz |
| Flash / RAM | 64 KB / 20 KB | 32 KB / 2 KB |
| G/Ç pini (kılıfta) | 37 | 23 |
| ADC | 2 × 12 bit, 10 kanal | 10 bit, 6 kanal |
| Haberleşme | 3 USART, 2 SPI, 2 I2C, USB, CAN | 1 UART, 1 SPI, 1 I2C |
| Çalışma gerilimi | 2,0-3,6 V | 5 V |
Flash konusunda dikkatli olun: veri sayfası C8 için 64 KB verir. Pek çok çipte 128 KB'ın yazılabildiği görülmüştür, ancak bu garanti edilmez ve kopya çiplerde hiç olmayabilir. Projenizi 64 KB'a göre planlayın.
Blue Pill kartında neler var?
Blue Pill, STM32F103C8T6'yı 8 MHz ana kristal, 32,768 kHz saat kristali, 3,3 V regülatör, reset butonu, micro USB soketi, iki BOOT jumper'ı ve iki sıra pin başlığıyla birleştiren yaklaşık 53 × 23 mm'lik bir karttır. Kartın ucunda SWD programlama için 4 pinli başlık (3V3, SWDIO, SWCLK, GND) bulunur.
- Kullanıcı LED'i: PC13'e bağlıdır ve ters mantıkla çalışır; pin LOW olunca yanar.
- Besleme: USB'den, 5V pininden ya da doğrudan 3.3 pininden verilir. USB ve harici beslemeyi aynı anda bağlamayın.
- 5 V tolerans: Pinler 3,3 V çıkış verir. Bazı dijital pinler 5 V'a dayanıklıdır (veri sayfasında FT), ancak ADC'ye bağlı pinler (PA0-PA7, PB0, PB1) dayanıklı değildir.
- PC13-PC15: Akım kapasitesi çok düşüktür (birkaç mA); bu pinlerle LED dışında yük sürmeyin.
Blue Pill nasıl programlanır?
Blue Pill en kolay ST-Link V2 programlayıcıyla SWD başlığı üzerinden programlanır; programlayıcı yoksa BOOT0 jumper'ı 1'e alınıp USB-TTL dönüştürücüyle çipin dahili seri bootloader'ı kullanılır. Kartın USB soketi, fabrika çıkışı Blue Pill'de doğrudan program yüklemek için kullanılamaz; bunun için önce ayrı bir USB bootloader yazılmalıdır.
| Yöntem | Bağlantı | BOOT0 | Artısı / eksisi |
|---|---|---|---|
| ST-Link (SWD) | 3V3, SWDIO, SWCLK, GND | 0 (normal) | Hızlı, hata ayıklama (debug) yapılabilir |
| USB-TTL (seri bootloader) | TX → PA10, RX → PA9, GND, 3V3 | 1 (yükleme sırasında) | Ek programlayıcı gerekmez, jumper takıp çıkarmak gerekir |
| USB bootloader | Kartın micro USB soketi | 0 | Önce bootloader yazılmalı; USB direnci sorunu varsa çalışmaz |
Bu yazıdaki örnekler ST-Link V2 mini programlayıcı ve CP2102 USB-TTL dönüştürücü modülü ile hazırlanmıştır. USB-TTL modüllerinin çalışması ve sürücüleri USB-TTL dönüştürücü rehberimizde anlatılıyor.
Arduino IDE ile ST-Link üzerinden ilk program
- ST'nin ücretsiz STM32CubeProgrammer yazılımını kurun; Arduino IDE yükleme için bu programı kullanır.
- Arduino IDE'de Tercihler'e STM32duino kart paketi adresini ekleyin ve Kart Yöneticisi'nden "STM32 MCU based boards" paketini kurun.
- Kart olarak "Generic STM32F1 series", parça numarası olarak "BluePill F103C8" seçin.
- Yükleme yöntemi olarak "STM32CubeProgrammer (SWD)" seçin.
- ST-Link'i SWD başlığına bağlayın: 3.3V → 3V3, SWDIO → DIO, SWCLK → CLK, GND → GND.
- Blink örneğinde LED pinini PC13 yapın ve yükleyin; LED yanıp sönmelidir.
void setup() {
pinMode(PC13, OUTPUT);
}
void loop() {
digitalWrite(PC13, LOW); // Blue Pill'de LOW = LED yanar
delay(500);
digitalWrite(PC13, HIGH);
delay(500);
}
Seri bootloader ile yüklemek için BOOT0 jumper'ını 1'e alın, reset'e basın, yükleme yöntemini "STM32CubeProgrammer (Serial)" yapın ve yükleyin. İş bitince BOOT0'ı 0'a geri alıp reset'e basın; aksi hâlde kart her açılışta bootloader'da bekler.
Blue Pill'in bilinen sorunları nelerdir?
Blue Pill'in en bilinen iki sorunu USB D+ hattındaki yanlış pull-up direnci ve kartlarda orijinal yerine kopya ya da uyumlu çip bulunmasıdır. İkisi de kartı kullanılamaz yapmaz, ama ilk denemede kafa karıştırır.
- USB direnci (R10): USB standardı D+ hattında 3,3 V'a 1,5 kΩ ister. Birçok Blue Pill'de bu direnç 10 kΩ ya da 4,7 kΩ takılıdır; USB bazı bilgisayarlarda tanınmaz. Çözüm direnci 1,5 kΩ ile değiştirmek ya da PA12 ile 3,3 V arasına paralel yaklaşık 1,8 kΩ direnç eklemektir.
- Kopya ve uyumlu çipler: Ucuz kartlarda CKS32F103 (CS32), GD32F103 ya da APM32F103 gibi çipler bulunabilir. ST-Link ve OpenOCD "UNEXPECTED idcode" hatası verebilir; çip üzerindeki yazıyı kontrol edin ve yazılımın bu çipi desteklediği sürümü kullanın.
- Kopya ST-Link: ST-Link V2 mini programlayıcıların çoğu klondur; STM32CubeProgrammer bellenim güncellemesi önerdiğinde dikkatli olun.
- Bağlantı yok hatası: Program SWD pinlerini (PA13, PA14) başka iş için kullanıyorsa ST-Link bağlanamaz. Bağlanırken reset'e basılı tutup "Connect under reset" seçeneğini kullanın.
Daha güvenilir bir başlangıç isteyenler için ST-LINK V2 STM8/STM32 programlayıcı ve orijinal çipli kartlar daha az sürpriz çıkarır.
Arduino IDE mi, STM32CubeIDE mi?
Hızlı deneme ve Arduino kütüphanelerini kullanmak için Arduino IDE, zamanlayıcı, DMA ve kesmeleri tam kontrol etmek için STM32CubeIDE uygundur. STM32CubeIDE'de pinler grafik arayüzde ayarlanır, HAL kütüphanesiyle C kodu üretilir ve ST-Link ile adım adım hata ayıklama yapılır.
Arduino'dan gelen biri için iyi bir yol önce STM32duino ile çalışan bir proje kurmak, sonra aynı projeyi STM32CubeIDE'de yeniden yazmaktır. Her iki ortam da aynı ST-Link'i kullanır.
Sık sorulan sorular
STM32F103C8T6 kaç volt ile çalışır?
STM32F103C8T6 2,0-3,6 V ile çalışır; Blue Pill kartında bu gerilim kart üzerindeki regülatörle 5 V'tan üretilir. Kartı USB'den ya da 5V pininden besleyebilirsiniz. Pinlerin çıkışı 3,3 V'tur; 5 V'luk bir modülle haberleşirken pinin FT (5 V toleranslı) olup olmadığını veri sayfasından kontrol edin.
Blue Pill USB'den neden tanınmıyor?
En sık iki neden vardır: kartta USB bootloader ya da USB kodlu program yoktur veya D+ hattındaki pull-up direnci 1,5 kΩ yerine 10 kΩ takılmıştır. Fabrika çıkışı Blue Pill USB'den görünmez; önce ST-Link ya da seri bootloader ile USB destekli program yüklenmelidir. Direnç hatalıysa değiştirmek gerekir.
Blue Pill'deki çip orijinal mi?
Ucuz Blue Pill kartlarında orijinal STM32 yerine CKS32, GD32 ya da APM32 gibi uyumlu çipler bulunabilir. Çip yüzeyindeki logo ve yazıyı kontrol edin; ST-Link Utility ya da OpenOCD farklı kimlik (ID) gösteriyorsa çip kopyadır. Bu çiplerin çoğu basit projelerde çalışır, ancak kritik işlerde orijinal çipli kart tercih edin.
BOOT0 ve BOOT1 jumper'ları ne işe yarar?
BOOT jumper'ları çipin açılışta nereden başlayacağını seçer. BOOT0 = 0 iken çip flash'taki programınızı çalıştırır; BOOT0 = 1 ve BOOT1 = 0 iken dahili seri bootloader çalışır ve PA9/PA10 üzerinden program beklenir. Normal kullanımda iki jumper da 0 konumunda kalır.
Blue Pill mi, Black Pill mi?
Yeni bir projede Cortex-M4 çekirdekli STM32F401 ya da F411 tabanlı Black Pill daha hızlıdır, daha fazla bellek sunar ve USB'den doğrudan programlanabilir. Blue Pill ise fiyatı, yaygınlığı ve hazır örneklerin bolluğu nedeniyle öğrenme ve basit kontrol işleri için hâlâ mantıklı bir seçimdir.
Özet
- STM32F103C8T6: 72 MHz Cortex-M3, 64 KB flash (bazı çiplerde 128 KB yazılabilir ama garanti değildir), 20 KB RAM, 2,0-3,6 V.
- Blue Pill, bu çipi 8 MHz kristal, 3,3 V regülatör ve SWD başlığıyla taşıyan ucuz geliştirme kartıdır; LED'i PC13'te ve ters mantıklıdır.
- En kolay programlama ST-Link V2 ile SWD üzerinden; alternatif BOOT0 = 1 ile USB-TTL üzerinden PA9/PA10'dan yapılır.
- Fabrika çıkışı Blue Pill USB'den program almaz; USB direnci 10 kΩ ise 1,5 kΩ ile değiştirilir.
- Kartlarda CKS32, GD32 gibi uyumlu çipler bulunabilir; "UNEXPECTED idcode" hatası buna işaret eder.
