STM32 – TFT GRAFİK İNSAN MAKİNA ARAYÜZÜ LwGui

Projelerin çoğunda sistemimiz kullanıcısından bilgi girişi ya da bazı seçimler yapmasını ister. Bunu teknik adı ile “İnsan Makina Arayüzü – Human Machine Interface HMI” olarak andığımız sistem bölümleri üzerinden yaparız.

HMI dediğimiz, modern cihazların albenisini ve kullanışlılığını belirleyen önemli bir unsurdur. Basit bir tuş takımı ile, bazı LED lerle geri bildirim yapan HMI larla başlayıp, gayet şık dokunmatik, animasyonlu grafik ekranlara kadar geniş bir yelpaze söz konusu.

Bu iş için MCU tedarikçilerinin sunduğu çok yetenekli kütüphaneler var. Embedded Wizard gibi üçüncü parti geliştirme araçları da var. Bunların ücretsiz sürümleri ile bile dünyanın işini yapabiliyorsunuz. Ancak bu kütüphanelerin -en azından benim karşıma çıkanları- hep üst kategorideki yüksek kapasiteli mikro kontrolcülere yönelik, kapasite arsızı canavarlar.

Ben, mütevazi seviyedeki işlemciler ile kullanabileceğim bir kütüphane oluşturdum. Bunu CNC geliştirme çalışmalarımda karşılaştığım ihtiyaçları dikkate alarak yaptım. Gayet de tatminkar olduğunu düşündüğüm bir paket ortaya çıktı.

Bu yayının konusu bu; Selçuk Özbayraktar yapımı LwGui sistemi.

Continue reading “STM32 – TFT GRAFİK İNSAN MAKİNA ARAYÜZÜ LwGui”

STM32 – SD KARTTAN .bmp DOSYA OKUMAK ve TFT ÜZERİNDE GÖRÜNTÜLEMEK

KONUYLA İLGİLİ YAYINLAR

Aşağıdaki bölümlerde STM32F103 ile SD kart ve TFT ekran kullanımını görmüştük.

Önceki aşamalarda TFT Ekranın sürülmesi, SD kartın açılıp okunması gibi temel işlemleri ele almıştık. Şimdi sıra SD karttan .bmp uzantılı fotoğraf dosyalarının okunarak TFT ekranda görüntülenmesine geldi.

Continue reading “STM32 – SD KARTTAN .bmp DOSYA OKUMAK ve TFT ÜZERİNDE GÖRÜNTÜLEMEK”

STM32 – HAL KÜTÜPHANELERİ İLE UART INTERRUPT

Blog sitesini açtığımdan bu yana STM32 ile USART üzerinden veri alışverişini anlatmaya değer bir konu olarak düşünmemiştim. Ancak, internet üzerinde problemlerini paylaşan kişilerin yazdıklarına bakınca yaygın bir sorun olduğunu gördüm. Buna karşılık oluşturduğum çözümü paylaşmaya karar verdim.

Sorun şu : UART üzerinden ne zaman veri geleceğini bilmiyoruz. Herhangi bir anda gelebilir, ama biz o zamana kadar USART portu gözleyip beklemek istemiyoruz. Gelecek karakter dizisinin uzunluğunu da bilmiyoruz. Yani herhangi bir zamanda bir miktar karakter gelecek, son karakter hangisi onu da bilmiyoruz. Bu koşullar altında HAL kütüphaneleri ile işimizi halledeceğiz.

Bu yayında HAL kütüphaneleri kullanarak ürettiğim çözümü sunacağım. Yeni bir icat değil, HAL öncesinde alt seviye kodlama ile yaptığımız işin adaptasyonundan ibaret.

Continue reading “STM32 – HAL KÜTÜPHANELERİ İLE UART INTERRUPT”

STM32 – FATFS İLE SD KART UYGULAMALARI – 2

Bir önceki yayınımda STM32F103 ile SD Kart kullanmak üzere, SM32 CubeIDE platformunda bir projenin oluşturulmasını anlatmıştım. SD kartı okuyup yazan kod ayrıntılarına girmemiştim.

Bu yayında biraz daha program ayrıntılarına girerek, SD kart içeriğinin okunmasını, SD üzerindeki dosya ve klasörlerin TFT ekranda listelenmesini anlatacağım.

Continue reading “STM32 – FATFS İLE SD KART UYGULAMALARI – 2”

STM32-FATFS İLE SD KART UYGULAMALARI – 1

STM32 projelerimde yıllardır SD kart kullanırım. Özellikle CNC uygulamalarımda Gerber kodları makinaya vermek için iyi bir seçenek oluyordu. Ancak kullanmakta olduğum sürücü kodları, zamanında internetten bulduğum örnekler üzerinden geliştirmiştim. Bu kodlar yaptığım eklemeler ve değişiklikler ile yamalı bohçaya dönmüş bir durumda idi.

Son zamanlarda, STM32 cube IDE platformuna geçtiğimden beri bunları güncelleyip temize çekmeyi aklıma koymuştum. STM32 CubeIDE FATFS alt yapısını da entegre etmiş olduğundan bu işe el atmanın zamanı gelmişti ve geçiyordu.

Geçenlerde kolları sıvayıp işe giriştim ve derli toplu bir sonuca ulaştım. Bu yayında bunu nasıl yaptığımı anlatacağım.

Continue reading “STM32-FATFS İLE SD KART UYGULAMALARI – 1”

STM32 GPIO – ODR MI YOKSA BSRR MI KULLANMALI

STM32 mikrodenetleyicisinin GPIO çıkışlarına bir şeyler göndermek istediğimizde başvuracağımız iki farklı yöntem var.
ODR ya da BSRR kayıtçılarının seçtiğimiz bitlerine “1” ya da “0” yazarak bunlara karşı düşen GPIO pinlerini “1” ya da “0” konumlarına getirebiliyoruz.

Aynı işi yapmak üzere neden iki farklı kayıtçı kullanıldığı ilk bakışta çok belirgin değil. STM32 dokümantasyonundaki açıklamalar da tekrar açıklama gerektiriyor.

Hatta işi biraz daha kurcalarsak, aynı işi yapmak üzere kullanılabilecek iki kayıtçı daha, BRR ve BSR kayıtçılarının da olduğunu görüyoruz. Ben konuyu burada kendi cümlelerimle açıklamak istiyorum.

Continue reading “STM32 GPIO – ODR MI YOKSA BSRR MI KULLANMALI”

STM32 – GPIO YAZMA HIZI OPTİMİZASYONU

STM32 ye TFT bağlarken, paralel veri aktarımının SPI a göre çok yavaş kaldığını görerek şaşırmıştım. Halbuki tersi olmalıydı. Üstelik SPI’ı DMA ile kullanmadığımda dahi durum böyle idi. TFT SPI Hızları konusundaki yayınım için burayı tıklayabilirsiniz.

Halbuki benim elimde epeyce paralel arayüzlü TFT var, paralel TFT kullanan kitlerim ve projelerim var. Dahası, TFT nin dışında başka uygulamalar için de paralel veri aktarımı yapıp duruyorum. O halde bu konunun üzerine gitmeye değer diye düşündüm ve epeyi ilerleme kaydettim. Bu yayının konusu “STM32 de GPIO porta nasıl daha hızlı veri aktarılır” olacak.

Continue reading “STM32 – GPIO YAZMA HIZI OPTİMİZASYONU”

STM32 – TFT SPI HIZLARI

TFT ekranları kullanmaya ilk başladığımda internetten bulduğum örnek kodları kullanmıştım. Karşıma çıkan tüm örnekler ekrana text yazmak için aynı algoritmayı kullanıyorlardı.

Bu algoritmada bir satırdaki her bir karakter sıra ile alınarak ekrana çiziliyor, sonra yanındaki karaktere geçilerek devam ediliyordu. Bu yöntem ile bir süre çalıştıktan sonra, görüntüleme hızının pek çok uygulamam için yetersiz kaldığını gördüm. Örneğin, bir encoderi okurken ekranı güncellemeye yetişemiyordum. CNC programımda da koordinat değerlerini motor adım süreleri içinde ekrana yazmak mümkün olmuyordu. Ekran güncellemek için diğer işlemleri bekletmek söz konusu değil elbette.

Bu sıkıntılar karşısında ekrana daha hızlı veri göndermenin yollarını araştırarak algoritmamı geliştirdim. Esas olarak iki konuda yaklaşımımı değiştirdim.

Continue reading “STM32 – TFT SPI HIZLARI”

STM32 İLE SPI TFT NİN DMA MODU

TFT ekranların SPI girişli ve 8/16 bit paralel girişli tipleri var. Bunlar data girişleri, ayrıca veri akışını kontrol eden kontrol pinleri de var.

Bu yayının konusu olan SPI girişli TFT lere ilk el attığımda, TFT ye gönderdiğim her byte öncesinde ve sonrasında TFT_RS ve TFT_CS kontrol pinleri ile senkronizasyon sağlıyordum. Tabi ki bu çok yavaş ve CPU yu meşgul eden bir yöntem idi. Çok kısa bir süre içinde bu yöntemi terkederek, çoklu veri paketleri gönderdiğim, kesmeleri kullandığım yöntemlere geçtim. TFT de görüntüleme hızları konusunda katettiğim yolu anlattığım yayına ulaşmak için burayı tıklayınız.

TFT’yi daha da hızlandırıp CPU üzerindeki yükü olabildiğince hafifletmek için DMA -Direct Memory Access- yöntemini kullanmaya başladım. Bunun nasıl yapıldığını anlatacağım.

Continue reading “STM32 İLE SPI TFT NİN DMA MODU”