找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5715|回复: 0
收起左侧

VBP/VFP/HBP/HFP

[复制链接]
ID:104287 发表于 2016-1-31 04:34 | 显示全部楼层 |阅读模式
//        HFP -- SYNC前面的同步信号//        HBP -- SYNC后面的同步信号
//                一般时序图是以SYNC为一个周期的起点画的,所以HFP和HBP看起来很奇怪,而实际的一个周期
//                的起点是ACT_END之后,这样理解FP和BP就很好理解了

====================================

在RGB模式中,LCD数据的扫描是以行为单位的。HSYNC是水平同步信号。PCLK是象素时钟。ENABLE是数据使能信号,当它为高时,在PCLK的上升沿输出有效数据。P_DATA是输出的数据。
水平同步信号的上升沿到ENABLE的上升沿的间隔称为HBP。把ENABLE的下降沿到水平同步信号的下升沿的间隔称为HFP。把水平同步信号的低电平(非有效电平)持续时间称为HSW。
HSW存在的必要性:水平同步信号为低电平有效。在水平同步信号有效时,需要等待HBP的时间,才从数据线取数。由于水平同步信号的有效电平持续时间通常比无效电平长,因此占空比不是50%。无效电平短些比较好。
HBP和HFP存在的必要性:从道理上说,LCD使用矩阵寻址这两个阶段完全可以没有。但是考虑到从前CRT电子枪行扫描时,需要一个返回时间,而且目前的制式中,在有效信号的两端分别加入了消隐时间。就是为了做到一致,这二者才出来的。

====================================================================
第一次调试lcd驱动的话是不是对下面的结构有点陌生,不知道那些值是如何得来的,当然我就属于其中的一个
点击(此处)折叠或打开

  • static struct s3cfb_lcd lte480wv = {
  •     .width    = 1024,//800,
  •     .height    = 600,//480,
  •     .bpp    = 24,//24,//32,
  •     .freq    = 45,//45,//60
  •     .timing = {  //这里主要会影响图像在LCD上显示的位置,偏移啥的
  •         .h_fp    = 160,//210,//8,
  •         .h_bp    = 160,//46,//13,
  •         .h_sw    = 16,    // 3
  •         .v_fp    = 12,//12,//15,//22, liao
  •         .v_fpe    = 0,/*1,//0,*/
  •         .v_bp    = 23,//22, liao
  •         .v_bpe    = 0,/*1,//0,*/
  •         .v_sw    = 2,//
  •     },
  •     .polarity = {  //这几个参数挺重要的,判断你极性是否要反转(0--normal,1---inverted)
  •         .rise_vclk    = 0,
  •         .inv_hsync    = 1,
  •         .inv_vsync    = 1,
  •         .inv_vden    = 0,
  •     },
  • };


好吧,言归正传,首先有必要理解几个定义:
一般TFTLCD时序图如下所示

1
我们先来理解下面引脚有寄存器中相关参数的意义吧
外部引脚信号:
VSYNC: 帧同步信号,表示扫描1帧的开始,一帧也就是LCD显示的一个画面。
HSYNC: 行同步信号,表示扫描1行的开始。
VDEN数据使能信号。
VD[23:0] : LCD像素数据输出端口。
VCLK像素时钟信号。
寄存器参数:
VSPW帧同步信号的脉宽,单位为1行(Line)的时间。
VFPD: 帧同步信号的前肩,单位为1行(Line)的时间。
VBPD: 帧同步信号的后肩,单位为1行(Line)的时间。
LINEVAL 帧显示尺寸-1,即屏行宽-1,对于800*480分配率的LCD屏,那么LINEVAL=480-1=479,请记住,是屏行宽,也就是LCD屏显示一帧数据所需要的行的数目。
HBPD行同步信号的后肩,单位为1VCLK的时间。
HFPD行同步信号的前肩,单位为1VCLK的时间。
HSPW行同步信号的脉宽,单位为1VCLK的时间。
HOZVAL行显示尺寸-1,即屏列宽-1,对于800*480分配率的LCD屏,那么HOZVAL=800-1=799,请记住,是屏列宽,也就是LCD屏显示一行数据所需要的像素(pixel)的数目。
由图1可知:
扫描一帧所需的时间:
=((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))个行时间。
扫描一行所所需的时间:
= ((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))VCLK时间。
而一个VCLK时间由LCD寄存器VIDCON0内的CLKVAL决定:
=HCLK/(CLKVAL+1)  ------>这个公式是S3C2443LCD控制器的,其他CPU的不一定一样
因此扫描一帧所需的时间:
T=[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]*[(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* HCLK/ (CLKVAL+1)
即帧频率为:1/T
1.首先来判断 HSYNC,VSYNC,VCLK, VDEN信号是否需要反转
这个其实还挺好判断的,主要就是通过你主控的介绍lcd的时序图,在结合你屏厂的spec文档的时序图就可以完全判断出来了
先看LCD控制器默认情况下送出来的TFT LCD屏的时序图:
再来看屏厂的提供的时序图
看上面的介绍应该知道需要反转
再来看看timing这个结构体如何配置,如果提供下面这个参数就很好确定相关的数值了
h_fp  = (horizontal total time)- 1024
f_sw  =  (horizontal total time)- 1024 - h_fp   
当然,如果没有上面的介绍,其实也是可以通过时序图来得到的



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表