dingit1024 发表于 2013-1-28 10:30:01

2416初始化AT070TN83_V.1

本帖最后由 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

亚瑟王 发表于 2013-1-28 16:15:06

亲,TQ2416开发板的u-boot和Linux、WinCE默认已经支持TN83的LCD的。如果你不是使用的TQ2416开发板请来联系天嵌科技的销售工程师购买。

dingit1024 发表于 2013-1-28 16:34:43

亚瑟王 发表于 2013-1-28 16:15 static/image/common/back.gif
亲,TQ2416开发板的u-boot和Linux、WinCE默认已经支持TN83的LCD的。如果你不是使用的TQ2416开发板请来联系天 ...

我用的是TQ2416,现在想做它的LCD驱动程序,所以要初始化LCD控制器的寄存器

dingit1024 发表于 2013-1-28 16:45:56

亚瑟王 发表于 2013-1-28 16:15 static/image/common/back.gif
亲,TQ2416开发板的u-boot和Linux、WinCE默认已经支持TN83的LCD的。如果你不是使用的TQ2416开发板请来联系天 ...

屏幕颜色慢慢变化是那些寄存器设置的问题,还望给予指点,如果能提供初始化寄存器代码,真的感激不尽呀,现在被这个LCD弄得很头大呀

亚瑟王 发表于 2013-1-28 16:52:50

dingit1024 发表于 2013-1-28 16:34 static/image/common/back.gif
我用的是TQ2416,现在想做它的LCD驱动程序,所以要初始化LCD控制器的寄存器

你用的LCD是天嵌科技提供的?还是自己做的?你用什么软件环境?

dingit1024 发表于 2013-1-28 16:56:54

亚瑟王 发表于 2013-1-28 16:52 static/image/common/back.gif
你用的LCD是天嵌科技提供的?还是自己做的?你用什么软件环境?

天嵌的板子,SecureCRT+win7虚拟机+fedora11

亚瑟王 发表于 2013-1-28 17:03:30

dingit1024 发表于 2013-1-28 16:56 static/image/common/back.gif
天嵌的板子,SecureCRT+win7虚拟机+fedora11
你说Linux的LCD驱动?内核中提供的参数是支持TN83的。这里说的是天嵌科技的A70那个型号的LCD。

dingit1024 发表于 2013-1-28 17:06:49

亚瑟王 发表于 2013-1-28 17:03 static/image/common/back.gif
你说Linux的LCD驱动?内核中提供的参数是支持TN83的。这里说的是天嵌科技的A70那个型号的LCD。

恩恩,是linux的lcd驱动。内核中的A70的BPP是16,我用的这个个屏是18,不是一个屏呀。

亚瑟王 发表于 2013-1-28 17:10:41

dingit1024 发表于 2013-1-28 17:06 static/image/common/back.gif
恩恩,是linux的lcd驱动。内核中的A70的BPP是16,我用的这个个屏是18,不是一个屏呀。

一般情况18位的屏实际都是用16位。

dingit1024 发表于 2013-1-28 17:12:57

亚瑟王 发表于 2013-1-28 17:10 static/image/common/back.gif
一般情况18位的屏实际都是用16位。

嗯?什么意思?我试了内核中16BPP的屏参数,也是不行的

亚瑟王 发表于 2013-1-28 17:50:06

dingit1024 发表于 2013-1-28 17:12 static/image/common/back.gif
嗯?什么意思?我试了内核中16BPP的屏参数,也是不行的

要不你联系天嵌科技的销售购买一个天嵌科技的TN83的LCD,要不你联系天嵌科技的销售把你的TN83的屏邮过来看看。

dingit1024 发表于 2013-1-28 18:17:13

亚瑟王 发表于 2013-1-28 17:50 static/image/common/back.gif
要不你联系天嵌科技的销售购买一个天嵌科技的TN83的LCD,要不你联系天嵌科技的销售把你的TN83的屏邮过来看 ...

屏有问题?不会吧。烧写进入带LCD驱动的镜像,开机logo显示是没问题的。

亚瑟王 发表于 2013-1-30 10:27:43

dingit1024 发表于 2013-1-28 18:17 static/image/common/back.gif
屏有问题?不会吧。烧写进入带LCD驱动的镜像,开机logo显示是没问题的。

亲,我现在糊涂了。

liruilirui89 发表于 2013-2-28 14:46:55

可以讲解下/*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

页: [1]
查看完整版本: 2416初始化AT070TN83_V.1