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”

SAMSUNG TV TAMİRİ

Onarım işleri ikide birde karşıma çıkıyor ama, galiba yazmaya değmez diye burada yayınlamıyorum. Onu yayınlama, bunu yayınlama, sonunda blog sitesi dinamizmini kaybediyor. Bununla başlayalım, bakalım arkasını getirebilecek miyim.

Geçenlerde oğlumun eski Samsung televizyonu bozulmuş. İçinden patlama sesleri gelip susmuş ve bir daha da açılmamış. LE32A550P1 RXXH kodlu, 7-8 yıllık bir LED tv.

Böyle arızaları severim, cihazın tamamiyle ölü olduğu durumları yani. Zira mefta gayet kararlı bir konumdadır. Gelir gider, bazan görünür, bazan kaybolur arızaların teşhisi zor olur.

Hele cihaz tamamiyle ölü durumda ise bakacağınız yer besleme devreleridir, nereden başlayacağınızı bilirsiniz.

Neyse TV nin arka kapağını açınca karşımıza aşağıdaki manzara çıkıyor:

Bu epey eski bir televizyon. Smart TV tipinde değil, aptal bir set.

Ama Samsung’un geleneksel TV tasarımına uygun düşüyor. Yeni modellerde ekran sürücü ayrı bir grafik modül üzerinde yer alıyor.

Neyse, arkası açık iken besleme verip duruma bir bakınca hiç hayat olmadığı tekrardan doğrulandı. Kontrol edince zaten sigortanın da atmış olduğunu gördüm.

Yüksek gerilimler nedeniyle dikkatli olmak gerekiyor, hele son aylarda tek göze kalmış olmamam nedeniyle benim süper dikkatli olmam lazım. Zira 3 boyutlu göremiyorum.

Besleme modülünü çıkartıp masamızın üzerine aldık. Sigortasının atmış olması arızanın mutlaka burada olduğu anlamına gelmiyor ama gene de %90 ın üzerinde bir ihtimalle suçluyu burada bulacağız.

Arıza bölgesi, silikon örtü temizlenip kaldırıldıktan ve hasarlı kondansatör çıkartıldıktan sonra, eriyip kopan köprü telleri de görünüyor.

Bir alkol banyosu ile temizliğin ardından sıkı bir göz muayenesi ile, giriş katı ile inverter bölgesi arasındaki yüksek gerilim disk kondansatörünün bir bacağının eriyerek kopmuş olduğunu, bunun hemen yanından geçen bir köprüleme telinin de sigorta gibi eriyerek açılmış olduğunu gördüm. Bunu görmek öyle kolay oldu sanmayın, pek çok devre elemanında yaptıkları gibi bu bölgeye de silikon dökerek üzerini örtmüşlerdi.

Silikonla yapılan bu tür sabitleme yöntemlerini hiç sevmiyorum. Arızaları gizlediği gibi, tozu kiri toplayıp, nemin de etkisiyle arızalara yol açıyor.
Burada silikonu bir yüksek gerilim dekuplaj kondansatörünün üzerine dökmüşlerdi. Bunun çatlak ve kıvrımları arasında biriken nemli toz da kısa devreye yol açmış.

Bu silikonla tesbit işini MOSFET lere de uyguluyorlar, son derece hassas olan gate ayakları da silikonla kaplanıyor. Neden böyle yaptıklarını anlayamıyorum. O tranzistorlar zaten soğutuculara vidalanıp bağlanmış durumda, daha da sabitlenmelerinde ihtiyaç yok ki.

Sonuçta, elimdeki hurda güç kaynaklarından söktüğüm bir 2200pF 2kV lık bir seramik disk kondansatörü kullanarak arızayı gidermiş oldum. Eriyip kopan teli de değiştirince TV miz çalıştı, bir on yıl daha hizmet eder artık.

Bu yayının sonu – Selçuk Özbayraktar Haziran 2020

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”

STM32 – HAL_UART TAKILMA SORUNU

STM32 Çalışmalarımda 4-5 aydan bu yana register seviyesinde programlamayı bırakıp HAL kütüphanelerini kullanmaya başladım. STM32 CubeIDE platformunu kullanıyorum.

Bu yeni ortama adapte olmak öyle bir kaç günde olmuyor. El attığım her yeni çevre birimi ve metod ile birlikte mutlaka birkaç sorunla karşılaşıyorum, bazılarının çözümü de epey vakit alıyor.

Burada ele aldığım konu aslında temel programlama tekniklerine dikkat edildiğinde kolaylıkla savuşturulabilecek bir sorun, ama insanın bazan basireti bağlanabiliyor böyle.

Continue reading “STM32 – HAL_UART TAKILMA SORUNU”

HALL EFFECT SENSORLER iLE DEVİR ÖLÇÜMÜ

STM32 ile BLDC servo motor kontrolu çalışmalarımın bu aşamasında sıra, rotor konumunun hall effect sensörlerle algılanmasına geldi.

Bu aşamaya kadar motorumu sensörsüz modda 6 adım yöntemi ile çalıştırmıştım. Bu işlemleri anlattığım iki yayın için bu linkleri tıklayabilirsiniz : Bölüm 1 , Bölüm 2

Bu bölümde; motorumuz ilk aşamadaki sürücü ve yöntem ile çalışır durumdayken, bir ikinci mikro denetleyici kullanılarak motorun hall effect sensörlerinden gelen sinyallerin algılanması, hız ve devir sayısı ölçümlerinin yapılışını göreceğiz.

Continue reading “HALL EFFECT SENSORLER iLE DEVİR ÖLÇÜMÜ”

STM32CubeIDE – PROGRAMA KAYNAK KODU EKLEMEK

Yeni bir projeye başladığımızda, daha önceki projelerimizden yararlanmak isteriz. Bu da mevcut projelerden yenisine bazı kaynak kodların aktarılmasını gerektirir.

STM32 CubeIDE platformu yeni projenin ilk adımlarında bize bir proje şablonu oluşturuyor. Bunun ardından bu şablona başka projelerimizden burada da kullanmak istediğimiz kodları aktarmakla işe başlıyoruz.

Bu yayında bu aktarma işleminin kopyala yapıştır yöntemi ile nasıl yapılacağını anlatacağım. Bir başka yöntem de Import fonksiyonunun kullanılması. Onu anlattığım daha kapsamlı yayın için burayı tıklayabilirsiniz.

Continue reading “STM32CubeIDE – PROGRAMA KAYNAK KODU EKLEMEK”

STM32 CubeIDE den INTEL HEX çıktısı almak

STM32 CubeIDE platformu, varsayılan ayarlar ile çalışıldığında, derleme sonrasında sadece bir .elf dosyası oluşturuyor.

Bu dosya, CubeIDE den işlemciye ST Link V2 adaptörü ile yükleme yapmak için yeterli.

Ancak bazan CubeIDE platformundan değil de doğrudan, sadece ST Link V2 ve STLink Application aracını kullanarak kod yüklememiz de gerekiyor, o zaman bir Intel .hex dosyasına ihtiyaç oluyor.

Bu yayında .hex çıktısını da CubeIDE den alabilmek için yapılacak ayarı gösteriyorum.

Continue reading “STM32 CubeIDE den INTEL HEX çıktısı almak”

Başka platformlardan Cube IDE ye program aktarımı

ST firması ürettiği mikroişlemciler ile kullanılmak üzere neredeyse sayısız örnek uygulama hazırlayıp yayınlıyor. Bunlar belirttikleri lisans kurallarına uyulması şartı ile ücretsiz, firmanın WEB sitelerinden kolaylıkla indirilebiliyor. st.com sitesinden bunlara erişilebiliyor.

Akla gelebilecek her konuda uygulama örnekleri var. Ancak bu örneklerin çoğunluğu STM32 CubeIDE değil, başka platformlar için hazırlanmış durumda.

Bunlardan AC6 System Workbench For STM32, kısaltılmış haliyle SW4STM32 platformundan STM32 CubeIDE ye aktarılmasını adım adım anlatmaya karar verdim.

Continue reading “Başka platformlardan Cube IDE ye program aktarımı”

STM32 Cube IDE İÇİNDE GENEL TANIMLAMALAR

DEFINES / UNDEFINES WITHIN STM32 Cube IDE CONFIGURATION SETTINGS

Kod geliştirirken aynı kodun farklı seçeneklere göre derlenmesini isteyebiliyoruz. Örneğin bu kodun SPI arayüzlü bir ekranla ya da Paralel girişli bir ekranla çalışan tipleri olsun isteyebiliriz.
Ya da geliştirme süresince ekranda bir sürü debug mesajı versin ama kullanıma sürüleceği zaman bunları kapatsın (örneğin Debug ve Release tipleri) isteyebiliyoruz.

Bu durumda belirli bir sürümde istenen komut bloklarını etkinleştirirken, bu sürümde gereksiz ve istenmeyen başka blokları kapatabilmek için #define derleyici tanımlarını kullanıyoruz.

Continue reading “STM32 Cube IDE İÇİNDE GENEL TANIMLAMALAR”