STM32F FSMC Sorunsalı

Başlatan Eren Eraslan, 18 Ağustos 2014, 16:25:15

Eren Eraslan

Merhabalar
STM32F103CV ile Winstar WF57B TFT LCD yi sürmeye çalışıyorum tabiki FSMC kullanarak.Burada nihai amacım TFT ye resim bastırmak olacağından 72Mhz lik ve düşük maliyetli 32f103 işlemcisini seçtim. İnternette güzel güzel yapılmış projeleri inceledim. FSMC kullanılarak yapılan bu projelerde TFT ler hep 16 bit kullanılmış. Benim ekran ise 8 bit. Şimdilik uzun uğraşlar sonucu ekrana kare ve çember çizebildim. Fakat sorunlar bitmek bilmez
Sorun 1: FSMC kütüphane ayarlarında
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
  seçiyorum (oılması gereken)... Ekrana hiç birşey basılmıyor.Skoptan bakıyorum güzel güzel sinyaller mevcut
Lakin aynı kodu
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
olarak düzenlediğimde ekranda çember kare vs çıkıyor.Fakat sadece mavi renkte. Ekranı FULL bir renge boyatmaya çalışıyorum mesela kırmızı apaçık bir mavi ekranla kaplanıyor.

Sorun 2: 1. Sorun ile alakalı olduğunu düşündüğüm Fsmc Time ayarlamaları neye göre yapılıyor hiç anlamadım. Deneme yanılma ile değiştirdim bir iki bir sonuıç elde edemedim. Elimdeki kodda alttaki fsmc konfig mevcut. Bunları 8bit için nasıl değiştiriceğim fikri olan varmı?

/*-- FSMC Configuration ------------------------------------------------------*/
/*----------------------- SRAM Bank 3 ----------------------------------------*/
  /* FSMC_Bank1_NORSRAM4 configuration */
  p.FSMC_AddressSetupTime = 30;			 // 0x06 /
  p.FSMC_AddressHoldTime = 0;				   //	0 /
  p.FSMC_DataSetupTime = 30;				 //		 0x6 /
  p.FSMC_BusTurnAroundDuration = 0;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;


Projenin kodlarını ekledim. Yardım edebilirseniz çok memnun olurum
teşekkürler

http://www.dosya.tc/server34/GnXhEA/TFTPicProje.rar.html
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

diot

Verdiğiniz projedeki kodu geliştiren Mehmet arkadaşımız.  Dolayısıyla Ona sorarsanız daha iyi olur. Nick'i  M_B.


M_B

Merhabalar;
Ekranınız kac inc ?
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

Alıntı yapılan: M_B - 18 Ağustos 2014, 17:53:58
Merhabalar;
Ekranınız kac inc ?
5.7'' ve 320*240 çözünürlükte hocam
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

Verdigin dosyayı  baktığımda
ssd1963.c  dosyasında ekranın cozunurluk ayarını yapmamıssın. O driver 7" ıcın gecerli.
unsigned int  HDP=799; //Horizontal Display Period

unsigned int  VDP=479;	//Vertical Display Period


yukarda vermiş oldugun  FSMC ayarı doğru 8 bit icin.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

Alıntı yapılan: M_B - 19 Ağustos 2014, 09:46:20
Verdigin dosyayı  baktığımda
ssd1963.c  dosyasında ekranın cozunurluk ayarını yapmamıssın. O driver 7" ıcın gecerli.
unsigned int  HDP=799; //Horizontal Display Period

unsigned int  VDP=479;	//Vertical Display Period


yukarda vermiş oldugun  FSMC ayarı doğru 8 bit icin.


hocam çözünürlük ayarını tamam anladım
fakat hala sadece mavi basmasını anlayamadım?
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

#6
Ekrana font basmayı denermısın.
Bakalım nasıl yazacak.


mesaj birleştirme:: 19 Ağustos 2014, 10:21:44

FULL_ON(0x0FFF);
	
LCD_SetFont(&LCD_DEFAULT_FONT);
	SSD1963_LCD_Clear(0x001F);
			SSD1963_LCD_DrawRectangle(100,100,200,200);
			SSD1963_Draw_Circle(150,150,50);
			SSD1963_LCD_DrawLine(200,200,300,300);

kısmı şu şekilde dene bakalım.

SSD1963_LCD_Clear(BLACK);

  Delay(500);Delay(500);
  SSD1963_LCD_SetColors(GREEN,BLACK);
  LCD_SetFont(&LCD_DEFAULT_FONT);
	
			SSD1963_LCD_DrawRectangle(100,100,200,200);
			SSD1963_Draw_Circle(150,150,50);
			SSD1963_LCD_DrawLine(200,200,300,300);
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

#7
hocam font basma da sorun var . Karakterler anlamsız anlamsız çıkıyor.
1. resim


2. resim


mesaj birleştirme:: 19 Ağustos 2014, 10:36:26

değişikliği yaptım bu şekilde görüntü aldım hocam. Hiç kare çember görünmüyor

insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

#8
O zaman void SSD1963_LCD_Init(void)
fonksiyonun iceriğini iyi ayarlamak lazım.  Tam olarak hangi registerdı hatırlamıyorum aynı sorunla bende karsılasmıstım.
En iyisi SSD1963 datasheet acıp karakterle ilgili kısımları iyi incelemek lazım. Epey zaman oldugu için hatırlamıyorum. :(
Gene gozden geciririm bir şey bulursam yazarım.


mesaj birleştirme:: 19 Ağustos 2014, 10:42:12

İstersen once tek tek renk basmayı dene.
Ornegin:
SSD1963_LCD_Clear(BLACK);
 Delay(500);Delay(500);
SSD1963_LCD_Clear(BLUE);
 Delay(500);Delay(500);
SSD1963_LCD_Clear(WHITE);
....
gibi tum renkleri dene hangısınde duzgun cıkacak.
Beyaz dısında duzgun cıkmazsa RGB sıralaması yanlıstır.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

hocam birtek beyazı düzgün bastı diğerleri açık mavi bastı çok hafif ton değişti.
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

#10
http://www.dosya.tc/server34/Ovhv2t/Winstar_TFT_Application_Note3.pdf.html

dosyayı bir indirip incelermisin. Bende kontrol ediyorum.

mesaj birleştirme:: 19 Ağustos 2014, 12:26:39

init kısmını inceledigimde
LCD_WriteCommand(0x00F0); //pixel data interface
 LCD_WriteData(0x0003);

pixel data interface kısmında 0x0003 girilmiş.
8 Bit icin 60 girilmesi gerekiyor. Ust kısımda verdiğim dokumana göre.

RGB Formatı olarakta
LCD_WriteCommand(0x003a); 
 LCD_WriteData(0x0060);

yazılması gerekiyor.
Denemek lazım
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

malesef birşey değişmedi hocam.
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

#12
Alıntı yapılan: ereneraslan7 - 19 Ağustos 2014, 15:14:13
malesef birşey değişmedi hocam.
Simdi bu olayı nasıl cozecegiz.

Sorunlarımız
1-) Ekrana istediğimiz rengi basamıyoruz ( Beyaz dısında degılmı belki siyahıda basabılır )
2-) Ekrana font basamıyoruz



mesaj birleştirme:: 19 Ağustos 2014, 15:38:01

LCD_WriteCommand(0x0036); //rotation
LCD_WriteData(0x0088); 

burda 0x0088 degerini 0x0080 yaparmısın renklerde değişme olması lazım.
Bakalım Renklerin oturacak mı ?
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Eren Eraslan

Alıntı yapılan: M_B - 19 Ağustos 2014, 15:22:34
Simdi bu olayı nasıl cozecegiz.

Sorunlarımız
1-) Ekrana istediğimiz rengi basamıyoruz ( Beyaz dısında degılmı belki siyahıda basabılır )
2-) Ekrana font basamıyoruz



mesaj birleştirme:: 20 Ağustos 2014, 15:38:01

LCD_WriteCommand(0x0036); //rotation
LCD_WriteData(0x0088); 

burda 0x0088 degerini 0x0080 yaparmısın renklerde değişme olması lazım.
Bakalım Renklerin oturacak mı ?


Turkuaz mavisiydi bütün renkler şimdi ise sarı oldu
evet sadece beyaz düzgün olarak basıyor

bu arada

LCD_WriteCommand(0x00F0); //pixel data interface
LCD_WriteData(0x0060);

LCD_WriteCommand(0x003a);
LCD_WriteData(0x0060);
yapmamı istediniz dimi orda tam anlaşılmadı da
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

M_B

Alıntı Yap
urkuaz mavisiydi bütün renkler şimdi ise sarı oldu
evet sadece beyaz düzgün olarak basıyor

bu arada

LCD_WriteCommand(0x00F0); //pixel data interface
LCD_WriteData(0x0060);

LCD_WriteCommand(0x003a);
LCD_WriteData(0x0060);
yapmamı istediniz dimi orda tam anlaşılmadı da
evet yapmanızı istemiştim olayı gormek için.
Beyaz basması normal Beyaz verisi  RGB nin bileşimi 
#define WHITE 0XFFFF
aslında siyahı da basması lazım
#define BLACK 0X0000



Az once 0x0088 'i 0x0080 yaptık ya R ve B nin yerini değiştirdik.

Sartlar aynı olsa bende burda bir şeyler deneyecem ama malesef değil.  :(
burdan sana nasıl yardım edebilirim. Aksam eve gidince bakacam dosyalarıma umarım bir şeyler yazmısımdır.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet