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ı
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.
- PA9 pini
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.
- STM32CubeIDE ayarlarında ve Proteus Virtual Terminal’de baud hızı
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.
- System Core > GPIO menüsünde, GPIO_PIN_0 pini
Proteus Ortamında Yapılan Ayarlar
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.
Güç Ayarları
- Proteus’ta Configure Power Rails menüsünden:
- VCC/VDD:
3.3V
, - VEE:
0V
olarak ayarlanır.
- VCC/VDD:
- Proteus’ta Configure Power Rails menüsünden:
Virtual Terminal Ayarları
- Baud hızı:
115200 Bit/s
. - Veri formatı: 8-bit veri, 1 stop biti, parite yok.
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.- &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, 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 üzerindenvar
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.
Hiç yorum yok