这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于QT2440 24bpp的显示驱动问题

共5条 1/1 1 跳转至

关于QT2440 24bpp的显示驱动问题

菜鸟
2007-06-07 00:39:17     打赏
QT2440的板子本来的开机LOGO是8BPP的!最近我想把他改成24bpp,哪想搞了好久都没搞定!特请教哪位兄弟帮忙看一下先!

在研究了NBoot2nd之后,看到显示部分是在LCD.c里面!再参照了S3C2440的LCDCONROLLER部分后,我针对24BPP对regeister做了些修改!哪想却死活不行啊!老是黑屏!屏幕还有些闪动!哪位做过的兄弟帮忙看下到底是怎么回事了??

下面是一段LCD的INIT段

// == Params == //
#define CLKVAL_TFT_240320 (4)
#define MVAL (13)
#define MVAL_USED (0)

//Timing parameter for LTS350Q1(SAMSUNG)
#define VBPD_240320 ((2-1)&0xff)
#define VFPD_240320 ((3)&0xff)
#define VSPW_240320 ((2) &0x3f)
#define HBPD_240320 ((12)&0x7f)
#define HFPD_240320 ((12)&0xff)
#define HSPW_240320 ((30)&0xff)

#define M5D(n) ((n) & 0x1fffff) // To get lower 21bits
//TFT240320
#define HOZVAL_TFT_240320 (LCD_XSIZE_TFT_240320-1)
#define LINEVAL_TFT_240320 (LCD_YSIZE_TFT_240320-1)
//TFT 240320
#define LCD_XSIZE_TFT_240320 (240)
#define LCD_YSIZE_TFT_240320 (320)

//===========Lcd init==========//

//LCDCON1设置,参照datasheet,我只修改bppmode,修改为24bpp, 所以设置为13<<1,其他都用default值
rLCDCON1=(CLKVAL_TFT_240320<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0;

//LCDCON2,我不做修改,都用开始提供的初始值

rLCDCON2=(VBPD_240320<<24)|(LINEVAL_TFT_240320<<14)|(VFPD_240320<<6)|(VSPW_240320);

//LCDCON3,我不做修改,都用开始提供的初始值
rLCDCON3=(HBPD_240320<<19)|(HOZVAL_TFT_240320<<8)|(HFPD_240320);

//LCDCON4,我不做修改,都用开始提供的初始值
rLCDCON4=(MVAL<<8)|(HSPW_240320);

//LCDCON5设置,参照datasheet,我只设置bpp24BL,设置为LSB, 所以设置为0<<12,其他都用default值
rLCDCON5=(0<<12)|(1<<9)|(1<<8);

//LCDSADDR1,我不做修改,都用开始提供的初始值,我U32 *frameBuffer8BitTft240320 = 0x33800000
rLCDSADDR1=(((U32)frameBuffer8BitTft240320>>22)<<21)|M5D((U32)frameBuffer8BitTft240320>>1);


//LCDSADDR2,因为是24bpp以一个4个字节来存储,所以我在下面pagewidth乘了个4

rLCDSADDR2=M5D( ((U32)frameBuffer8BitTft240320+(LCD_XSIZE_TFT_240320*4*LCD_YSIZE_TFT_240320/1))>>1 ) ;

//LCDSADDR3,因为我不准备使用虚屏,所以offset设置为0<<11;而pagewidth应该也就是LCD_XSIZE_TFT_240320*4/2


rLCDSADDR3=(0<<11)|(LCD_XSIZE_TFT_240320*4/2);


//其他中断设置都不做修改,直接使用初始值

rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
//rTPAL=0; // Disable Temp Palette
//rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : blue

//*****************************************************************************************************************************************

我24bpp的象素填充函数为

void PutPixel32(U32 x,U32 c)
{
//if(x<SCR_XSIZE_TFT_240320 && y<SCR_YSIZE_TFT_240320)


frameBuffer8BitTft240320[x/3]=(frameBuffer8BitTft240320[x/3]
& ~(0xff000000>>((x)%3)*8) ) | ( (c&0x000000ff)<<((3-1-((x)%3))*8) );

}

for(k=0;k<240*320*3;k++)
PutPixel32(k,gImage_beauty[k]) ;

[align=right][color=#000066][此贴子已经被作者于2007-6-6 16:46:18编辑过][/color][/align]



关键词: 关于     QT2440     24bpp     显示     驱动     问题         

菜鸟
2007-06-10 06:34:00     打赏
2楼
晕!哪位老大过来帮忙看看啊

菜鸟
2007-07-04 19:06:00     打赏
3楼
俺也不懂,瞎猜一个,是不是LCD不支持阿。

菜鸟
2007-07-13 03:25:00     打赏
4楼

我感觉他这个程序里面没有使用显示缓冲区,你直接定义一个就好了。

如用:U32 LCD_BUFFER[2*LCD_YSIZE_TFT_240320][2*LCD_XSIZE_TFT_240320]代替frameBuffer8BitTft240320

就好了

void PutPixel32(U32 x,U32 y,U32 c)
{
if(x<SCR_XSIZE_TFT_240320 && y<SCR_YSIZE_TFT_240320)

{
U32 LCD_BUFFER[(y)][(x)] =( c&0x00ffffff);


菜鸟
2007-07-13 03:26:00     打赏
5楼

}

}


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]