STM32F401 USB Kullanımı - Seri Port

👤 Yazar: ozcan 📅 Tarih: 27.06.2026 06:10 👁️ Görüntüleme: 16

STM32F401 USB Kullanımı

STM32F401 mikrodenetleyicisi üzerinde USB kullanımı, genellikle STM32CubeMX ve HAL Kütüphanesi (Hardware Abstraction Layer) kullanılarak oldukça pratik bir şekilde gerçekleştirilir. STM32F401, USB OTG (On-The-Go) Full Speed (FS) donanımına sahiptir. Bu sayede cihazınızı ister bir bilgisayara bağlanabilen bir çevre birimi (Device), ister flash bellek gibi cihazları okuyan bir ana bilgisayar (Host) olarak yapılandırabilirsiniz.

En yaygın kullanım senaryosu olan USB Device - Virtual COM Port (Sanal Seri Port) kurulumunu adım adım inceleyelim.


1. STM32CubeMX ile Yapılandırma

Projeyi başlatmak ve gerekli kodları üretmek için STM32CubeMX üzerinde şu ayarları yapmalısınız:

A. Clock (Saat) Ayarları

USB biriminin doğru çalışabilmesi için 48 MHz değerinde kararlı bir saat sinyaline ihtiyacı vardır.

  • RCC menüsünden HSE (High-Speed External) seçeneğini Crystal/Ceramic Resonator yapın (Kartınızda harici kristal olduğunu varsayarak).
  • Clock Configuration sekmesine geçin. USB kaynak saatini (48 MHz Clock) tam olarak 48 MHz olacak şekilde ayarlayın. (Gerekirse ana CPU hızını 84 MHz yapabilirsiniz).

B. USB Donanımını Aktif Etme

  • Sol menüden Connectivity -> USB_OTG_FS seçeneğine gelin.
  • Mode kısmını Device_Only olarak ayarlayın.
  • (Opsiyonel) Eğer VBUS (güç algılama) pinini kullanmayacaksanız alt taraftaki Activate_VBUS seçeneğini devre dışı bırakabilirsiniz.

C. USB Sınıfını (Class) Seçme

  • Sol menüden Middleware -> USB_DEVICE seçeneğine gelin.
  • Class For FS IP kısmından Communication Device Class (Virtual Port Com) seçeneğini seçin.
  • Bu mod, STM32'nizin bilgisayara bir COM portu (seri port) olarak görünmesini sağlar.
İpucu: Ayarlar bittiğinde sağ üstten Generate Code diyerek projenizi (Keil, STM32CubeIDE vb. için) üretin.

2. Kodlama ve Temel Fonksiyonlar

Kod üretildikten sonra, USB üzerinden veri alıp göndermek için HAL kütüphanesinin hazır fonksiyonlarını kullanacağız. USB fonksiyonları genellikle usbd_cdc_if.c ve usbd_cdc_if.h dosyaları içinde yer alır.

Veri Gönderme (Transmit)

Bilgisayara veri göndermek için CDC_Transmit_FS fonksiyonu kullanılır.

/* main.c içinde kullanımı */
#include "usbd_cdc_if.h" // USB kütüphanesini dahil edin

char mesaj[] = "Merhaba STM32F401 USB Dünyası!\r\n";

while (1)
{
    // Veriyi USB üzerinden gönder (Veri, Veri Boyutu)
    CDC_Transmit_FS((uint8_t*)mesaj, strlen(mesaj));
    
    HAL_Delay(1000); // 1 saniye bekle
}

Veri Alma (Receive)

Bilgisyardan bir veri geldiğinde, bu veri otomatik olarak usbd_cdc_if.c dosyasındaki CDC_Receive_FS fonksiyonuna düşer. Gelen veriyi işlemek için bu fonksiyonun içini düzenlemeniz gerekir.

/* usbd_cdc_if.c dosyası içindeki ilgili fonksiyon */
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
  /* User code start 6 */
  
  // Örnek: Gelen veriyi aynen geri gönder (Echo)
  CDC_Transmit_FS(Buf, *Len);
  
  // Veya gelen veriyi kendi oluşturduğunuz bir global değişkene kopyalayabilirsiniz.

  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, Buf);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  return (USBD_OK);
  /* User code end 6 */
}

3. Dikkat Edilmesi Gereken Kritik Noktalar

  • Donanım Bağlantıları: STM32F401 USB pinleri sabittir.
    • PA11 -> USB_DM (Data Minus)
    • PA12 -> USB_DP (Data Plus)
    Eğer hazır bir geliştirme kartı (örneğin Blackpill F401) kullanıyorsanız, bu pinler zaten yerleşik USB Tip-C / Mikro USB konnektörüne bağlıdır.
  • Sürücü (Driver) İhtiyacı: Windows 10 ve sonraki sürümler STM32 Virtual COM portunu genellikle otomatik olarak tanır. Ancak eski bir işletim sistemi kullanıyorsanız veya aygıt yöneticisinde sarı ünlem görüyorsanız STMicroelectronics Virtual COM Port Driver yazılımını bilgisayarınıza kurmanız gerekir.
  • Yığın (Stack) Boyutu: USB işlemleri hafızada yer kaplar. Eğer kodunuz anlamsız şekilde kilitleniyorsa, CubeMX içindeki Project Manager -> Linker Settings kısmından Minimum Stack Size değerini 0x400 yerine 0x800 veya 0x1000 yaparak yığın boyutunu büyütebilirsiniz.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1