Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

STM32F103C8T6 Blue Pill: Özellikler ve Programlama

STM32F103C8T6 Blue Pill: Özellikler ve Programlama
Kısa cevap

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.

ÖzellikSTM32F103C8T6Arduino Uno (ATmega328P)
Çekirdek32 bit ARM Cortex-M38 bit AVR
Saat hızı72 MHz16 MHz
Flash / RAM64 KB / 20 KB32 KB / 2 KB
G/Ç pini (kılıfta)3723
ADC2 × 12 bit, 10 kanal10 bit, 6 kanal
Haberleşme3 USART, 2 SPI, 2 I2C, USB, CAN1 UART, 1 SPI, 1 I2C
Çalışma gerilimi2,0-3,6 V5 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öntemBağlantıBOOT0Artısı / eksisi
ST-Link (SWD)3V3, SWDIO, SWCLK, GND0 (normal)Hızlı, hata ayıklama (debug) yapılabilir
USB-TTL (seri bootloader)TX → PA10, RX → PA9, GND, 3V31 (yükleme sırasında)Ek programlayıcı gerekmez, jumper takıp çıkarmak gerekir
USB bootloaderKartın micro USB soketi0Önce bootloader yazılmalı; USB direnci sorunu varsa çalışmaz
STM32F103C8T6 Blue Pill programlama bağlantı şeması: solda USB-TTL dönüştürücünün RXD ucu Blue Pill PA9 (TX1) pinine, TXD ucu PA10 (RX1) pinine, GND ucu GND'ye, 3V3 ucu 3.3 pinine bağlı; sağda ST-Link V2 programlayıcının 3.3V, SWDIO, SWCLK ve GND uçları Blue Pill'in SWD başlığındaki 3V3, SWDIO, SWCLK ve GND pinlerine bağlı; kart üzerinde PC13'e bağlı LED; altta BOOT0 ve BOOT1 jumper'ları 0 konumunda ve açılış modu tablosu: BOOT0 0 iken flash'taki program, BOOT0 1 ve BOOT1 0 iken seri bootloader çalışır
ST-Link ile SWD üzerinden yüklemede BOOT0 = 0 kalır; USB-TTL ile seri yüklemede BOOT0 = 1 yapılır ve TX-RX çapraz bağlanır (RXD → PA9, TXD → PA10).

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

  1. ST'nin ücretsiz STM32CubeProgrammer yazılımını kurun; Arduino IDE yükleme için bu programı kullanır.
  2. Arduino IDE'de Tercihler'e STM32duino kart paketi adresini ekleyin ve Kart Yöneticisi'nden "STM32 MCU based boards" paketini kurun.
  3. Kart olarak "Generic STM32F1 series", parça numarası olarak "BluePill F103C8" seçin.
  4. Yükleme yöntemi olarak "STM32CubeProgrammer (SWD)" seçin.
  5. ST-Link'i SWD başlığına bağlayın: 3.3V → 3V3, SWDIO → DIO, SWCLK → CLK, GND → GND.
  6. 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.

Bu yazıdaki ürünler

Diğer yazılar

12 Kasım 20268 dk okuma

AMG8833 Termal Kamera Sensörü: 8x8 Isı Haritası Rehberi

AMG8833, Panasonic Grid-EYE ailesinden 8x8 = 64 pikselli bir termopil kızılötesi dizi sensörüdür. 0-80 °C aralığındaki yüzeylerin sıcaklığın...

Devamını oku →
12 Kasım 20268 dk okuma

MT6701 Manyetik Encoder: 14 Bit Açı Sensörü Rehberi

MT6701, MagnTek'in ürettiği, dönen bir mıknatısın açısını Hall algılayıcılarla temassız ölçen 14 bitlik manyetik açı sensörüdür. Açıyı I2C y...

Devamını oku →
12 Kasım 20267 dk okuma

MG90S ve SG90 Servo Farkı: Tork, Dişli ve Seçim Rehberi

MG90S ile SG90 arasındaki temel fark dişlilerdir: MG90S metal, SG90 plastik dişli kullanır. İkisi de aynı boyda mikro servodur ve 4,8 V'ta y...

Devamını oku →
12 Kasım 20267 dk okuma

C5198 ve A1941 Transistör: Değerler, Bacaklar ve Muadil

C5198 (2SC5198), Toshiba'nın ses amplifikatörü çıkış katı için ürettiği 140 V, 10 A ve 100 W değerli NPN güç transistörüdür; PNP eşi A1941'd...

Devamını oku →
12 Kasım 20267 dk okuma

ZB2L3 Pil Kapasite Test Cihazı: Bağlantı ve Kullanım

ZB2L3 pil kapasite test cihazı, pili harici bir yük direnci üzerinden ayarladığınız sonlandırma gerilimine kadar boşaltıp gerçek kapasiteyi...

Devamını oku →
12 Kasım 20266 dk okuma

TC4427 MOSFET Sürücü: Pinout, Bağlantı ve TC4426 Farkı

TC4427, Microchip'in iki kanallı, evirmeyen (non-inverting) ve 1,5 A tepe akımlı MOSFET sürücü entegresidir. 4,5-18 V ile beslenir ve Arduin...

Devamını oku →