STM32F4 Discovery ve SSD1289 TFT

Başlatan evreno, 16 Şubat 2013, 01:12:00

evreno

Merhaba arkadaşlar

çinden sipariş ettiğim ürünler elime ulaştı sonunda :)

http://www.ebay.com/itm/261096794843
bu lcd yi STM32F4 Discovery ile nasıl sürebilirim
Analyzer hocam https://www.picproje.org/index.php/topic,45095.msg332973.html burda dosya paylaşmış bunu
kullanabilirmiyim kullanabiliyorsam lcd nin pinlerini discovery de hangi pinlere bağlamam gerekir

yardımlarınız için şimdiden çok teşekkürler

XX_CİHAN_XX

Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Analyzer

Selam,

Elinizdeki LCD'nin pinoutlarını yazarsanız detaylı yardımcı olmaya çalışayım.

Analyzer
Üşeniyorum, öyleyse yarın!

evreno

Pin çıkışları şu şekilde

birde LED_A dediği lcd arka ışığı onu kullanmak için araya direnç atmam gereklimidir?

yardımlarınız için teşekkürler arkadaşlar

Analyzer

Selam,

LCD'nizin datasheetine bakmamakla beraber :

Sizin LCD de :
1. GND GND
2. VCC 3V3
3. NC BOŞTA
4. RS PD11
5. WR PD5
6. RD PD4
7. DB8 PE11
8. DB9 PE12
9. DB10 PE13
10.DB11 PE14
11.DB12 PE15
12.DB13 PD8
13.DB14 PD9
14.DB15 PD10
15.CS PD7
16.F_CS ??
17.RESET NRST
18.NC BOŞTA
19.LED_A 50OHM DİRENCE ORADAN VCC YE
20.NC BOŞTA
21.DB0 PD14
22.DB1 PD15
23.DB2 PD0
24.DB3 PD1
25.DB4 PE7
26.DB5 PE8
27.DB6 PE9
28.DB7 PE10
29.D_CLK PB13
30.D_CS PB12
31.D_DIN PB15
32.D_BUSY ??
33.D_OUT PB14
34.D_PENIRQ PD6
35.SD_OUT ??
36.SD_SCK ??
37.SD_DIN ??
38.SD_CS ??
39.F_WP ??
40.F_HOLD ??

Kart yapıp kullanacaksanız benim gibi, 2x40 soket kullanın. Beslemeyi ölçün. Doğru voltajlar alıyorsanız kartı takın. LCD yi bozarsanız ancak ve ancak hatalı beslemeden kaynaklı bozarsınız. Onun haricinde hatalı sinyal nedeniyle bozulan cihaz ben görmedim.

Analyzer
Üşeniyorum, öyleyse yarın!

evreno

Hocam vakit ayırdığınız ve verdiğiniz bilgiler için teşekkürler

16.F_CS ??
32.D_BUSY ??
35.SD_OUT ??
36.SD_SCK ??
37.SD_DIN ??
38.SD_CS ??
39.F_WP ??
40.F_HOLD ??

bu pinler şuan için çok önemli değil 32,39,40 NC olarak kartta yazıyor
16,35,36,37,38 pinleri SD Kart yuvası var onlar içinmiş

ben test edip durumu bildiririm tekrar çok teşekkür ederim

HexfeT

Kite yüklediğiniz kodun doğru çalıştığından emin olana kadar LCD nin RD pinini +3.3v a bağlayın derim. (aktif "low" ise tabi) Eğer bir problem olurda portlar doğru konfigüre edilemeyip RD pini "low" da kalırsa hem mcu hem lcd kontrol çipi zarar görebilir.

evreno

Analyser hocam belirttiğiniz şekilde lcd yi bağladım
discovery yi çalıştırdığımda lcd çalışır duruma geliyor fakat karışık bir görüntü var
sanki pinler yanlış bağlanmış gibi
ekranda hareketlenme oluyor yazdığınız program da görüntü değişimi oluyor sanırım belki ondan bir hareketlenme var
fakat dediğim gibi karışık bir görüntü var
pin çıkışlarınını 3-4 kez kontrol ettim dediğiniz şekilde bağlı sorun nerde olabilir?

teşekkürler.

HexfeT

#8
Yukarıdaki tabloda LCD nin RST pini MCU nun NRST pinine olarak görünüyor ama koda bakılırsa GPIOA1 e bağlanması gerekiyor. İlk enerji verildiğinde resetlenmiş oluyor zaten diye düşünülebilir ama MCU nun  LCD ile iletişim kuracağı GPIO pinlerinin konfigürasyonunu yaptıktan sonra LCD yi resetlemesi gerekiyor.

evreno

#9
Analyser hocam
görüntü karmaşık bir şekilde fakat 1sn de bir ekrana konum bilgisi gibi bir bilgi yazıyor
sarı fontla üst ve alt kısımda 5 hane şeklinde ekrana dokunduğumda rakamlar değişiyor
hazırladığınız yazılımda ekrana konum bilgisi yazdırıyorsunuz sanırım
şuan donanımsal sıkıntı yok sanırım ekranda düzgün veriler de görüyorum çünkü
arka kısımdaki karşık görüntü sanırım basılan resimler var onlardan kaynaklanıyor gibi
mümkünse lcd yi en basit şekilde çalıştıracak resim basımı olmayan bir örnek varsa verebilirmisiniz.
basit yazı yazsın yeter
Keil ile açabileceğim bir proje
teşekkürler.

mesaj birleştirme:: 17 Şubat 2013, 02:41:21

Alıntı yapılan: HexfeT - 17 Şubat 2013, 01:55:21
Yukarıdaki tabloda LCD nin RST pini MCU nun NRST pinine olarak görünüyor ama koda bakılırsa GPIOA1 e bağlanması gerekiyor. İlk enerji verildiğinde resetlenmiş oluyor zaten diye düşünülebilir ama MCU nun  LCD ile iletişim kuracağı GPIO pinlerinin konfigürasyonunu yaptıktan sonra LCD yi resetlemesi gerekiyor.

hocam bilgiler için teşekkürler Analyser hocamın hazırladığı programı kullandım değişiklik yapmadan
eğer bir hata varsa dönüş yapacaktır
donanımın çalışmasını sorunsuz görebilirsem sonrasında en basit şekilde başlayıp detaylandırmayı düşünüyorum lcd nin kullanımını öğrenmek için
bu konu forumdaki başka arkadaşlarında işine yarayabilir belki Discovery kullanıp bu lcd den alan başka arkadaşlarda var bildiğim kadarıyla
pin bağlantınlarından başladık :) yavaş yavaş ilerleyeceğiz.

Analyzer

Selam,

Tebrikler TFT'yi çalıştırmışsınız. Yukarıdaki yazılım bana ait değil, diot'a ait. Aynı tarif ettiğiniz sıkıntı bende de olmuştu. TFT'den TFT'ye çok küçük farklar var özellikle zamanlama konusunda. Aşağıdaki main fonksiyonunu, sizdeki programın main'i ile değiştirip bir dener misiniz. Ekranda papatya olan ve projeye R1 olarak ekli resmi görmeniz gerekiyor. Eğer görebiliyorsanız Image2LCD programı ile 320x240 olan tüm resimleri atabilirsiniz. Resmi açtıktan sonra C array, Horizon Scan, 16 bit true color, Include head data parametrelerini seçip save diyorsunuz. Oluşturulan dosyayı da projede resim klasörü içindeki R1.c içeriği ile değiştiriyorsunuz ya da başka dosya olarak da ekleyip tanımlayabilirsiniz.
Projedeki ekrana yazı yazma, touch kullanma vs. fonksiyonları adım adım çalıştırıp deneyin. Hazır hali şu an mevcut değil. Font ve resim basmada sıkıntı yok.

http://www.multiupload.nl/SH7CXMS4FL

Analyzer

int main()
{

   if (SysTick_Config(SystemCoreClock / 1000))
         {
            while (1);
         }

   GPIO_Configuration();
   Delay(250);
   STM3240F_LCD_Init();
   Delay(250);
   
   LCD_WindowModeDisable();
  LCD_SetTextColor(LCD_COLOR_YELLOW);
   LCD_SetBackColor(LCD_COLOR_BLACK);      

  Delay (200);
   LCD_WriteBMP2(239,319 , 240, 320, gImage_r1);
  Delay(250);
   LCD_WindowModeDisable();

   //LCD_DisplayStringLine(60, (u8*)degerx);
   //LCD_DisplayStringLine(80, (u8*)degery);   
  //LCD_ShowNum(205,70,yyy);
   
}
Üşeniyorum, öyleyse yarın!

evreno

Alıntı yapılan: Analyzer - 17 Şubat 2013, 08:19:45
Selam,

Tebrikler TFT'yi çalıştırmışsınız. Yukarıdaki yazılım bana ait değil, diot'a ait. Aynı tarif ettiğiniz sıkıntı bende de olmuştu. TFT'den TFT'ye çok küçük farklar var özellikle zamanlama konusunda. Aşağıdaki main fonksiyonunu, sizdeki programın main'i ile değiştirip bir dener misiniz. Ekranda papatya olan ve projeye R1 olarak ekli resmi görmeniz gerekiyor. Eğer görebiliyorsanız Image2LCD programı ile 320x240 olan tüm resimleri atabilirsiniz. Resmi açtıktan sonra C array, Horizon Scan, 16 bit true color, Include head data parametrelerini seçip save diyorsunuz. Oluşturulan dosyayı da projede resim klasörü içindeki R1.c içeriği ile değiştiriyorsunuz ya da başka dosya olarak da ekleyip tanımlayabilirsiniz.
Projedeki ekrana yazı yazma, touch kullanma vs. fonksiyonları adım adım çalıştırıp deneyin. Hazır hali şu an mevcut değil. Font ve resim basmada sıkıntı yok.

saolun hocam sayenizde, diot hocamın da eline sağlık o zaman.
dediğiniz değişikliği yapınca karıncalı bir görüntü oldu ekranda
ben şimdilik resim basmayı erteleyim olmazsa hocam
önce basit işleri yapalım da sonra onuda incelerim
dediğiniz gibi zamanlama ile alakalı bir durum olabilir.
gelişmeleri bildiririm.

evreno

lcd yi kullanırken yatay olarak kullanıyor rotate etme özelliği varmıdır?

Analyzer

Selam,

Dikey olarak kullanma kodları da var ancak SSD1289 kontrolcüsüne uygun değiller. Kodları değiştirerek yapılabilir. (X yerine Y, Y yerine X değişikliği yapılarak)
@evreno : Bu arada sarı halde rakamları görüyorsanız, DrawChar fonksiyonunda :

for(i = 0; i < LCD_Currentfonts->Width; i++)
    {

satırından sonra
  Delay(10);

ekleyip fontların çalışıp çalışmadığını kontrol edin. Dediğim gibi zamanlamada sıkıntı oluyor olabilir. Eğer yavaş ancak düzgün karakter basabiliyorsa, zamanlama ile oynayarak düzeltebilirsiniz.

Analyzer
Üşeniyorum, öyleyse yarın!

evreno

#14
Alıntı yapılan: Analyzer - 17 Şubat 2013, 23:57:25
Selam,

Dikey olarak kullanma kodları da var ancak SSD1289 kontrolcüsüne uygun değiller. Kodları değiştirerek yapılabilir. (X yerine Y, Y yerine X değişikliği yapılarak)
@evreno : Bu arada sarı halde rakamları görüyorsanız, DrawChar fonksiyonunda :

for(i = 0; i < LCD_Currentfonts->Width; i++)
    {

satırından sonra
  Delay(10);

ekleyip fontların çalışıp çalışmadığını kontrol edin. Dediğim gibi zamanlamada sıkıntı oluyor olabilir. Eğer yavaş ancak düzgün karakter basabiliyorsa, zamanlama ile oynayarak düzeltebilirsiniz.

Analyzer

evet lcd şuan çalışıyor ekranı farklı renklere boyayıp üzerine değişik fontlarda yazı yazdırmayı falan çalıştırdım sorun yok
kodları biraz inceledim rotate için herhangi birşey bulamadım nette örnek kodlar ararken bir kütüphane dosyasında rotate için birşeyler görmüştüm ama bulamadım tekrar
bakalım incelemelerim devam ediyor lcd için iyi library bulabilirsem kullanacam yoksa kendime göre yeniden yazarım
başka hazır kütüphane varmıydı hocam bildiğiniz?