STM32 ve CubeMX Programı ile UART Protokolünü Kullanmak

Önceki yazılarımızda USART birimine giriş yapmış ve HAL kütüphanesinin UART sürücüsünü incelemiştik. Orada sürücü tanımlamalarını, değerlerini ve fonksiyonlarını anlasak da bunları ilk seferde eksiksiz kullanıp ilk programımızı doğru olarak çalıştırmamız pek beklenemez. Neyse ki CubeMX programı bize bu noktada yardımcı olacak ve olması gereken kodların bize nasıl olacağını gösterecek. Öncelikle CubeMX programını açıyoruz ve her zaman olduğu gibi STM32F3 Discovery kartına yönelik bir proje oluşturuyoruz veya var olan projeyi açıyoruz.

Burada önceden hazırladığımı mikrodenetleyicinin ayaklarını görmekteyiz. Sağ tarafta yer alan “Pinout view” istenirse görsel olmayan “System view” olarak değiştirilebilir. Bu kullanıcıya kalmış bir durumdur. Burada sadece kullanıcı düğmesinin bağlı bulunduğu PA0 ayağı giriş olarak tanımlanmış ve led ayakları çıkış olarak tanımlanmıştır. Diğer I2C ve SPI ile bağlanan birimleri kodda kalabalık yapmasın diye devre dışı bıraktık. Siz projeyi kendiniz istediğiniz gibi düzenleyebilirsiniz. Üretilen koda farklılık olsa da biz konumuzla ilgili kısmı inceleyeceğiz.

STM32F3 denetleyicisinde USART birimini etkinleştirip tanımlarını yapmak için sol taraftaki “Connectivity” sekmesinden kullanmak istediğimiz USART/UART birimini seçmemiz gereklidir. Biz USART1 birimini seçiyoruz. Bunu seçmemizin sıradan başka özel bir sebebi yoktur.

Bu birimi seçtikten sonra ikinci pencerede “Mode” adında açılır pencere yer almaktadır. Burada USART1 biriminin modlarını seçme imkanımız vardır. Modlar sırasıyla şöyledir,

  • Asenkron
  • Senkron
  • Tek Hat (Half Duplex)
  • Çokluişlemci iletişimi
  • IrDA
  • LIN
  • SmartCard
  • Kart saati ile SmartCard
  • ModBus

Biz standart asenkron modu seçeceğimiz için en baştaki seçeneğin seçiyoruz.

Burada RS232 ve RS485 için donanım akışı denetimi ayarlarını da görmekteyiz. Bu ayarların olduğunu bilmemiz şimdilik yeterlidir. USART1 biriminin modunu seçerek etkinleştirdiğimizde sağ tarafta ilgili ayaklar yeşil olarak gözükmektedir. Böylelikle hangi ayağın TX ve RX olduğunu bilme imkanımız olur.

PC4 ayağının TX, PC5 ayağının da RX olduğunu bir yere kaydedelim. Çünkü bir sonraki uygulamamızda bize lazım olacaktır. Şimdi ise biraz karmaşık görülen parametre ayarlarını incelemekle başlayalım. Orta alt pencerede yer alan parametre ayarları bizim yapacağımız basit uygulama için birkaç önemli ayarı ihtiva ediyor.

Burada Baud Rate yani saniyede aktarılan bit sayısı bizim bilmemiz gereken en önemli bilgilerden biridir.  Word length ise kelime uzunluğu olarak bir aktarımda eşlik biti dahil kaç bitlik verinin aktarılacağını ayarlar. Eşlik bitini “None” olarak devre dışı bıraktığımız için bir aktarımda 8-bit aktarılacaktır. Bu da istediğimiz şekildedir. Elimizde 32-bit mikrodenetleyici olsa da gerek eskiyle uyumluluk gerek de ASCII karakterlerin 8 bit olmasından dolayı USART iletişimde her iletimde yine 8-bit veri aktarılmaktadır. Daha önce datasheet ve HAL kütüphane kılavuzunu okurken bahsettiğimiz konuların burada karşımıza ayar olarak çıktığını görüyoruz. Bu ayarlara dokunmadan standart bir halde çalışması için sadece Baud oranını alıştığımız değere ayarlamak yeterlidir.

USART1 birimini kullanarak asenkron seri iletişimde bulunmak için sadece USART ayarlarını yapmak yeterli değildir. Mikrodenetleyicinin ayak ayarlarını da GPIO ile ilgili yazmaçlar ile yapmamız gerekir. Bu GPIO ayarlarının da otomatik olarak yapıldığını ve “Alternatif fonksiyon” seçeneğinin seçildiğini görmekteyiz.

Burada kesme kullanacaksak NVIC ayarlarını DMA kullanacaksak da DMA ayarlarını denetlemek lazımdır. Biz bunları kullanmayıp normal program akışında veri gönderiminde bulunacağımız için bunlara dokunmayacağız. Ayrıca bir diğer ayarı ise saat ayarlarında görmekteyiz.

Burada USART1 biriminin saat kaynağı SYSCLK, HSI, LSE ve PCLK2 olarak seçilebilir.

Şimdi projeyi üretip TrueStudio’da kodları inceleyerek devam edelim.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.