FSMC ile LCD'den RGB datası okuma

Başlatan Mucit23, 09 Ocak 2014, 20:59:01

Mucit23

Arkadaşlar Farklı bir konu olduğun için yeni başlık açayım dedim. Bu konuda örnek bulamadım malesef.

FSMC ile sürdüğüm SSD1289'dan RGB datası okumak istiyorum.
Yapmak istediğim şudur.

Örneğin LCD ye bir resim bastığımızda ve Resmin üzerine bir Text Basarsak eğer Text'in arka plan rengi resim datası olsun istiyorum. Yani arkadaki resim bozulmayacak.

Bunu yapabilmem için LCD de istediğim kordinatın RGB datasını alabilmem lazım. FSMC olmasa bunu yapmak kolay fakat FSMC ile nasıl data okuyacağımı bilmiyorum.

Fikri olan varmı?

Mucit23

Hiçbir örnek bulamadım bu konuda. Gerçekten FSMC ile data aktarımı tek yönlümü?

yldzelektronik

Alıntı yapılan: Mucit23 - 10 Ocak 2014, 09:43:33
Hiçbir örnek bulamadım bu konuda. Gerçekten FSMC ile data aktarımı tek yönlümü?

Fsmc flex static memory controller anlamına geliyordu diye hatırlıyorum.

Eski -z'nin paylaştığı- ref manuele göre böyleydi.Şimdi stm32f referance manuel araması yapınca;

http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf

linki gliyor.Burada ise fmc olmuş.Ayrıca lcd controller da var.

Neyse hasılı fmc de olsa fsmc de olsa ram de okuyabiliniyor bu bus üzerinden.Dolayısıyla veri okursun da yazarsın da.Fakat lcd üzerinden nasıl yapacaksın orasını bilmiyorum.

Ancak birşey sormak istiyorum.

Bahsi geçen çipden veri okumak için belli başlı komutları vssi yok mu?Lcd adres bus değilde spi ile falan reg değerlerini okuyamıyor musun?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

Burak B

#3
Yazdığın gibi okuyacaksın :) ;) FSMC' nin güzelliğide buradan geliyor zaten. Adres erişimi ile hem okuma hem yazma yapabiliyorsun. Pixel koordinatları için SetWindow kullanacaksın.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Mucit23

Evet sanırım Hallettim.

GetPixel Fonksiyonu yazdım.

uint16_t LCD_GetPixel(uint16_t Xpos, uint8_t Ypos)
{
  LCD_SetCursor(Xpos, Ypos);
  return LCD_ReadRAM();
}


uint16_t LCD_ReadRAM(void)
{
  *(__IO uint16_t *) (Bank1_LCD_C)=LCD_REG_34	;
  return *(__IO uint16_t *) (Bank1_LCD_D);
}


İstenen bölgenin renk datasını getiriyor.