Hi,

i am using 640x480 TFT LCD 16bit mode. i have changed memory capacity also.

when i power up the board it only displaying in 640x240 area left is black.

i have written this code:

#define MVAL (13)
#define MVAL_USED (0)
#define M5DNEW(n) ((n) & 0x1fffff) // To get lower 21bits

//TFT
#undef LCD_XSIZE_TFT
#undef LCD_YSIZE_TFT
#define LCD_XSIZE_TFT (640)
#define LCD_YSIZE_TFT (480)

//TFT
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2) //for virtual screen
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)

#undef HOZVAL_TFT
#undef LINEVAL_TFT
#define HOZVAL_TFT (LCD_XSIZE_TFT-1) // Valid VD data line number is 8.
#define LINEVAL_TFT (LCD_YSIZE_TFT-1)


#undef CLKVAL_TFT
#define CLKVAL_TFT (6)


#undef LCD_VBPD
#undef LCD_VFPD
#undef LCD_VSPW
#undef LCD_HBPD
#undef LCD_HFPD
#undef LCD_HSPW
#define LCD_VBPD ((31)&0xff)
#define LCD_VFPD ((10)&0xff)
#define LCD_VSPW ((1)&0x3f)
#define LCD_HBPD ((87)&0x7f)
#define LCD_HFPD ((39)&0xff)
#define LCD_HSPW ((127)&0xff)


//frameBuffer8Bit = (_U32
(*)[SCR_XSIZE_TFT*2*SCR_YSIZE_TFT])IMAGE_FRAMEBUFFER_DMA_BASE;

s2410LCD->LCDCON1 = (CLKVAL_TFT << 8) | (MVAL_USED << 7) | (3 << 5) | (12
<< 1) | 0;

s2410LCD->LCDCON2 = (LCD_VBPD << 24)|(LINEVAL_TFT << 14)|(LCD_VFPD <<
6)|(LCD_VSPW << 0);

s2410LCD->LCDCON3 = (LCD_HBPD << 19)|(HOZVAL_TFT << 8)|(LCD_HFPD << 0);

s2410LCD->LCDCON4 = (MVAL << 8) | (LCD_HSPW << 0);

s2410LCD->LCDCON5 = (1 << 11)|(1 << 9)|(1 << 8)|(1 << 0);
//BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
//INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x

s2410LCD->LCDSADDR1 = ((IMAGE_FRAMEBUFFER_DMA_BASE >> 22) << 21 ) |
((M5D(IMAGE_FRAMEBUFFER_DMA_BASE >> 1)) << 0);

s2410LCD->LCDSADDR2 = M5DNEW((IMAGE_FRAMEBUFFER_DMA_BASE + (LCD_XSIZE_TFT *
LCD_YSIZE_TFT * 2)) >> 1 );

s2410LCD->LCDSADDR3 = (((LCD_XSIZE_TFT - LCD_XSIZE_TFT) / 1) << 11) |
(LCD_XSIZE_TFT / 1);


s2410LCD->LCDINTMSK |= 3; // MASK LCD Sub Interrupt


s2410LCD->TPAL = 0; // Disable Temp Palette

// 1:TFT Panel on 0:TFT Panel off //
s2410LCD->LCDCON1 |= 1; // ENVID=ON

cna any suggest me the what to do for this problem.

--
Software Developer
Johari Digital Healthcare LTD.
INDIA

Re: LCD Display Problem by yash

yash
Mon Aug 18 06:15:45 PDT 2008

Hi Dipendra,

Please find my comments/values inline.
I might be shooting in the dark but it is worth a try. Search for the
comment ///yash changes inline below.
Try and keep at least 2 MB at the IMAGE_FRAMEBUFFER_DMA_BASE address.

Keep us informed.

Regards
Yash


> #define MVAL =A0 =A0 =A0 =A0 =A0 =A0(13)
> #define MVAL_USED =A0 =A0 =A0 (0)
> #define M5DNEW(n) ((n) & 0x1fffff) =A0// To get lower 21bits
>
> #define LCD_XSIZE_TFT =A0 (640) =A0
> #define LCD_YSIZE_TFT =A0 (480) =A0
>
> //TFT
> #define SCR_XSIZE_TFT =A0 (LCD_XSIZE_TFT*2) =A0 //for virtual screen =A0
> #define SCR_YSIZE_TFT =A0 (LCD_YSIZE_TFT*2)
>
> #define HOZVAL_TFT =A0 =A0 =A0 =A0 =A0 =A0 =A0(LCD_XSIZE_TFT-1) =A0 =A0 =
=A0 // Valid VD data line number is 8.
> #define LINEVAL_TFT =A0 =A0 =A0 =A0 =A0 =A0 (LCD_YSIZE_TFT-1)
>
> #define CLKVAL_TFT =A0(1) =A0 =A0 =A0/// yash changes
>
> #define LCD_VBPD =A0((32)&0xff) =A0 =A0 =A0/// yash changes
> #define LCD_VFPD =A0((9)&0xff) =A0 =A0 /// yash changes
> #define LCD_VSPW =A0((1)&0x3f) =A0 =A0
> #define LCD_HBPD =A0((47)&0x7f) =A0 /// yash changes
> #define LCD_HFPD =A0((15)&0xff) =A0 =A0/// yash changes
> #define LCD_HSPW =A0((95)&0xff) /// yash changes
>
> =A0 =A0 =A0 =A0 //frameBuffer8Bit =3D (_U32 (*)[SCR_XSIZE_TFT*2*SCR_YSIZE=
_TFT])IMAGE_FRAMEBUFFER_DMA_BASE;
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDCON1 =3D (CLKVAL_TFT << 8) | (MVAL_USED << 7=
) | (3 << 5) | (12 << 1) | 0;
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDCON2 =3D (LCD_VBPD << 24)|(LINEVAL_TFT << 14=
)|(LCD_VFPD << 6)|(LCD_VSPW << 0);
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDCON3 =3D (LCD_HBPD << 19)|(HOZVAL_TFT << 8)|=
(LCD_HFPD << 0);
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDCON4 =3D (MVAL << 8) | =A0(LCD_HSPW << 0);
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDCON5 =3D (1 << 11)|(1 << 9)|(1 << 8)|(1 << 0=
);
> =A0 =A0 =A0 =A0 //BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INV=
VD:x,
> =A0 =A0 =A0 =A0 //INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,=
HWSWP:x
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDSADDR1 =3D ((IMAGE_FRAMEBUFFER_DMA_BASE >> 2=
2) << 21 ) |
> ((M5D(IMAGE_FRAMEBUFFER_DMA_BASE >> 1)) << =A00);
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDSADDR2 =3D M5DNEW((IMAGE_FRAMEBUFFER_DMA_BAS=
E + (LCD_XSIZE_TFT *
> LCD_YSIZE_TFT * 4)) >> 1 ); /// yash changes
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDSADDR3 =3D (((2*LCD_XSIZE_TFT - LCD_XSIZE_TF=
T) / 1) << 11) | (LCD_XSIZE_TFT / 1); /// yash changes
>
> =A0 =A0 =A0 =A0 s2410LCD->LCDINTMSK =A0|=3D 3; // MASK LCD Sub Interrupt
>
> =A0 =A0 =A0 =A0 s2410LCD->TPAL =3D 0; // Disable Temp Palette
>
> =A0 =A0 =A0 =A0 // 1:TFT Panel on =A00:TFT Panel off // =A0 =A0 =A0
> =A0 =A0 s2410LCD->LCDCON1 |=3D 1; // ENVID=3DON
>
> cna any suggest me the what to do for this problem.
>
> --
> Software Developer
> Johari Digital Healthcare LTD.
> INDIA