0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你ARM芯片S3C2410的TFT-LCD驱动方法

电子工程师 来源:西安电子科技大学 作者:童庆平,刘笃仁 2021-03-15 15:01 次阅读

引言

S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,主频率可达203MHz,适用于信息家电、Smart Phone、Tablet、手持设备、移动终端等领域。其中,集成的LCD控制器具有通用性,可与大多数的LCD显示模块接口

PD064VT5是一种用非晶硅TFT作为开关器件的有源矩阵液晶显示器,该模块包括TFT-LCD显示屏、驱动电路和背光源,其接口为TTL电平。分辨率为640 x480像素,可通过18bit数据信号显示262 144种色彩。

1 S3C2410的LCD控制器

S3C2410中的LCD控制器可用于传输视频数据并产生必要的控制信号(像VFRAME、VLINE、VCLK、VM等)。S3C2410的输出视频数据端口VD [23:0]的示意图如图1所示。

通常使用的LCD控制管脚的定义如下:

VCLK:像素时钟信号;

VD [23:0]:LCD像素输出端口;

VM/VDEN/TP:LCD驱动器AC偏置信号(STN)/数据使能信号(TFT)/SEC TFT源驱动器数据加载脉冲信号复用端口。

1.1 S3C2410中的LCD控制寄存器

S3C2410的LCD控制寄存器主要有LCDCON1寄存器、LCDCON2寄存器、LCDCON3寄存器、LCDCON4寄存器和LCDCON5寄存器。

1.2 控制流程

由图1可见,S3C2410中的LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成。其中REGBANK有17个可编程寄存器组和256x16的调色板存储器,可用来设定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)。

1.3 TFT控制器操作

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脉冲的产生则依赖于LCD-CON2/3寄存器的HOZVAL域和LINEVAL域的配置。HOZVAL和L NEVAL的值由LCD屏的尺寸决定:

HOZVAL=水平显示尺寸-1 (1)

LINEVAL=垂直显示尺寸-1 (2)

VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域。VCLK和CLKVAL的关系如下(其中CLKVAL的最小值是0):

VCLK(Hz)=HCLK/[(CLKVAL+1)x2] (3)

一般情况下,帧频率就是VSYNC信号的频率,它与LCDCON1和LCDCON2/3/4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有关系。大多数LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:

Frame Rate=1{[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]×[(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)]×[2×(CLKVAL+1)/(HCLK)]} (4)

参照PD064VT5的参数和公式(1)、(2)可得出:HOZVAL=639;LINEVAL=479。其余主要寄存器的值在下面给出。

2 PD064VT5的逻辑时序

根据该时序要求,设计时可设定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。

3 嵌入式Linux下驱动程序的开发

图3所示是S3C2410与PD064VTS的硬件连接电路。

开发该嵌入式系统驱动程序时,FrameBuffer可作为出现在Linux2.2.xx内核当中的一种驱动程序接口。对应的源文件在linux/driver s/video/目录下,总的抽象设备文件为fbcon.c。这种接口将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映像。但在使用帧缓冲时,Linux是将显卡置于图形模式下的。

根据以上对LCD各主要寄存器设置的分析所得出的结果,笔者开发了基于FrameBuffer机制的S3C2410fb驱动程序。下面是调试成功的部分代码,作用是初始化显示屏幕和设置LCD控制寄存器的值。

4 结束语

本设计经过硬件方面的调试修改,在S3C2410开发板的VCLK脚和VM脚成功得到了PD064VT5所需的时钟信号和复合控制信号;同时通过在软件方面修改S3C2410的驱动程序,并经编译整个系统后再重新写到Flash中,可以在重启后正确显示原系统的静态启动画面,而且画面清晰稳定,达到了预期的效果。该装置可用于工业控制和车载通信等领域的显示输出设备,如再加上适当的触摸屏,还可组成方便可靠的输入输出设备。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409112
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8651

    浏览量

    361777
  • TFT-LCD
    +关注

    关注

    12

    文章

    148

    浏览量

    31438
收藏 人收藏

    评论

    相关推荐

    TFT-LCD双高压扫描驱动器TPS65193数据表

    电子发烧友网站提供《TFT-LCD双高压扫描驱动器TPS65193数据表.pdf》资料免费下载
    发表于 04-03 09:47 0次下载
    <b class='flag-5'>TFT-LCD</b>双高压扫描<b class='flag-5'>驱动</b>器TPS65193数据表

    TFT-LCD面板制作流程

    电子发烧友网站提供《TFT-LCD面板制作流程.pdf》资料免费下载
    发表于 03-24 09:32 0次下载

    TFT-LCD双高压扫描驱动器TPS65193数据表

    电子发烧友网站提供《TFT-LCD双高压扫描驱动器TPS65193数据表.pdf》资料免费下载
    发表于 03-07 13:35 0次下载
    <b class='flag-5'>TFT-LCD</b>双高压扫描<b class='flag-5'>驱动</b>器TPS65193数据表

    用于TFT-LCD电视面板的紧凑型LCD偏置电源TPS65167数据表

    电子发烧友网站提供《用于TFT-LCD电视面板的紧凑型LCD偏置电源TPS65167数据表.pdf》资料免费下载
    发表于 03-06 16:41 0次下载
    用于<b class='flag-5'>TFT-LCD</b>电视面板的紧凑型<b class='flag-5'>LCD</b>偏置电源TPS65167数据表

    STM32H5开发(6)----SPI驱动TFT-LCD

    在嵌入式领域,TFT-LCD屏是最常用的显示解决方案之一,因为它们提供了丰富的颜色和高分辨率的图像显示能力。STM32H5作为ST的高性能微控制器系列,具备了强大的处理能力和多种通信接口,非常适合于驱动TFT-LCD显示屏,该液
    的头像 发表于 12-01 16:45 1090次阅读
    STM32H5开发(6)----SPI<b class='flag-5'>驱动</b><b class='flag-5'>TFT-LCD</b>屏

    瑞萨e2studio(26)----SPI驱动TFT-LCD

    在嵌入式领域,TFT-LCD屏是最常用的显示解决方案之一,因为它们提供了丰富的颜色和高分辨率的图像显示能力。RA4M2作为瑞萨的微控制器系列,具备了强大的处理能力和多种通信接口,非常适合于驱动TFT-LCD显示屏,该液晶屏st7
    的头像 发表于 12-01 16:35 363次阅读
    瑞萨e2studio(26)----SPI<b class='flag-5'>驱动</b><b class='flag-5'>TFT-LCD</b>屏

    TFT-LCD显示控制器RA8889ML3N原理图免费下载

    TFT-LCD液晶显示控制方案参考电路-原理图,适合1366*1024以下分辨率
    发表于 11-06 18:19 5次下载

    TFT-LCD显示控制芯片选型表

    电子发烧友网站提供《TFT-LCD显示控制芯片选型表.pdf》资料免费下载
    发表于 11-03 15:26 3次下载

    TFT-LCD液晶显示方案的选型

    基于普通MCU的TFT-LCD液晶显示方案
    的头像 发表于 11-03 14:35 470次阅读
    <b class='flag-5'>TFT-LCD</b>液晶显示方案的选型

    MAX25520: Automotive 2-Channel TFT-LCD Power Supply Data Sheet MAX25520: Automotive 2-Channel TFT-LCD Power Supply Data Sheet

    电子发烧友网为你提供ADI(ADI)MAX25520: Automotive 2-Channel TFT-LCD Power Supply Data Sheet相关产品参数、数据手册,更有
    发表于 10-16 18:54
    MAX25520: Automotive 2-Channel <b class='flag-5'>TFT-LCD</b> Power Supply Data Sheet MAX25520: Automotive 2-Channel <b class='flag-5'>TFT-LCD</b> Power Supply Data Sheet

    TFT-LCD Flicker的基础知识

    TFT-LCD利用电压变化控制液晶盒内电场的强弱,改变液晶分子排列方向,达到对光透过与否的控制。
    的头像 发表于 10-07 14:04 1991次阅读
    <b class='flag-5'>TFT-LCD</b> Flicker的基础知识

    使用MM32F3270 FSMC驱动TFT-LCD

    使用MM32F3270 FSMC驱动TFT-LCD
    的头像 发表于 09-27 15:34 470次阅读
    使用MM32F3270 FSMC<b class='flag-5'>驱动</b><b class='flag-5'>TFT-LCD</b>

    QVGA TFT-LCD直接驱动使用STM32F10xx FSMC外设

    电子发烧友网站提供《QVGA TFT-LCD直接驱动使用STM32F10xx FSMC外设.pdf》资料免费下载
    发表于 09-21 14:36 2次下载
    QVGA <b class='flag-5'>TFT-LCD</b>直接<b class='flag-5'>驱动</b>使用STM32F10xx FSMC外设

    如何为(不那么遥远的)未来的汽车TFT-LCD显示器供电

    用于汽车信息娱乐TFT-LCD显示器的电子设备必须最小,以限制PCB尺寸和成本。在回顾了典型的低集成度解决方案的缺点之后,我们介绍了一种使用具有串行通信的PMIC的新方法,该方法紧密集成了复杂的电源
    的头像 发表于 06-15 16:20 962次阅读
    如何为(不那么遥远的)未来的汽车<b class='flag-5'>TFT-LCD</b>显示器供电

    TFT-LCD电容触摸屏模块(RGB接口)驱动时序设计

    上两篇已经总结和分享了RGB接口TFT-LCD触摸屏的相关内容。本篇使用Verilog语言实现RGB的驱动时序。
    的头像 发表于 05-25 12:47 2431次阅读
    <b class='flag-5'>TFT-LCD</b>电容触摸屏模块(RGB接口)<b class='flag-5'>驱动</b>时序设计