s3c2440 与LCD的浅析
来源:互联网 发布:七月十五插件数据下载 编辑:程序博客网 时间:2024/05/28 14:57
一、信号分析
VFRAME/VSYNC:LCD控制器和LCD驱动器之间的帧同步信号。该信号告诉LCD屏新一帧开始了。LCD控制器在一帧显示完成后立即插入一个VFRAME信号,开始新一帧的显示。
VLINE/HSYNC:LCD控制器和LCD驱动器之间的行同步脉冲信号。该信号用于LCD驱动器将水平线(行)移位寄存器的内容传送给LCD屏显示。LCD控制器在整行数据移人LCD驱动器后,插入一个VLINE信号。
VCLK:LCD控制器和LCD驱动器之间的像素时钟信号。LCD控制在VCLK的上升沿处送出数据,LCD驱动器在VCLK的下降沿处采样。
VM/VDEN:LCD驱动器的AC信号。VM信号被LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示。VM信号能够和每帧同步,也能够和可变数据的VLINE信号同步。
VD[23:0]:LCD像素数据输出端口。
LCD_PWREN:LCD使能信号。如果外接的LCD有开/关等类似管脚的话,可以与这个信号连接。这个信号的输出值受ENVID控制,即LCDCON1的第0位。
以下以东华4.3寸屏(TFT)屏为例:
二、LCD可编程寄存器介绍
1.LCDCON1
LINECNT:行计数器的状态位。只读,不用配置。
CLKVAL:确定VCLK频率的参数。
注意:VCLK的公式为VCLK=HCLK/[(CLKVAL+1)×2],单位为Hz。笔者所用的硬件系统HCLK=100 MHz,480×272的显示屏需要VCLK=10 MHz,故需配置CLKVAL=4。
MMODE:确定VM的改变速度。
注:为0时,每帧变化模式;为1时,由LCDCON4的MVAL决定
PNRMODE:确定扫描方式。选择PNRMODE=0x3,为TFT LCD面板扫描模式。
BPPMODE:确定BPP(每像素位数)模式。在此选择BPPMODE=0xC,为TFT 16位模式。
ENVID:数据输出和逻辑信号使能控制位。选择ENVID=1,为允许数据输出和逻辑控制。
2、LCDCON2
VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值。
LINEVAL:确定显示的垂直方向尺寸。公式:LINEVAL=YSIZE-1=479。
VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值。
VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。
3、 LCDCON3
HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数。
HOZAL:确定显示的水平方向尺寸。公式HOZAL=XSIZE-1。
HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数。
4、 LCDCON4寄存器
HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数。
5、LCDCON5寄存器
VSTATUS:垂直方向状态。只读,不用配置。
HSTATUS:水平方向状态。只读,不用配置。
BPP24BL:确定显示数据存储格式。此处配置BPP24BL=0x0,为小端模式存放。
FRM565:确定16位数据输出格式。此处配置FRM565=0x1,为5:6:5格式输出。
INVVCLK:确定VCLK脉冲有效边沿极性。如INVVCLK=0xl,VCLK上升沿到来时数据传输开始。
INVVLlNE:确定HSYNC脉冲的极性。
INVVFRAME:确定VSYNC脉冲的极性。
INVVD:确定数据输出的脉冲极性。
INVVDEN:确定VDEN信号极性。
INVPWREN:确定PWREN信号极性。
INVLEND:确定LEND信号极性。
PWREN:PWREN信号输出允许。
ENLEND:LEND输出信号允许。
BSWP:字节交换控制位。如配置BSWP=0x0,禁止字节交换。
HWSWP:半字交换控制位。如配置HWSWP=0xl,使能半字节交换。
帧缓冲是Linux为显示设备提供的一个接口,它把一些显示设备描述成一个缓冲区,允许应用程序通过FrameBuffer定义好的接口访问这些图形设备,从而不用去关心具体的硬件细节。对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色就会自动的在屏幕上显示。
6.LCDSADDR1:帧缓存开始地址寄存器
LCDBANK:存储显存地址的[30:22]位
LCDBASEU:存储显存地址的[21:1]位
7.LCDSADDR2:帧缓存开始地址寄存器
LCDBASEL:分为双屏幕扫描和单屏幕扫描模式
用来存储显存结束地址
8.LCDSADDR3:帧缓存开始地址寄存器
OFFSIZE:虚拟屏幕偏移的大小
PAGEWIDTH:虚拟屏幕的页的大小
9.REDLUT:红色查找表寄存器
10.GREENLUT:绿色查找表寄存器
11.BLUELUT:红色查找表寄存器
12.DITHMODE:抖动模式寄存器
13.TPAL:临时调色板寄存器
TPLEN: 0无效, 1有效
14.LCDINTPND:中断挂起寄存器
15.LCDSRCPND:中断源挂起寄存器
16.LCDINTMSK:中断屏蔽寄存器
17.LPCSEL:LPC3600控制寄存器
三、应用介绍(以东华4.3寸屏480*272为例)
1.LCD的初始化
GPCUP = 0x00000000;//pull up c's all ports
GPCCON = 0xaaaa02a9; VD[7:0] and control signals
GPDUP = 0x00000000;
GPDCON=0xaaaaaaaa; //Initialize VD[15:8]
LCDCON1=(4<<8)|(0<<7)|(3<<5)|(12<<1)|0;
//HCLK=100MHz,VCLK = (HCLK/[(4+1)/2]) = 20MHz
// TFT:each frame; TFT LCD panel 16bpp; ENVID = 0;
LCDCON2=(2<<24)|(LINEVAL<<14)|(4<<6)|8;
//LINEVAL=LCD_YSIZE-1 = 272-1;
LCDCON3=(10<<19)|(HOZVAL<<8)|19;
//HOZVAL=LCD_XSIZE-1 = 480-1;
LCDCON4=(MVAL<<8)|30;
//MVAL:当MMODE=1时,VM信号变化的速度
LCDCON5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3) |(0<<1) | (1);
//5:6:5模式,数据下降沿有效,HSYNC极性反转,VSYNC极性反转,VD正常,VDEN正常,禁止字节交换,使能半字交换,LCD_PWEN使能;
注:HSYNC与VSYNC极性反转是因为CPU发出的是正脉冲,而LCD需要的是负脉冲
LCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
//LCD_BUFFER为显存数组的首地址
LCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
//#define M5D(n) ((n) & 0x1fffff) // To get lower 21bits
//SCR_XISIZE_TFT与LCD_YSIZE代表屏的尺寸(480*272)
LCDSADDR3=((0)<<11)|(480);
//虚拟屏的设置
LCDINTMSK|=(3); // MASK LCD Sub Interrupt
TCONSEL &= (~7) ; // Disable LPC3480
TPAL=0; // 临时调色板无效
相关数据选择依据:
东华4.3寸屏资料:
由资料,得出
HBPD: 最小为2 , TQ选择10
HFPD: 最小为2 , TQ选择 19
HSPW: 最小为2,典型值为41, TQ选择30
VBPD: 最小为1, 典型值为2, TQ选择 2
VFPD: 最小为1, 典型值为2, TQ选择4
VSPW: 最小为1, 典型值为10, TQ选择8
VSYNC的频率即为帧频,它与LCDCON1/2/3/4均有关,计算公式如下:
FrameRate=1/{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]}
注:LINEVAL=LCD_YSIZE-1,HOZVAL=LCD_XSIZE-1,CLKVAL设置为4,HCLK=100MHz,可得出帧频=64Hz,满足60Hz---90Hz
- s3c2440 与LCD的浅析
- s3c2440 与LCD的浅析
- s3c2440的LCD应用
- s3c2440的LCD应用
- s3c2440的LCD应用
- s3c2440的LCD应用
- s3c2440的LCD应用
- S3C2440的LCD显示
- s3c2440的LCD应用
- s3c2440的LCD应用
- s3c2440的LCD应用
- S3C2440的LCD
- S3C2440的LCD编程
- s3c2440的LCD应用
- S3C2440的LCD编程
- s3c2440的LCD字符显示
- 关于S3C2440的LCD控制
- s3c2440的LCD字符显示
- PostgreSQL每日一贴-数据库对象依赖关系
- 编写属于你的第一个linux 模块
- 中缀表达式转为后缀表达式
- android 自定义视图——onMeasure,MeasureSpec源码 流程 思路详解
- 安卓权限大全
- s3c2440 与LCD的浅析
- QT Layout源码解析
- tomcat报空指针
- ASP.NET MVC3默认提供了11种ActionResult的实现(简单用法)
- SpringMVC入门学习(二)应用注解方式+注解优化
- log4j日志配置——Console+Database+E-Mail
- LEETCODE: Remove Duplicates from Sorted List
- 在ubuntu上创建scrapy爬虫
- TFT LCD