原创 ARM中TFT点屏的实验

2009-3-27 13:38 5179 9 11 分类: MCU/ 嵌入式

大体过程如下:


一系列初始化LCD的相关寄存器:
要点: LCD的显示是直接在ram中开辟4M的空间对应在lcd中显示
       lcdbank=0x180,用于对ram寻址
       lcdbaseu=0x80000,上部扫描地址
       lcdbasel 下部扫描地址
       二者的设置可以滚动
       另外注意lcd时钟,行场扫描的计算公式
       颜色是个16bpp,24位的数值(自动查找表)


为了回答一些人的提问补充一些要点:


这里我再强调一下要点,因为GUI移植成败与它直接相关:


1)  初始化LCDIO


2)  开启LCD的背光


3)  配置LCDCON1,他主要设置的是vclkhclk/(clkval+1*2clkval自定义),vclk‘一般应该大于6.5M。设置选择了TFT,16bbp的颜色深度等等


4)  配置LCDCON234。根据时序图(LCD液晶datasheet相关)例如:


   <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


设置:一下的字域:他们直接影响屏幕的偏移,可以手动慢慢调试也可以计算:


#define VFPD            (1)          //垂直同步信号的前肩


#define VSPW           (1)          //垂直同步信号的脉宽


 


#define HBPD            (22)        //水平同步信号的后肩


#define HFPD            (18)        //水平同步信号的前肩


#define HSPW           (18)        //水平同步信号的脉宽


a8e9a7a5-1a4d-4a04-98b8-1a36a2c806e2.jpg


方法如下:


VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图,VBPD=t3t6=1.02 mS31.77μs=32


VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,


是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5t6=0.35 ms31.77μs=11


VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2t6=0.06 ms31.77μs=2


HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89 μs×25MHz=47


HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94 μs×25 MHz="24"


      HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25 MHz="94"


代码:实现了几种颜色的切换


void LCD_Init(void)
{
// LCD port initialize.
    rGPCUP = 0xFFFFFFFF; //上拉
    rGPCCON = 0xAAAAAAAA; //选择lcd模式
rGPCCON = 0xAAAAAAAA;


    rGPDUP = 0xFFFFFFFF;
    rGPDCON = 0xAAAAAAAA;
   rGPGCON &= ~(3 << 8); //选择lcd power
/* Set LCD_PWREN as output*/


  
  
  
   rGPGDAT |= (1 << 4);                 /* 点亮LCD,Backlight ON*/


rLCDCON1=(7<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0; //设置vclk=hclk/7*2,选择场同步mmode=1,选择tft,16bpp,禁止viedio
// TFT LCD panel,16bpp TFT,ENVID=off
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW); //设置帧速率
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);//设置帧速率,与lcd手册数据有关
rLCDCON4=(MVAL<<8)|(HSPW);
rLCDCON5=(1<<11)|(1<<9)|(1<<8)|(1<<3)|(1<<0); //FRM5:6:5,HSYNC and VSYNC are inverted ,初始化tft
rLCDSADDR1=((FRAMEBUF_DMA_BASE>>22)<<21)|M5D(FRAMEBUF_DMA_BASE>>1);//lcdbank=0x180,lcdbaseu=0x80000,上部扫描地址
rLCDSADDR2=M5D( (FRAMEBUF_DMA_BASE+(LCD_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );//下部扫描地址
rLCDSADDR3=(((LCD_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);//偏移大小+虚拟屏幕宽,这里与原屏幕一样
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette

rLCDCON1 |= 1;
}



void LCD_Draw(void)
{
int I;

long int *pDisp=(long int *)FRAMEBUF_DMA_BASE;        //lcd显示的buffer
//long int *addr=(long int *)(0x34000000);


while(1)
{
for(I=0;I<(LCD_XSIZE_TFT* LCD_YSIZE_TFT/2);I++)
{

*pDisp++=0xFF00FF00; //颜色为32位,因为选择了16bpp,就是 5位red 6位green 5位blue
    
//*pDisp++=*addr++;


}
    delay05(200);        //延时一秒
    pDisp=(long int *)FRAMEBUF_DMA_BASE;
    for(I=0;I<(LCD_XSIZE_TFT* LCD_YSIZE_TFT/2);I++)
{

*pDisp++=0x00FF00FF; //颜色为32位,因为选择了16bpp,就是 5位red 6位green 5位blue
    
//*pDisp++=*addr++;


}
   delay05(200);        //延时一秒
   pDisp=(long int *)FRAMEBUF_DMA_BASE;
    for(I=0;I<(LCD_XSIZE_TFT* LCD_YSIZE_TFT/2);I++)
{

*pDisp++=0xFFFF0000; //颜色为32位,因为选择了16bpp,就是 5位red 6位green 5位blue
    
//*pDisp++=*addr++;


}
   delay05(200);        //延时一秒
   pDisp=(long int *)FRAMEBUF_DMA_BASE;
}


}
int main(void)
{


LCD_Init();
LCD_Draw();
return 0;
}


 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户539229 2009-3-24 21:12

这个问题我也遇见过,填充图形的时候,总是内部出现干扰条纹,也是一直没有解决。可能还是驱动的哪个参数设置的不好吧。 等我再去研究研究。 还是你的屏幕根本就没显示?

用户741296 2009-3-24 11:15

我的屏幕没有亮,有干扰条纹
相关推荐阅读
用户539229 2010-01-23 22:52
vmware下debian5的安装配置以及vmtools的安装使用
一.安装vmware6.5.21.下载vmware6.5.2http://4.scdx3.crsky.com/software/vmware_652.rar2.下载vmware6.5.2汉化包http...
用户539229 2009-12-29 12:57
最新诺基亚Qt4.6的上下位机移植手记,触摸屏支持
一.PC for Winxp下的开发环境的搭建诺基亚收购Qt以后,开发了自己的集成开发环境Qt Creater。这是一个非常强大的工具,上手也很快。登陆:http://qt.nokia.com/dow...
用户539229 2009-12-11 20:14
Omap3evm下android开发第一例hello下位机运行实践
1.       驱动的安装<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 1.1...
用户539229 2009-12-09 19:01
android的windows下开发环境的搭建与hello第一例
Android的SDK的官方网址如下官方网址:http://androidappdocs.appspot.com/sdk/index.html<?xml:namespace prefix = o...
用户539229 2009-11-28 13:21
Omap3下Goole的Android操作系统的实现 相当于山寨智能机啦
首先要有一个:OMAP3EVM平台的开发板 我用的是OMAP35x的TI的评估板还要有一个SD卡 TI花了很大的功夫打造了OMAP3智能手机开发平台,给用户提供了SDK包,GDK包,以及双核的Davi...
用户539229 2009-11-08 19:50
OMAP35x下OneNand的分析以及x-loader的介绍
OMAP35x下OneNand的分析以及x-loader的介绍<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条