ARMSC驱动TFTLCD研究报告EEVP.docx
- 文档编号:29004818
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:9
- 大小:138.99KB
ARMSC驱动TFTLCD研究报告EEVP.docx
《ARMSC驱动TFTLCD研究报告EEVP.docx》由会员分享,可在线阅读,更多相关《ARMSC驱动TFTLCD研究报告EEVP.docx(9页珍藏版)》请在冰豆网上搜索。
ARMSC驱动TFTLCD研究报告EEVP
ARMS3C2410驱动TFT-LCD的研究
介绍了S3C2410的LCD控制器的数据和控制管脚,并给出了LCD的控制流程和TFT-LCD的控制器设置规则。
参照TFT-LCDCJM10C0101的逻辑要求和时序要求设计了其驱动电路,设置了各主要LCD寄存器。
开发了CJM10C0101在嵌入式LINUX下的显示驱动程序,并在CJ
M10C0101上显示了清晰稳定的画面。
实验表明这套装置通用性好,能驱动大部分的TFT-LCD。
可移植性强,经过少许修改即可应用在其他嵌入式系统中。
它是S3C2410驱动TFT-LCD的一套较佳的解决方案。
1引言
随着科技的发展,ARM在社会各个方面的应用越来越广。
S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,主频可达203MHz,适用于信息家电、SmartPhone、Tablet、手持设备、移动终端等领域。
其中,集成的LCD控制器具有通用性,可与大多数的LCD显示模块接口。
CJM10C0101是一种用非晶硅TFT作为开关器件的有源矩阵液晶显示器,该模块包括TFT-LCD显示屏!
驱动电路和背光源,其接口为TTL电平。
分辨率为640×480像素,用18bit数据信号能显示262144色。
6点视角是最佳视角。
在以三星ARM芯片S3C2410为核心,USB、UART、LCD、TOUCHPANEL等作为输入输出设备,FLASH和SDRAM作存储器,加上固化在FLASH里面的嵌入式LINUX组成的嵌入式系统中,我们致力于使此系统用本国生产的TFT-LCD作显示输出,因此研究设计了驱动CJM10C0101型26.4cm(10.4in>TFTLCD的硬件适配电路与嵌入式LINUX下的显示驱动程序。
2S3C2410LCD控制器介绍
2.1管脚
S3C2410LCD控制器用于传输视频数据和产生必要的控制信号,像VFRAME、VLINE、VCLK、VM等等。
除了控制信号,S3C2410还有输出视频数据的端口VD[23:
0],如图1示。
将要用到的管脚描述如下:
VCLK-像素时钟信号。
VD[23:
0]-LCD像素输出端口。
VM/VDEN/TP-LCD驱动器的AC偏置信号(STN>/数据使能信号(TFT>/SECTFT源驱动器数据加载脉冲信号。
2.2寄存器介绍
S3C2410的LCD控制寄存器主要有:
LCDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器和LCDCON5寄存器等,详情请见参考文献[1]。
2.3控制流程
LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成(见图2>。
REGBANK有17个可编程寄存器组和256×16的调色板存储器,用来设定LCD控制器。
LCDCDMA是一个专用DMA,自动从帧存储器传输视频数据到LCD控制器,用这个特殊的DMA,视频数据可不经过CPU干涉就显示在屏幕上。
VIDPRCS接受从LCDCDMA来的视频数据并在将其改变到合适数据格式后经VD[23:
0]将之送到LCD驱动器,如4/8单扫描或4双扫描显示模式。
TIMEGEN由可编程逻辑组成,以支持不同LCD驱动器的接口时序和速率的不同要求。
TIMEGEN产生VFRAME、VLINE、VCLK、VM信号等。
数据流描述如下:
FIFO存储器位于LCDCDMA。
当FIFO空或部分空时,LCDCDMA要求从基于突发传输模式的帧存储器中取来数据,存入要显示的图像数据,而这个帧存储器是LCD控制器在RAM中开辟的一片缓冲区。
当这个传输请求被存储控制器中的总线仲裁器接收到后,从系统存储器到内部FIFO就会成功传输4个字。
FIFO的总大小是28个字,其中低位FIFOL是12个字,高位FIFOH是16个字。
S3C2410有两个FIFO来支持双扫描显示模式。
在单扫描模式下,只使用一个FIFO(FIFOH>。
2.4TFT控制器操作
S3C2410支持STN-LCD和TFT-LCD,这里我们只介绍其对TFT-LCD的控制。
TIMEGEN产生LCD驱动器的控制信号,如VSYNC、HSYNC、VCLK、VDEN和LEND等。
这些控制信号与REGBANK寄存器组中的LCDCON1/2/3/4/5寄存器的配置关系相当密切,基于LCD控制寄存器中的这些可编程配置,TIMEGEN产生可编程控制信号来支持不同类型的LCD驱动器。
VSYNC和HSYNC脉冲的产生依赖于LCDCON2/3寄存器的HOZVAL域和LINEVAL域的配置。
HOZVAL和LINEVAL的值由LCD屏的尺寸决定,如下公式:
HOZVAL=水平显示尺寸-1(1>
LINEVAL=垂直显示尺寸-1(2>
VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域。
VCLK和CLKVAL的关系如下,其中CLKVAL的最小值是0:
VCLK(Hz>=HCLK/[(CLKVAL+1>×2](3>
帧频率是VSYNC信号的频率,它与LCDCON1和LCDCON2/3/4寄存器的VSYNC、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有关系。
大多数LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:
FrameRate=1/{[(VSPW+1>+(VBPD+1>+(LINEVAL+1>+(VFPD+1>]×[(HSPW+1>+
(HBPD+1>+(HFPD+1>+(HOZVAL+1>]×[2×(CLKVAL+1>/(HCLK>]}(4>
参照CJM10C0101的参数和公式(1>、(2>,可得出HOZVAL=639。
LINEVAL=479。
其余主要寄存器的值在下面给出。
3CJM10C0101的逻辑、时序要求[2]
各时间参数见表1。
根据时序要求,我们设定VM/VDEN信号作LCD的ENAB信号,VCLK信号作LCD的NCLK信号。
要想得到合适的VM和VCLK波形,就要正确设定寄存器的值,根据寄存器的值与VM和VCLK波形的关系,我们设定了如下关键寄存器的值:
HSPW=10。
HBPD=100。
HFPD=47。
VSPW=1。
VBPD=37。
VFPD=4
S3C2410的HCLK工作频率为100MHz左右,因此根据公式(3>设CLKVAL=1。
这些值将在驱动程序中得到具体体现。
4硬件驱动电路组成
因为开发板引出管脚有限,只引出了16根视频数据线,所以我们只利用这16根数据线扩充为18根作CJM10C0101的数据输入线,即RB信号的最低两位共用一根数据线。
CJM10C0101要求其电源电压Vdd典型值为5V,并且LCD数据和控制信号的高电平输入电压V在[3.5V,Vdd]范围内,低电平输入电压Vil在[0,1.5V]范围内,故用4片74LVC4245进行3~5V的逻辑电平转换,具体电路如图4。
同时考虑到通用性,使74LVC4245的电源为3V/5V可选,这样也能驱动3V逻辑电平的TFT-LCD。
5嵌入式Linux下驱动程序的开发[6]
FrameBuffer是出现在Linux2.2.xx内核当中的一种驱动程序接口,对应的源文件在linux/drivers/video/目录下,总的抽象设备文件为fbcon.c。
这种接口将显示设备抽象为帧缓冲区。
用户可以将它看成是显示内存的一个映像。
在使用帧缓冲时,Linux是将显卡置于图形模式下的。
我们根据以上对LCD各主要寄存器设置的分析得出的结果,开发了基于FrameBuffer机制的S3C2410fb驱动程序。
下面是经过调试成功的部分代码,作用是对显示屏幕初始化和设置LCD控制寄存器的值。
/*s3c2410fb.c*/
………………
#ifdefCONFIG-S3C2410-SMDK
statICstructs3c2410fb-mach-infoxxx-stn-info-initdata={
pixclock:
174757,bpp:
16,
#ifdefCONFIG-FB-S3C2410-EMUL//显示屏幕初始化
xres:
96,
#else
xres:
640,
#endif
yres:
480,
hsync-len:
5,vsync2len:
1,
left-margin:
7,upper-margin:
1,
right-margin:
3,lower-margin:
3,
sync:
0,cmap-static:
1,
reg:
{//设置LCD控制寄存器的值
lcdcon1:
LCD1-BPP-16T|LCD1-PNR-TFT|LCD1-CLKVAL(1>,
lcdcon2:
LCD2-VBPD(37>|LCD2-VFPD(4>|LCD2-VSPW(1>,
lcdcon3:
LCD3-HBPD(100>|LCD3-HFPD(47>,
lcdcon4:
LCD4-HSPW(10>|LCD4-MVAL(13>,
lcdcon5:
LCD5-FRM565|LCD5-HWSWP|LCD5-PWREN,
},
}。
#endif
………………
6结果
经过硬件方面的调试修改,在S3C2410开发板的VCLK和VM脚成功得到了CJM10C0101所需的时钟信号和复合控制信号,见图5,6,7和8。
在软件方面修改了S3C2410的驱动程序,经编译整个系统后再重新写到Flash中,重启后能正确显示原系统的静态启动画面,并且画面清晰稳定,达到了预期的效果。
这套装置可用在工业控制和车载通信等领域作显示输出设备,再加上适当的触摸屏可组成方便可靠的输入输出设备。
图5VCLK波形(tc=1/25.28MHz=39.56ns>
图6VM波形(t1=16.6ms>
图7VM波形(t3=1/31.6kHz=31.65Ls>
图8VM波形(t1-t2=1.432ms>
参考文献:
[1]SamsungElectronICs.User'sManualS3C2410X32-BitRISCMicroprocessor[Z].2003.372-413.
[2]吉林彩晶数码高科显示器有限公司.TFT-LCD模块产品说明书CJM10C0101[Z].2000.
[3]贾金萍,张鹏,张志东.液晶显示器电源管理的电路设计[J].液晶与显示,2004,19(3>:
2132217.
[4]杨宏业,张跃,何荣森.基于SA1110微处理器的掌上电脑液晶显示器的设计与实现[J].电子技术应用,2003,(1>:
10212.
[5]丁国华,胡容强.S3C44B0X内置的LCD控制器及其应用[J].世界电子元器件,2004,2(105>:
38241.
[6]魏永明,骆刚,姜君,等译.Linux设备驱动程序(第二版>[M].北京:
中国电力出版社,2002.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARMSC 驱动 TFTLCD 研究 报告 EEVP
