Son Yazılar

STM32CubeIDE ve Proteus ile STM32 UART Haberleşme Protokolü Kullanımı


UART (Universal Asynchronous Receiver Transmitter), seri haberleşme protokollerinden biridir. Mikrodenetleyiciler arasında veya mikrodenetleyici ile bilgisayar gibi cihazlar arasında veri iletişimi için yaygın olarak kullanılır. UART, iki kablo (TX ve RX) ile çalışır:

  • TX (Transmit): Veriyi gönderir.
  • RX (Receive): Veriyi alır.

UART, saat sinyali kullanmadan (asenkron) çalıştığı için, veri gönderimi sırasında hem gönderici hem de alıcı cihazların aynı baud hızında ayarlanması gereklidir. Bu yazıda, STM32 mikrodenetleyicisi üzerinde UART haberleşmesini STM32CubeIDE kullanarak yapılandıracağız ve Proteus Virtual Terminal üzerinden simüle edeceğiz.

STM32CubeIDE ve Proteus ile UART Yapılandırması

STM32CubeIDE'de Pinout & Configuration Ayarları

  1. USART1'in Asenkron Modda Aktifleştirilmesi

    • Pinout & Configuration sekmesinden Connectivity > USART1 > Mode: Asynchronous seçilir.
    • Bu işlem sonucunda:
      • PA9 pini USART1_TX,
      • PA10 pini USART1_RX olarak atanır.
  2. Baud Hızı Ayarı

    • STM32CubeIDE ayarlarında ve Proteus Virtual Terminal’de baud hızı 115200 Bit/s olarak seçilir. Baud hızının her iki ortamda da aynı olması gereklidir.
  3. PA0 Pininin Buton Olarak Ayarlanması

    • System Core > GPIO menüsünde, GPIO_PIN_0 pini GPIO_Input olarak yapılandırılır.
    • Pull-up direnci aktif hale getirilir (GPIO Pull-up). Bu, butonun kararlı çalışmasını sağlar.

Proteus Ortamında Yapılan Ayarlar



  1. Virtual Terminal Bağlantıları

    • STM32'nin PA9 (USART1_TX) pini, Virtual Terminal'in RXD girişine bağlanır.
    • PA10 (USART1_RX) pini, Virtual Terminal'in TXD çıkışına bağlanır.
  2. Güç Ayarları

    • Proteus’ta Configure Power Rails menüsünden:
      • VCC/VDD: 3.3V,
      • VEE: 0V olarak ayarlanır.
  3. Virtual Terminal Ayarları

    • Baud hızı: 115200 Bit/s.
    • Veri formatı: 8-bit veri, 1 stop biti, parite yok.
Kullanılan Kodlar


Bu bölümde bir mesaj tanımlanmıştır. uint8_t var[] değişkeni, UART üzerinden gönderilecek metni içerir. Mesajın sonunda \r\n karakterleri bulunur; bu, satır başı ve satır sonu anlamına gelir ve Virtual Terminal'de mesajın düzgün görünmesini sağlar.


Bu satır, UART üzerinden mesajın gönderilmesini sağlar:

HAL_UART_Transmit fonksiyonu, UART protokolüyle veri gönderimi için kullanılır.
Parametreler:
  • &huart1: UART1 modülü üzerinden haberleşme yapılacağını belirtir.
  • var: Gönderilecek mesajın adresi.
  • sizeof(var): Gönderilecek mesajın boyutu (byte cinsinden).
  • 100: Timeout süresi (ms).
Bu kod, program çalışır çalışmaz "Uart Calisiyor\r\n" mesajını Virtual Terminal'e gönderir.



Bu kod, PA0 pinine bağlı bir butonun durumuna göre UART üzerinden mesaj göndermeyi sağlar:

  • while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 1);: Buton serbest durumdayken (1), kod bu satırda bekler. Butona basıldığında (0), döngü sona erer ve diğer işlemler yapılır.
  • HAL_UART_Transmit(&huart1, &var[0], 16, 100);: UART üzerinden var dizisindeki mesaj, 16 karakter uzunluğunda olacak şekilde gönderilir.
  • HAL_Delay(500);: 500 ms bekleme süresi, mesajın sürekli tekrar etmesini engeller.

Bu yapı, her buton basıldığında UART ile bir mesajın gönderilmesini sağlar.




Bu yazıda, STM32CubeIDE kullanarak STM32F103C6 mikrodenetleyicisi üzerinde UART haberleşmesinin nasıl yapılandırılacağını ve Proteus Virtual Terminal ile test edileceğini öğrendik. UART, STM32 projelerinde cihazlar arası iletişim sağlamak için temel bir protokoldür ve bu örnekle, buton tetikli bir UART uygulamasını başarıyla gerçekleştirmiş olduk.


Hiç yorum yok