S3C2440 LCD控制器中引脚极性的判断、一些名词解释、重要结构体的抽象
最近在学韦东山老师的LCD新一期视频,看了两遍,一些问题差不多都看明白了,因此想针对视频里一些疑惑和自己出现问题的地方写写总结,这也是我的第一篇原创博文!
首先,跟着视频一步步走,先是利用面向对象的思想建立框架,将不同型号的lcd的共同设置参数抽象出来,定义成结构体lcd_parameters,同时定义指向该结构体的指针*p_lcd_parameters,以后定义结构体的时候就这么干!!!相关结构体如下 ,里面的参数我自己做了详细说明,为了更加明了,下面针对一些不易说明白的地方我插图说明。
1、先解释下各参数的全称
HFPD(thf-1) : Horizontal Front Porch Delay 表示一行的有效数据结束到下一个水平同步信号开始 前 (Front)的VCLK的个数 右侧黑框
HSPW(thp-1): Horizontal Sync Pulse Width 一行中有效像素数
HBPD(thb-1) :Horizontal Back Porch Delay 水平同步信号发出后(BACK)到一行 有效数据开始之间的VCLK个数 左侧黑框
VFPD (tvf-1):Vertical Front Porch Delay 表示一帧的有效数据结束到下一个帧同步信号开始之间的VCLK的个数 下侧黑框
VSPW (tvp-1):Vertical Pulse width 帧脉冲宽度 即有效行数
VBPD(tvb-1):Vertical BackPorch Delay 垂直同步信号发出后到一行有效数据开始之间的VCLK个数 上侧黑框
2、S3C2440引脚极性的有效电平确定
a、VDEN :查看VD数据传输时,VDEN对应的电平信号 NORMAL 高电平
b、PWREN:2440数据手册P421 在Figure 15-8中 LCDCON5中的PWREN = 1时 INVPWREN=0时在LCD_PWREN高电平期间LCD屏幕为ON,因此NORMAL为高电平有效
这是在LCD控制器里面怎查询,那么再具体赋值的时候对于某款选定的LCD来说应该查看具体原理图电路确定
c、VSYNC/HSYNC :查看VSPW(tvp)/HSPW(thp)(帧/行同步信号宽度,有效脉冲)对应段的VSYNC/HSYNC信号电平 NORMAL 高电平有效
d、VD(RGB)信号极性的判断:VD是Vieo Data 的缩写 顾名思义是图像数据 也就是RGB数据 数据的极性一般就是 高电平用 1 表示 因此 NORMAL 及高电平有效
/*抽象出LCD所需的参数,构造结构体*/
/*Back Porch
*Front Porch
*前廊后廊
*前是指 信号 结束 后 到 下一个信号开始前
*后是指 信号 开始 后 到 有效数据开始前
*因此Vertical Back Porch 就是垂直信号发出后 到 第一个有效行开始 也即上边黑框
*Vertical Front Porch 就是垂直信号结束(一帧结束)后到下一帧信号到来前(信号不来就不会
*跳转到左上角) 也就是下边黑框
*/
typedef struct time_sequence{
/*水平时序参数*/
int thf; /*Horizontal Front porch 表示一行的有效数据结束到
*下一个水平同步信号开始之间的VCLK的个数 右侧黑框
*相当于HFPD + 1 Horizontal Front Porch Delay
*/
int thp; /*Horizontal Pulse width 水平脉冲宽度 即每行有效像素数
*相当于HSPW+1 Horizontal Sync Pulse Width
*/
int thb; /*Horizontal Back porch 水平同步信号发出后到一行
*有效数据开始之间的PCLK个数 左侧黑框
*相当于HBPD + 1
*/
/*垂直时序参数*/
int tvf;/*Vertical Front porch 表示一帧的有效数据结束到
*下一个帧同步信号开始之间的VCLK的个数 下侧黑框
*相当于VFPD + 1 Vertical Front Porch Delay
*/
int tvp;/*Vertical Pulse width 水平脉冲宽度 即有效行数
*相当于VSPW+1 Vertical Sync Pulse Width
*/
int tvb;/*Vertical Back porch 垂直同步信号发出后到一行
*有效数据开始之间的PCLK个数 上侧黑框
*相当于HBPD + 1
*/
/*像素时钟*/
int pclk;//VCLK
}time_sequence,*p_time_sequence;
typedef struct pins_polarity{
int VDEN; /*查看VD数据传输时,VDEN对应的电平信号 NORMAL 高电平 */
int PWREN; /*LCD POWER ENABLE P421 NORMAL 高电平有效*/
int VSYNC; /*查看VSPW(帧同步信号宽度,有效脉冲)对应段的VSYNC信号电平
*NORMAL 高电平
*/
int HSYNC;/*查看HSPW(水平同步信号宽度,有效脉冲)对应段的HSYNC信号电平
*NORMAL 高电平
*/
int VCLK; /*寄存器相应位说明了 NORMAL 下降沿有效*/
int VD; /*RGB数据有效 一般数据类的信号 NORMAL 表示 高电平*/
}pins_polarity,*p_pins_polarity;
typedef struct lcd_parameters{
char *name;
/*引脚极性*/
pins_polarity pins_pol;
/*时序*/
time_sequence time_seq;
/*分辨率*/
int xres;
int yres;
int bpp;/*bit per pixel 像素位数*/
/*像素基地址*/
unsigned int fb_base;
}lcd_parameters,*p_lcd_parameters;