STM32L432'ye Giriş: Genel Bakış, Teknik Özellikler, Uygulamalar ve GPIO Kontrol Örneği

STM32L432 Genel Bakış

STM32L432, STMicroelectronics tarafından geliştirilen ultra düşük güç tüketimli bir mikrodenetleyicidir. ARM Cortex-M4 çekirdeğine dayanan bu mikrodenetleyici, enerji verimli gömülü sistemler için tasarlanmıştır. Güçlü hesaplama yeteneklerini düşük güç tüketimiyle birleştiren bu mikrodenetleyici, IoT cihazları ve taşınabilir uygulamalar için idealdir.

Teknik Özellikler

STM32L432 serisi aşağıdaki temel teknik özellikleri sunar:

  • İşlemci Çekirdeği:

    • ARM Cortex-M4 32 bit RISC işlemci
    • Tek döngülü çarpma ve donanım bölme desteği ile 80 MHz'e kadar çalışır
    • Entegre Kayan Nokta Birimi (FPU) ve Dijital Sinyal İşleme (DSP) komutları
  • Bellek:

    • 256 KB Flash (çip üzerinde programlanabilir bellek)
    • 64 KB SRAM
    • Harici bellek genişletme desteği
  • Düşük Güç Özellikleri:

    • Çoklu düşük güç modları: Uyku, Durdurma ve Bekleme
    • Dinamik güç tüketimi: 80 MHz çalışmada sadece 37 µA/MHz
    • Durdurma modu akımı: yaklaşık 250 nA
    • Geniş voltaj aralığı: Dahili güç yönetimi ile 1,8 V ila 3,6 V
  • Arayüzler ve Çevre Birimleri:

    • GPIO: 51 adede kadar genel amaçlı giriş/çıkış pini
    • İletişim arayüzleri: USART/UART, I2C, SPI, CAN, USB 2.0 (Tam Hız)
    • Zamanlayıcılar: Genel amaçlı, düşük güç ve gelişmiş zamanlayıcılar (PWM çıkışı)
    • ADC/DAC: 12 bit ADC (16 kanal) ve 12 bit DAC
    • Yerleşik osilatör ve gerçek zamanlı saat (RTC) desteği
  • Paket Seçenekleri:

    • Farklı boyut gereksinimlerine uyacak şekilde çeşitli paketlerde (ör. LQFP, UFBGA, WLCSP) mevcuttur.

Uygulama

Düşük güç tüketimi ve yüksek performansı sayesinde STM32L432, aşağıdaki alanlarda yaygın olarak kullanılmaktadır:

  • IoT Cihazları:

    • Akıllı ev sistemleri (ör. akıllı kilitler, sıcaklık ve nem sensörleri)
    • Giyilebilir cihazlar (ör. fitness takipçileri, sağlık izleme ekipmanları)
  • Endüstriyel Kontrol:

    • Veri toplama ve kontrol sistemleri
    • Akıllı sayaçlar ve sensör düğümleri
  • Taşınabilir Cihazlar:

    • Pille çalışan cihazlar (ör. taşınabilir tıbbi aletler)
    • Düşük güç tüketimli ekranlar (ör. e-ink ekran denetleyicileri)
  • Tüketici elektroniği:

    • Oyuncaklar ve robotik
    • Akıllı uzaktan kumandalar
  • Güvenlik ve Şifreleme Uygulamaları:

    • Güvenli iletişim için donanım AES şifreleme desteği

Avantajlar

  • Düşük Güç Tüketimli Tasarım: Uzun çalışma ömrü gerektiren pille çalışan cihazlar için idealdir.
  • Uygun Maliyetli: Rekabetçi bir fiyatla mükemmel performans sunar.
  • Sağlam Geliştirme Ekosistemi: STM32CubeMX, STM32CubeIDE ve ST'nin kapsamlı kütüphane ve araç seti tarafından desteklenir.
  • Güvenilirlik: Yüksek sıcaklık toleransı ve geniş çalışma voltaj aralığına sahip endüstriyel sınıf tasarım.

NUCLEO-L432KC Kartı Kullanılarak GPIO Kontrolü

Bu örnekte, STM32L432KC kartındaki LED devresinin temel ilkelerini tanıtacak, STM32CubeMX kullanarak yeni bir proje oluşturacak ve LED'in yanıp sönmesini sağlamak için gerekli programlama tekniklerini öğreneceğiz.

NUCLEO L432KC board STM32L432KCU6
NUCLEO-L432KC board STM32L432KCU6

Gerekli Malzemeler

  • NUCLEO-L432KC geliştirme kartı
  • Güç ve iletişim için USB kablosu
  • LED (harici LED gerekiyorsa)
  • Direnç (ör. harici LED için 220Ω)
  • STM32CubeMX yazılımı
  • MDK5 (Keil) veya STM32CubeIDE gibi geliştirme ortamı

Adım 1: STM32CubeMX'i Kullanarak Yeni Bir Proje Oluşturun

Öncelikle, lütfen STM32L432KC MCU'yu seçin ve yeni bir STM32CubeMX projesi oluşturun.

Create a new project from MCU STM32L432KC
Create a new project from MCU STM32L432KC

Ardından, STM32L432KC için osilatörü yapılandıracağız. Şemada görüldüğü gibi, harici düşük hızlı kristal osilatör PC14 ve PC15'e bağlanmıştır. Bu GPIO'ları "Kristal/Seramik Rezonatör" modunda yapılandırın.

Configuration crystal ceramic resonator
Configuration crystal ceramic resonator

Osilatör Modlarının Açıklaması:

BYPASS Saat Kaynağı: Yonga, dahili saat sürücü bileşenini atlayarak doğrudan harici bir saat sinyalini kullanır.

Kristal/Seramik Rezonatör: MCU'nun dahili saat sürücü devresiyle birlikte harici bir pasif kristal kullanır; bu, daha yüksek hassasiyet sağlar ancak başlatma süresi gerektirir.

LED için GPIO'yu yapılandırın. PB3'ü aşağıdaki parametrelerle "GPIO_Output" moduna ayarlayın:

  • Push-pull çıkışı
  • Varsayılan düşük seviye çıkış (LED başlangıçta kapalı)
  • Pull-up veya pull-down direnci yok

Saati yapılandırın. İşlemi basitleştirmek için sistem saatini 80 MHz olarak ayarlayın; böylece STM32CubeMX gerekli ayarları otomatik olarak yapılandırabilir.

Clock configuration 80 MHz
Clock configuration 80 MHz

Proje arayüzünde kod oluşturma tercihlerini ayarlayın:

  • Projeye bir ad verin ve geliştirme aracını seçin (ör. MDK5).
  • Ayrı .c dosyalar oluşturmak için "Çevre birimlerini şu şekilde başlat" seçeneğini etkinleştirin (ör. GPIO, I2C, SPI).
STM32CubeMX project settings name location toolchain IDE
STM32CubeMX project settings (name, location, toolchain IDE)
Setting code generator on STM32CubeMX
Setting code generator on STM32CubeMX

Tüm proje seçeneklerini ayarladıktan sonra projeyi oluşturabiliriz. STM32CubeMX'i ilk kez kullanıyorsanız, aşağıdaki yazılım paketlerini indirmeniz gerekir:

Download stm32cube software package
Download stm32cube software package

Ardından kod oluşturmaya devam edin ve oluşturma işlemi başarıyla tamamlandıktan sonra proje klasörünü açın.

Successfully generated stm32l432kc project code
Successfully generated stm32l432kc project code

Bu klasörde hem STM32CubeMX hem de MDK5 proje dosyaları bulunacak ve bu sayede STM32CubeMX'te kolayca değişiklikler yapılabilecektir. Artık MDK-ARM klasörü altındaki "NUCLEO-L432KC(LED_Blinking)" projesini başlatabiliriz.

STM32CubeMX project folder
STM32CubeMX project folder

Adım 2: LED'in Yanıp Sönmesini Sağlayan Kodu Yazın

STM32 HAL dosyalarında gerekli işlevleri bulun:

  • HAL_GPIO_TogglePin() ve HAL_GPIO_WritePin() içinde stm32l4xx_hal_def.h.
  • HAL_Delay() içinde stm32l4xx_hal.h.

LED'in 2 saniyede bir yanıp sönmesini sağlamak için aşağıdaki kodu çalıştırın:

Add led blinking code to main.c file
Add led blinking code to main.c file
				
					/* USER CODE BEGIN WHILE */
while (1)
{
  // Method 1: Using HAL_GPIO_TogglePin()
  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);
  HAL_Delay(2000);

  // Method 2: Using HAL_GPIO_WritePin()
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET); // Turn off for 2 seconds
  HAL_Delay(2000);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);   // Turn on for 2 seconds
  HAL_Delay(2000);
}
/* USER CODE END WHILE */

				
			

Kodu derleyin ve hata olmadığından emin olun.

Rebuild all target files for project NUCLEO L432KCLED Blinking
Rebuild all target files for project NUCLEO-L432KC(LED_Blinking)

3. Adım: Yazma Parametrelerini Yapılandırma

NUCLEO-L432KC kartında entegre bir STLINK/V2-1 hata ayıklayıcı ve programlayıcı bulunmaktadır.

  • İndirme işlemi için ST-LINK kullanılacak şekilde projeyi yapılandırın.
  • STM32CubeMX arayüzünde gösterildiği gibi yazma parametrelerini ayarlayın, ardından programı indirin.
Configure target options and download program for NUCLEO L432KC LED Blinking
Configure target options and download program for NUCLEO-L432KC (LED_Blinking)

4. Adım: Programı yükleyin

Derlenmiş programı NUCLEO-L432KC kartına yükleyin ve LED'in yanıp sönmesini izleyin.

Download code to flash memory
Download code to flash memory

Paylaş:

Scroll to Top

Instant Quote