概述:
方框图
LCD控制器是用于传输视频数据信号VD[0..23]和产生必要的控制信号,如VFRAM、VLINE、VCLK、VM等等。LCD控制器包括REGBANK、LCDCDMA、VIDPRCS、TIMGEN、LPC3600。
REGBANK:有17个可编程寄存器和用于配置LCD控制器的256 * 16调色存储器。
LCDCDMA:专用于DMA,它可以自动从帧存储器到LCD视屏存储器传输数据,屏幕显示数据无需CPU的参与。
VIDPRCS:接受来自LCDCDMA的视屏数据,将其转化为适当的格式,然后通过VD[0..23]数据输出
TIMGEN:可由可编程逻辑组成来支持发现不同LCD驱动器的一般接口时序和速率的变化需要,产生VFRAM、VLINE、VCLK
VM:帮助LCD驱动器交替用于开启和关闭像素的行、列电压的极性
数据流描述:
STN LCD控制器操作
时序发生器(TIMEGEN):产生LCD驱动器的控制信号,VFRAM,VLINE, VCLK, VM,这些信号的配置与REGBANK中的LCDCON1\2\3\4\5寄存器配置有着紧密关系。
VM信号的触发率取决与LCDCON1寄存器的MMODE位和LCDCON4寄存器的MVAL[7...0]字段,如果MMODE=0,配置为每帧触发;如果MMODE=1,则由MVAL[7...0]触发。
VM频率 = VLINE频率/(2 * MVAL)
VFRAM、VLINE脉冲发生取决于LCDCON2\3寄存器中的HOZVAL和LINEVAL字段配置,每个字段又与LCD大小和像素显示模式有关
HOZVAL = (水平显示大小 / 有效VD像素)- 1(彩色模式中:水平显示大小 = 3 * 水平像素数)
LINEVAL = (虚拟显示大小) - 1 (单扫描显示模式),LINE = (虚拟显示大小 / 2) - 1(双扫描模式)
VCLK信号速率 取决于LCDCON1寄存器中的CLKVAL字段的配置,CLKVAL最小字段为2
VCLK(HZ) = HCLK /(CLKVAL * 2)
帧频VFRAM
视频操作
S3C2440 LCD控制器支持8位色模式(256色模式),12为色模式(4096色模式),4阶灰度模式,16阶灰度模式和单色模式。
查找表
S3C2440能支持查找表给彩色和灰色映射的各种选择
灰度模式选择
S3C2440 LCD控制器支持2种灰度模式:2位每像素灰度(4阶灰度)和四位每像素灰度(16阶灰度),两种像素都是查找表BLUELUT(搞不清楚阶灰度是什么意思?)
256色模式操作
S3C2440控制器能支持8位每像素256色模式,编码8位分别为 3为给红色,3位给绿色,2为给蓝色,每个查找表是使用REDLUT寄存器的REDVAL[31...0],GREENLUT寄存器的GREENVAL[31...0],BLUELUT寄存器的BLUEVAL[15...0]
4096级色模式
12位每像素被编码为4位给红色,4位给绿色,4位给蓝色
抖动和帧频控制
显示类型
LCD控制支持支持3种LCD驱动器类型:
4位双扫描,
4位单扫描,8位单扫描显示模式
时序要求:
TFT LCD 日后在分析...
TFT LCD寄存器配置
void Lcd_Init(void)
{
rGPCUP = 0x00000000;
rGPCCON = 0xaaaa02a9;
rGPDUP = 0x00000000;
rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
// TFT LCD panel,12bpp TFT,ENVID=off
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
rLCDCON4=(MVAL<<8)|(HSPW);
rLCDCON5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3) |(BSWP<<1) | (HWSWP);
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rTCONSEL &= (~7) ; // Disable LPC3480
rTPAL=0; // Disable Temp Palette
}