Şimdiye kadar çalışmalarımda Çin’den satın aldığım geliştirme modüllerini kullanıyordum. Bunlar hakkında bir başka yayınımda bilgi vermiştim. (görmek için burayı tıklayınız.)
Bunlar ucuz malzemeler olsa da artık ihtiyaçlarıma daha uygun modüller tasarlayıp kullanmanın vakti geldi. (Yerli ve milli !!! :)) )
Özellikle üzerinde TFT ekranlarımı doğrudan takabileceğim soketleri olan, SPI, I2C ve UART portlara kolayca erişebileceğim konnektörleri olan modüllere çok ihtiyaç duyuyorum.
Yeni geliştireceğim modüllerin eskilerinin yerine doğrudan takılabilmesi de gerekiyor ki, daha önce geliştirmiş olduğum cihazlara bunları takıp kullanabileyim.
Geliştirme çalışmaları esnasında bu modüllere zorunlu olarak ekranlar bağlıyoruz.
Ekranlar 4 pinli SPI arayüzlü de olsa, SD kart pinleri, kontrol pinleri, beslemeler derken bir jumper kablo ormanının içinde kalıyoruz. Hele SPI değil de paralel data pinleri söz konusu olduğunda ortalık daha da kalabalıklaşıyor.
Bu kabloların farkedilmeden bağlantı noktalarından ayrılması, ya da ekranı herhangi bir sebeple ayırıp yeniden bağlamamız gerektiğinde verilen uğraş işin tadını kaçırıyor. İyisi mi sabit ekran konnektörleri olan modüller yapıp kullanayım dedim. Çok da iyi oldu. Artık ekran bağlantıları ve jumper kalabalığı ile uğraşacağıma asıl işe odaklanabiliyorum.
Yılın başlarında 64 pin STM32F103 için iki farklı kart tasarlayıp ürettim, keyifle kullanıyorum. Bunlardan birisi 8 bit paralel data girişli, diğeri SPI arayüzlü TFT ekranların takılmasına uygun.
Bu yayında bu iki modül hakkında bilgi vereceğim. Amacım gerektiğinde başvurabileceğim bir kullanıcı el kitabı oluşturmak.
MINIKIT_P – Paralel girişli TFT arayüzlü
Sunumunu yapacağım iki tip modülden birincisi Minikit-P adını verdiğim yukarıdaki modül. Bu modül, 64 pin STM32F103Rx LQFP mikroişlemcilere uygun olarak tasarlandı.
Plaketin üst yüzündeki iki sıra dişi pin konnektör sayesinde popüler 8 bit paralel data girişli TFT ekranları doğrudan takabiliyorum.
Modülün üst tarafındaki iki paralel sıra dişi konnektör piyasada 4-6 dolara “Arduino uyumlu” etiketiyle satılan TFT ekranlar ile uyumlu. Bu ekranların 8 bit paralel data girişli olanlarına uygun. SPI arayüzlü olanlar için bir başka yayında anlattığım ikinci tip modül kullanılabilir.
Modüle ekran takılınca aşağıdaki gibi bir görünüm alıyor. Bu tasarımda ekran ile Minikit ortogonal bir yerleşime sahip.
MINIKIT_P ile Kullanılan ekranlar
Minikit_P modülü 8 bit paralel data girişli TFT ekranların kullanılmasına uygun tasarlandı.
TFT de 8 adet data pininin dışında bir sürü başka kontrol pininin olduğu aşağıdaki fotoda görünüyor.
Ayrıca SD karta ait SPI arayüzünün pinleri de var.
Benim kullandığım TFT nin dokunmatik paneli de (Touch Panel) var. Bu dokunmatik panelin 4 adet erişim pini, TFT nin data pinlerinden dördü ile ortak kullanılıyor, ekran üzerinde (yani altında) bunun için ayrı pinler yok, hatta altını çevirip baktığınızda bunların hangi ortak pinler olduğuna dair bir ipucu dahi yok. Bu konuyu bir başka yayınımda anlatmıştım. Görmek için burayı tıklayınız.
Kullanılabilecek ekranlar piyasada (Aliexpress, Ebay vb.) “Arduino uyumlu” olarak satılıyor. Arkasını çevirdiğinizde aşağıdaki gibi bir şey görüyorsunuz. 2.2″ den 3.5″ e kadar farklı boyutlardaki ekranlarda ayak aralıklarını aynı standarda uygun tutabiliyorlar.
PİN ATAMALARI
Tasarıma TFT konnektörlerini katınca, mikroişlemcinin bazı pinlerini TFT ye ayırıp bağlamak gerekiyor. TFT bin takılacağı konnektörler PCB bin üst tarafındaki iki adet karşılıklı paralel dişi konnektör.
16 pin bulunan taraftaki iki pin PCB ye sığmadığından dışarıda kalıyor, ama bu pinler zaten kullanılmıyor. Bunlar bu fotoda daha iyi görülebiliyor:
Bu konnektörlerde yer alan TFT sinyal ve kontrol bağlantıları aşağıdaki gibi:
3V3 pinine besleme vermiyoruz, ekran 5V ile besleniyor.
I2C VE SPI PİNLERİ
Bu kitte I2C1 ve SPI1 ara yüzlerini dışarıya verdim. I2C1 için iki adet, SPI1 için de bir adet konnektör var. SPI1 arayüzünü SD kart ile paylaştığımızı unutmayalım. I2C1 arayüzü de modül üzerindeki 32 KB 24C32 ile paylaşılıyor.
Her iki durumda da adresleme ve slave seçim olanakları sayesinde bu arayüzleri dışarıdan bağlayacağımız başka çevre cihazları için de kullanabiliyoruz.
Sol yanda ve sol üstte I2C1 e ait her birisi 4 pinli iki adet konnektör görünüyor. Pin sıralamaları alttan üste ve soldan sağa aşağıdaki gibi:
I2C1 PİN ATAMALARI
- GND
- 5V
- DIO PB 07
- CLK PB06
SPI1 PİN ATAMALARI
SPI arayüz pinleri sol alt tarafta görülüyor. Yukarıdan aşağı doğru :
- SS PA8
- MOSI PA7
- MISO PA6
- SCK PA5
USART PİNLERİ
USART PİNLERİ – 3 pinlik grup, Soldan sağa
- GND
- RX PA 10
- TX PA 09
DIŞARIYA VERİLEN BESLEME VE TOPRAK BAĞLANTILARI
Kite dışarıdan bir çevre cihazı bağlandığında 3.3V, 5V ve GND bağlantılarına ihtiyaç oluyor. Bu nedenle sağ tarata görülen 4 adet pinle kolaylık sağlamak istedim. Ortadaki iki pin GND, diğerleri 3V3 ve 5V pinleri
EEPROM HAKKINDA
Gerektiğinde kullanılmak üzere sol alt tarafta bir 24C.. serisi EEPROM için yer hazır. Şu anda 24C32 yani 32 KBit, 4 kByte kapasiteli bir EEPROM lehimledim.
I2C1 üzerindeki bu yongaya 0x53 adresinden ulaşabiliyoruz. I2C fonksiyonlarında device adresi 1 bit sola kaydırılıp kulanıldığından 0xA6 oluyor.
3 nolu A2 adres pini toprağa verilmiş durumda, A1 ve A0 PCB de hatalı olarak boşta bırakılmış durumda ama bunların Vcc ye bağlanması gerekiyor. Bu nedenle bu ayakları dışarıdan eklediğim bir tel ile EEPROM un besleme ayağına bağladım.
RESET PİNİ
NRST yani GND verildiğinde resetleyen pinimiz sol tarafta ikili pin header olarak görünüyor.
BOOT PİNLERİ
Boot_0 pini orta sol tarafta, Boot_1 pini de orta sağ tarafta 3 lü pin headerler olarak görünüyor. Aktif pinler (Boot0 ve PB 02) ortadakiler. Bunların her ikisini de GND a köprülenmiş olarak kullanıyorum. Diğer kullanımlar için STM32 kullanıcı el kitabına bakmanız gerekiyor.
Boot_1 yani PB 02 program start aldıktan sonra başka amaçlarla kullanılabiliyor. Çünkü mikroişlemci sadece reset aldığında bunun 3V3 olup olmadığını kontrol ediyor, ondan sonra işi bitiyor.
PROGRAMLAMA VE DEBUG BAĞLANTILARI
Son olarak da, sol üst tarafta görünen beyaz konnektör mikroişlemciye kod aktaracağımız, ve geliştime çalışmaları sırasında kodun çalışmasını izleyeceğimiz “debug” pinleri. Tek telli programlama (SW) ve debug yöntemini seçtim. JTAG ın 20 pinli konnektörünü ve buna ilişkin 10 adet sinyal telini kullanmıyorum.
Bu konnektöre verdiğimiz pinler soldan sağa şöyle :
- GND
- PA 14
- PA 13
- 3V3
Selçuk hocam iyi günler;
Hocam buradaki tasarımınızda mesela mikrodenetleyicinin etrafındaki kristal osilatörü veya regülatörü hangi şematiğe göre kullandınız. Yani nasıl bir doküman kullanmalıyım ki stm32f10x serisini kendim çalışacak şekilde tasarlayayım.
Saygılar…
Hüseyin bey merhaba,
STM32F1x serisinin data sheetinden yararlandım. Gizli bir ayrıntı yok zaten. Kristali, Vdd pinlerindeki seramik kondansatörleri CPU ya mümkün olduğu kadar yakın koyun. Kristal ile 18pF kondansatörler kullandım. Bundan sonrası temel tasarım kurallarına uygun bir PCB tasarımından ibaret.
STM32F1x harici komponent olarak çok az şey istiyor. 3.3V beslemeleri 1117 serisi bir regülatör ile veriyorum. Kristal koymanız da zorunlu değil, dahili RC osilatör ile çalışabiliyorsunuz. Vdd pinlerinin her birinin dibinde dekuplaj için 0.1µF lık seramik kondansatörler var. Vdd3 de fazladan bir tane de 4.7µF kondansatör var. VddA ya 3.3V beslemeyi 10µH lik bir şok bobini üzeriden veriyorum. BU pinde de 0.1µF ve 1µF lık seramik dekuplaj kondansatörleri var.
Program yüklemek için A13-A14 pinlerine erişmeniz gerekiyor, bunlar için birer pin koymalısınız (tabiki kullanacağınız diğer IO pinlerine de erişim için gereken bağlantıları yapacaksınız.)
Sonuçta 7-8 tane dekuplaj kondansatörü, bir kristal ve buna bağlı iki adet küçük seramik kondansatör, bir tane de şok bobini ile devreyi tamamlıyorsunuz. Bir de 3.3V besleme gerilimini üreten bir 1117 gerilimi regülatörü ile bunun girişindeki çıkışındaki kondansatörleri koyuyorsunuz. İsterseniz birkaç tane de LED koyuyorsunuz (Besleme çıkışına, IP lardan bir ikisine).
Çok özel bir uygulamaya yönelik PCB tasarlamayacaksanız, bir kaç dolara satılan geliştirme kitlerini kullanın derim, çok daha ucuza gelir. Zira PCB yi en az 10 adet sipariş ediyorsunuz, devre elemanlarını bir tane de gerekse 50-100 adet alıyorsunuz. CPU yu lehimlemek de yeni başlıyorsanız kolay değil, iyi bir havya, ışıklı büyüteç gerekli. Ben 10x mikroskop kullanıyorum. Elinizi alıştırırken birkaç tane µC harcayabilirsiniz.
Benim bu tasarımı yapmamın nedeni, ekranları kolayca bağlayabilmek, SPI ve I2C pinlerine kolayca erişim, geliştirdiğim projelere tam uyumlu bir ayak dağılımı elde etmek gibi şeyler.
Selamlarımla,
Hocam valla sizi bırak sıkıyorum ama kusura bakmayın öğrenmem gerek , hocam yani özetle bir adet kristal bir adet kondansatör ve 1 adet gerilim regülatörü kullandık değil mi?
Bir de hocam datasheet te yararlandığınız kısım şu kısım mı?
https://ibb.co/3RnMdwD
Devre şeması ve PCB çizimini mail ile gönderdim.
Selamlar,
hocam tft lcd yi programlamayı ve kullanmayı öğreten bir yazı da paylaşabilir misiniz?
Serdar Bey merhaba,
Malesef bu günlerde çok yoğunum. Yani yayınlar yapamıyorum. Yine emekli olursam -ki bu bu yıl ve gelecek yıl içinde olacak gibi görünmüyor- yeniden yayınlara başlayabilirim. Şimdilik kusuruma bakmayın.
Selamlarımla,