|
本帖最后由 dingit1024 于 2013-1-28 10:51 编辑
做LCD的初始化时,LCD颜色会慢慢变化到一个界面后不再变化。已经设置这些寄存器快2周了,觉得设置的没什么问题了。但是,这会是哪里的问题,希望大家不吝赐教,指点小弟一下。刚初始化后的LCD颜色会慢慢变化,屏幕也不闪动,过一段后,会稳定到下面的情况(我初始化后做了清屏,设为全黑)
初始化参数:
#define LCD_VBPD 29-1 //在帧开始处,垂直后沿是不活动行的数量,在垂直同步过程之后
#define LCD_VFPD 13-1//VSFP(13) //在帧末尾处,垂直前沿是不活动行的数量,在垂直同步过程之前。
#define LCD_VSPW 3-1//VSPW(3)//通过计算不活动行的数量,垂直同步脉冲宽度决定VSYNC 脉冲的高点品宽度。
#define LCD_HBPD 40-1//HSBP-HSPW(88-48)//水平后沿是HSYNC 下降沿和有效数据开始之间的VCLK 周期的数量。
#define LCD_HFPD 40-1//HSFP(40)//水平前沿是有效数据末端和HSYNC 上升沿之间的VCLK 周期的数量。
#define LCD_HSPW 48-1//HSPW(48)//通过计算不VCLK 的数量,水平同步脉冲宽度决定HSYNC 脉冲的高点品宽度
#define LCD_LINEVAL 480 //垂直分辨率
#define LCD_HOZVAL 800 //水平分辨率
//#define LCD_BUF_SIZE(LCD_XSIZE*(LCD_YSIZE+1))
//缓冲区大小,留有空闲,防止溢出
/*VIDCON0:视频主控制器0*/
#define VIDCON0_VIDOUT (0 << 22)//RGB接口
#define VIDCON0_PNRMODE (0 << 13)//显示格式 RGB格式
#define VIDCON0_CLKVALUP (1 << 12)//选择CLKVAL_F 更新时序控制 ,帧开始时控制
#define VIDCON0_CLKVAL_F (3 << 6)//时钟分频 VCLK=视频时钟源/(CLKVAL+1) CLKVAL>=1
#define VIDCON0_VCLKEN (1 << 5)//VCLK使能控制
#define VIDCON0_CLKDIR (1 << 4)//用CLKVAL_F 寄存器划分时钟源
#define VIDCON0_CLKSEL_F (0 << 2)//选择时钟源
#define VIDCON0_ENVID (3 << 0)//视频输出及显示控制信号
/*VIDCON1:视频主控制器1*/
#define VIDCON1_IVCLK (0<< 7)//时钟下降沿有效
#define VIDCON1_IHSYNC (0 << 6)//HSYNC
#define VIDCON1_IVSYNC (0 << 5)//VSYNC
#define VIDCON1_IVDEN (0 << 4)//DE高电平有效
/*VIDTCON0 视频时序控制寄存器0*/
#define VIDTCON0_VBPD (LCD_VBPD << 16)
#define VIDTCON0_VFPD (LCD_VFPD << 8)
#define VIDTCON0_VSPW (LCD_VSPW << 0)
/*VIDTCON1 视频时序控制1寄存器*/
#define VIDTCON1_HBPD (LCD_HBPD << 16)
#define VIDTCON1_HFPD (LCD_HFPD << 8)
#define VIDTCON1_HSPW (LCD_HSPW << 0)
/*VIDTCON2 视频时序控制2寄存器*/
#define VIDTCON2_LINEVAL (LCD_LINEVAL<< 11)
#define VIDTCON2_HOZVAL (LCD_HOZVAL << 0)
/*WINCON0 窗口0控制寄存器*/
#define WINCON0_BUFSEL (0 << 23)//缓冲区设置为0
#define WINCON0_BUFAUTOEN (0 <<22) //双缓冲区自动控制位,由BUFSEL控制
#define WINCON0_BITSWP (0 << 18)//位交换禁止
#define WINCON0_BYTSWP (0 << 17)//字节交换禁止
#define WINCON0_HAWSWP (0 << 16)//半子交换使能
#define WINCON0_BURSTLEN (0 << 9)//DMA 的突发最大长度选择:16BYTE
#define WINCON0_BPPMODE_F (8 << 2)//18bit RGB666
#define WINCON0_ENWIN_F (1 << 0)//开启wincon0
//窗口0位置控制A寄存器VIDOSD0A
#define VIDOSD0A_OSD_LeftTopX_F (0 << 11)//左上角的OSD 图像像素横向屏幕坐标
#define VIDOSD0A_OSD_LeftTopY_F (0 << 0) /*左上角的OSD 图像像素纵向屏幕坐标(对于接口TV输出而言,这个值必须设置在屏幕y
坐标值的一半位置。Y 坐标值的初始位置必须为偶数)*/
//窗口0位置控制B寄存器VIDOSD0B
稳定后的LCD
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|