STM32 UART DMA İLE UZUNLUĞU BİLİNMEYEN VERİ PAKETLERİNİ ALMAK

STM32 ile USART üzerinden veri alış verişi yapmanın çeşitli yöntemleri var. En basitinden yoklama (polling) yöntemi, biraz daha geliştirilmiş bir yöntem tercih ediyorsak kesme (interrupt) yöntemi kullanılabiliyor. Daha önce bu yöntemleri ve ring buffer kullanarak veri alış verişini anlattığım yayınlarım olmuştu.


Bu sefer, HAL kütüphanesinden özel bir fonksiyonu kullanarak DMA modunda alış için uyarladığım ring buffer tekniğini anlatacağım. Bu yeni algoritma UART DMA kesmelerinden yararlanarak CPU yu neredeyse hiç meşgul etmeden çalışan basit ve verimli bir çözüm. Bundan sonraki projelerimde bu kütüphaneyi kullanmayı düşünüyorum.

Continue reading “STM32 UART DMA İLE UZUNLUĞU BİLİNMEYEN VERİ PAKETLERİNİ ALMAK”

STM32 CUBE IDE – KUSURLAR (BUG)

STM32 çalışmalarımda STM32 Cube IDE platformunu kullanıyorum. ST Microelectronics bunu geçtiğimiz yıllarda bünyesine kattığı Atollic True Studio ile CubeMX yapılandırıcısını birleştirerek oluşturdu. Müşterilerinin kullanımına ücretsiz olarak sunuyor.

Fakat yeni bir ürün, zaman zaman, hatta bazıları ile çok sıklıkla, sorunlarla karşılaşıyorum. Bunların kendimden kaynaklanmadığını anlayana kadar epey ter döküyorum. Zira çoğu ilk defa benim başıma gelmiş oluyor. Forumlarda paylaşıyoruz ve ST den yeni sürümlerde çözüm bekliyoruz.

Bu arada hayat devam ettiğinden kendi çözümlerimizi üretmek zorunda kalıyoruz. Bu yayında karşılaştığım ve henüz çözüm getirilmemiş olan kusurları, bunları aşmak için yaptıklarımı anlatacağım.

Bunları değerlendirirken Mac OS kullandığımı (Ekim 2020 itibariyle Catalina Version 10.15.6) dikkate alınız. Cube IDE sürümü de : 1.4.2 Build: 7643_20200813_1322 (UTC). Windows’ta da durum farklı olabilir.

Continue reading “STM32 CUBE IDE – KUSURLAR (BUG)”

STM32 cubeIDE- SWV İLE HATA AYIKLAMA-2

STM32 SWV – DEĞİŞKEN DEĞERLERİNİN İZLENMESİ

SWV serimizin birinci bölümünde bir kod parçacığının çalışma süresini ölçmeyi anlatmıştım. Bunun için süresini ölçeceğimiz sürecin başında ve sonunda ST Link’e birer karakterlik işaret gönderip SWV trace log konsolu üzerinde bunların zamanları arasındaki farkı hesaplıyorduk. Zaman ölçümü böyle.

Bu bölümde yine SWV araçlarını kullanarak program değişkenlerinin değerlerindeki değişiklikleri izlemeye çalışacağız. Bunların değerlerinin zaman eksenindeki değişimini osiloskop benzeri bir grafik pencere üzerinde görüntüleyeceğiz.

Continue reading “STM32 cubeIDE- SWV İLE HATA AYIKLAMA-2”

STM32 cubeIDE-SWV İLE HATA AYIKLAMA-1

STM32 cube IDE platformu üzerinde proje oluşturarak gömülü uygulama geliştirme konularında epeyi yol aldık. Artık sıra biraz daha ileri konulara geldi.

Bu başlangıç, bundan böyle hayatımızı daha zorlaştıracak işlere el atacakmışız izlenimi veriyor ama öyle değil. Tersine, şimdiye kadar kullanmadığımız bazı teknikleri öğrenip, çalışmalarımızı kolaylaştıracak yeni araçlar keşfedeceğiz.

Bu yayında ARM Cortex M çekirdeğinin SWV ve ITM araçlarını kullanmayı öğreniyoruz. Bu serinin ilk bölümünde konuya giriş yapıp, başlangıç ayarlarına ve bir kod blokunun çalışma süresinin SWV ile nasıl ölçülebileceğine bakacağız.

Continue reading “STM32 cubeIDE-SWV İLE HATA AYIKLAMA-1”

STM32 CubeIDE – SWD FLASH PROBLEMİNİ AŞMAK

STM32 Projelerimde ST Link V2 yi SWD (Serial Wire Debug) modunda çalıştırarak kullanıyorum.

ST Link ve STM32 yi elime ilk aldığım dönemlerde, kullandığım geliştirme kitlerinden bir kaçı aniden program yüklenemez hale gelmişti. Yükleme yapmaya kalkıştığımda “No device found on target” şeklinde bir mesaj almaya başlamıştım. Ben de “bunlar bozuldu” diyerek bu kitleri bir kenara koymuştum.

Sonradan öğrendim ki, bozulmamışlar. Hatalı bir kod yükleyerek ben kilitlemişim. Bunları tekrar hayata döndürmenin basit bir yöntemi varmış. Aşağıda anlatacağım bu yöntemi önceleri ST Link Utility adlı uygulamayı kullanarak uyguluyordum. Ama artık MacOS ye geçtim, bu uygulama ise sadece Windows için var. O halde aynı işlemi STM32 CubeIDE platformu üzerinden yapmanın bir yolu olmalı. İşte aşağıda o yöntemi anlatıyorum.

Continue reading “STM32 CubeIDE – SWD FLASH PROBLEMİNİ AŞMAK”

STM32 CubeIDE – PROJEYE LINK VEREREK HARİCİ DOSYA EKLEMEK

Oluşturduğumuz yeni projelere daha önceki projelerimizden aldığımız dosyaları kopyala-yapıştır tekniği ile eklemeyi önceki yayınlarımda anlatmıştım. “Programa kaynak kodu eklemek” başlıklı yazım için burayı tıklayabilirsiniz. Aslında burada da, yazının amacı bu olmamakla birlikte, aynı işi kopyala yapıştır yöntemi ile değil de Import fonksiyonu ile yapmayı anlatmış oluyorum.

Bir süre sonra aynı kaynak kodlarını bir çok programımızda kullanır duruma geliyoruz. Ancak bu durumda karşımıza ciddi bir sorun çıkıyor. Türlü çeşitli yerlere kopyaladığımız bu kod bloklarında zaman zaman değişiklikler, iyileştirmeler yapmamız gerekiyor. Bu da aynı adı taşıyan kaynak kodların çeşit çeşit versiyonları ile ortalığa saçılmasına yol açıyor. Hangisi en son sürüm, hangisinde hangi hatalar hala duruyor bilemez hale geliyoruz.

Continue reading “STM32 CubeIDE – PROJEYE LINK VEREREK HARİCİ DOSYA EKLEMEK”

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 – 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”

NUCLEO ÜZERİNDE TFT

Türlü çeşitli TFT grafik ekranları uzun zamandır STM32F103 mikrokontroller ile kullanıp duruyordum. Bunlardan bir bölümü SPI arayüzlü, kimisi de 8 bit paralel girişli ekranlar.

Kendi tasarladığım STM32 geliştirme kitlerinde ekran konnektörlerinde data pinlerini aynı porttan sıralı olarak, B8 B9 … B15 olarak verip basit bir algoritma ile sürüyorum. Ama, elimdeki hazır geliştirme kitlerinde ekrana giden bağlantılar böyle aynı porttan ve sıralı olmuyorlar.

Malzeme kutularımda yıllardır durmakta olan Nucleo kitine TFT takıp kullanmaya kalkışınca, ekran sürücü kodlarımı revize temek zorunda kaldım. Bu yayının konusu bu.

Continue reading “NUCLEO ÜZERİNDE TFT”