Bu bölümde, F401-RE mikrodenetleyici kart ile bilgisayar arasında seri port üzerinden veri alışverişi yapmamızı sağlayan programı Mbed ve STM32CubeIDE yoluyla yazmaya çalışacağız.
Seri haberleşme, dijital verilerin aktarılması olarak tanımlanabilir.
Senkron ve asenkron haberleşme
Senkron haberleşmede veri ile birlikte bir de saat (clock) sinyali kullanılır. Veri saat sinyali ile eş zamanlı olaral iletilir. İletişim için 2 hat gerekir. Asenkron iletişimde ise saat (clock) sinyali yoktur.
USART (Universal (syncronous) Asyncronous Receiver Transmitter)
Mikrodenetleyicilerde yaygın olarak kullanılan bir seri haberleşme birimidir.
USART veri formatı aşağıdaki özelliklere sahiptir:
USART özellikleri aşağıda gösterilmektedir:
Baud rate kavramı özellikleri aşağıda gösterilmektedir:
Uart-usb converter kartlar ile mikrodenetleyici le bilgisayarı haberleştirebiliriz. Bu kart bilgisayar üzerinde sanal bir com port oluşturarak bu işlemi yapar. F-401RE kartı üzerinde (üst kısım) bu işlemi yapan bir bölüm vardır.
Mikrodenetleyici üzerinden seri port yoluyla bilgisayara bir veri gönderdikten sonra bu verileri görüntülemek için bir terminal yazılımına ihtiyacımız olacaktır. TeraTerm, CoolTerm vb. yazılımlar seri iletişim kurmak ve veriyi PC ekranına yazmak için kullanılır.
Seri haberleşme ile ilgili programları kullanmadan önce, seri port üzerinden yapılan haberleşmeyi görmemizi sağlayan Tera Term adlı programı sitesinden indirelim ve bilgisayarımıza kuralım.
1. Önce buradaki talimatları uygulayarak, Mbed OS online geliştirme ortamında yeni bir program oluşturalım.
2. main.cpp dosyası içine aşağıdaki kodları yazarak kaydedelim:
#include "mbed.h"
Serial pc(USBTX, USBRX, 115200);
int id = 0;
int main() {
while (1) {
pc.printf("Data send: %d\n", id++);
wait(1.0); // 1 saniye bekleme
}
}
3. Programı derleyelim ve elde ettiğimiz .bin uzantılı dosyayı bilgisayarımıza kaydedelim.
4. Bilgisayarımıza kaydettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.
5. Windows Explorer'da kartı temsil eden sürücüye kopyaladığımız .bin uzantılı dosya kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler ve .bin uzantılı dosya silinir.
6. Program çalışmaya başlar.
7. Verileri ekranda göstermek için, Tera Term programını çalıştıralım. Karşımıza gelen pencerede, Serial seçeneğini ve port bölümünde kartımızın bağlı olduğu sanal seri portu seçip OK butonuna tıklayalım.
8. Ekranda anlamsız karakterler gösterilecektir. Bunu düzeltmek için, Tera Term programının menüsünden Setup - Serial port... seçeneğine tıklayalım:
9. Speed seçeneğini 115200 olarak ayarlayalım ve New setting butonuna tıklayalım:
10. Ekrandaki karakter dizisi başlangıç sütunu kayık olarak gözükecektir. Bunu düzeltmek için, Tera Term programının menüsünden Setup - Terminal... seçeneğine tıklayalım:
11. Receive seçeneğini AUTO olarak ayarlayalım ve OK butonuna tıklayalım:
12. Tüm karakterler düzgün bir şekilde görüntülenecektir:
1. Önce buradaki talimatları uygulayarak, STM32CubeIDE ortamında yeni bir proje oluşturalım.
2. main.c dosyasının içindeki kodları aşağıdaki şekilde düzenleyerek kaydedelim:
#include "main.h"
#include <stdio.h>
int main(void)
{
/* USER CODE BEGIN 1 */
char cdizi[40];
int id=0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_UART_Transmit(&huart2, (uint8_t*) cdizi, sprintf(cdizi, "Data send: %d\n", id++), 100);
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
3. Programı derleyelim.
4. Doğrudan Run butonuna basarak veya elde ettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.
5. Program kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler.
6. Program çalışmaya başlar.
7. Tera Term programının çalışması ile ilgili olarak, Mbed örneğinin 7-12 maddeler arasındaki işlemleri uygulayalım.