1.概述

S3C2440对LCD的支持还是很强大的,有广度有深度,这里只简单学一种,后续有精力再实践各种模式。


本篇从显示模式、显示时序、硬件连接、控制器寄存器设置等几个方面进行展开。


2.LCD显示模式


如前面所述,S3C2440支持多种灰度和彩色显示模式。这里只介绍16BPP(bit per pixel),即每个像素点用16bit,即占用2个字节。16BPP又有2种显示格式:5:6:5格式和5:5:5:1格式。

这里只以565格式为例。从上图可清楚的明白RGB三色对应的各位的对应关系。


3.LCD显示时序


LCD采用”之”字扫描,从左上角开始,将显示像素数据一行一行的显示到屏幕上,对于4.3寸屏,分辨率为480*272,所以需要扫描272行,每行480个像素数据,并且是在每一个VCLK像素时钟内读取这个像素数据。实践硬件扫描时,需要有VSYNC垂直同步信号,HSYNC水平同步信号,(可能还有消隐信号),所以实际扫描数要大于480*272。见下图:

水平同步信号的脉宽。(单位:VCLK个)


HSPW+1: 是HSYNC水平同步信号的脉宽。(单位:VCLK个)

HBPD+1: 是HSYNC之后还要经过(HBPD+1)个VCKL才是有效数据。(单位:VCLK个)

HOZVAL+1: 是有效数据,对于4.3寸屏就是480。(单位:VCLK个)

HFPD+1: 是一行末的(HFPD+1)个无效数据。(单位:VCLK个)

 

VSPW+1: 是VSYNC垂直同步信号的脉宽。(单位:1行扫描周期)

VBPD+1: 是VSYNC之后还要经过(VBPD+1)个行扫描周期才是有效数据。(单位:1行扫描周期)

1Line: 是有效数据,对于4.3寸屏就是272行。(单位:1行扫描周期)

VFPD+1: 是一帧末的(VFPD+1)个无效数据。(单位:1行扫描周期)


4. 硬件连接


S3C2440数据手册中LCD控制器结构描述如下图所示。

TQ2440的40Pin的LCD接口如下图所示。

TQ2440学习板上的4.3寸LCD屏是国显4.3寸数字液晶屏 KD43G18-40NB-A1,但是配套资料给出的LCD资料是” WXCAT43-TG6#001_V1.0.pdf”,在网上也没有找到KD43G18-40NB-A1的datasheet。” WXCAT43-TG6#001_V1.0.pdf”中接口规范如下图。

结合上面3个图,40个引脚说明如下:


VLED – Pin1, Pin2 接背光源

GPC[8:15] – VD[0:7]  Pin3_Pin10

GPD[0:15] – VD[8:23]  Pin12_Pin19, Pin21_Pin28

GPG4 – LCD_POWER  Pin30

GPE15 – I2CSDA  Pin31

GPE14 – I2CSCL  Pin32

GPC4 – VM(VDEN)  Pin33

GPC3 – VFRAME(VSYNC)  Pin34

GPC2 – VLINE(HYSNC)  Pin35

GPC1 – VCLK  Pin36

AIN6 – TSXM  Pin37

AIN7 – TSXP  Pin38

AIN4 – TSYM  Pin39

AIN5 – TSYP  Pin40

GND – Pin11, Pin20, Pin29


说明:


a.关于LCD供电

这里GPG4接LCD_POWER,可以控制LCD的开关,低电平将关闭LCD。


b.AIN4567,是与ADC功能共用的引脚,用于控制触摸功能。


c.GPIO的引脚功能。如下图。

d.关于GPC0,即LEND,行结束信号。查遍了TQ2440_V2核心板原理图和TQ2440底板原理图,没有看到这个引脚,所以确认这个引脚根本没有引出。实际编程也用不要这个引脚。


5. 控制器寄存器设置


简单编程只需要设置8个寄存器:


LCDCON1 – LCDCON5 : 功能模式的选择和设置

LCDADDR1 – LCDADDR3 : 设置图像帧数据地址的。


下面均已4.3寸屏, 480*272分辨率进行说明设置,先给出” WXCAT43-TG6#001_V1.0.pdf”中的相关数据如下。

由datasheet时序关系图可知,各参数对应关系如下:


thf = HFPD+1 , => HFPD=1

thp = HSPW+1, => HSPW=40

thb = HBPD+1, => HBPD=1  注意: thp+thb=43

tvf = VFPD+1, => VFPD=1

tvp = VSPW+1, => VSPW=9  

tvb = VBPD+1, => VBPD=1  注意:tvp+tvb=12


LCDCON1控制寄存器1

CLKVAL: 由datasheet可知VCLK的典型值为9MHz,HCLK在这里启动程序中设置为100MHz,因此:  9=100/[(CLKVAL+1)*2]=>CLKVAL=4.55555,取4 。


PNRMODE: 取值3,TFT LCD面板


BPPMODE: 取值12,16BPP


ENVID: 使能信号,取值1。


其它取默认值即可。因此, LCDCON1 = (4<<8)|(3<<5)|(12<<1)|(1<<0)

 

LINEVAL: (LINEVAL+1)即是LCD屏的垂直像素数,因此LINEVAL取值272-1=271


由上面计数可知,VBPD=1 , VFPD=1, VSPW=9


即: LCDCON2 = (1<<24)|(271<<14)|(1<<6)|(9<<0)

HOZVAL : (HOZVAL+1)即是LCD屏的水平像素数,因此HOZVAL取值480-1=479


由上面计数可知,HBPD=1 , HFPD=1


即: LCDCON3 = (1<<19)|(479<<8)|(1<<0)

LCDCON4 = (HSPW) 


LCDCON5

FRM565 : 取值1


INVVCLK : VCLK有效的极性,还得上datasheet图,如下。所以,应该取0.

8位和9位,取值1


3位:LCD的电源信号是否有效,这个值最后再设置为1.


BSWP和HWSWP取值含义如下:

根据帧数据实际存储情况取值。本程序取值为 BSWP=0,HWSWP=1

 

按照如下设置:


#define LOW21BITS(n)     ((n) & 0x1fffff)  // To get lower 21bits


volatile unsigned short LCD_BUFFER[272][480];


#define LCD_XSIZE_TFT          (480)        


#define LCD_YSIZE_TFT          (272)


rLCDSADDR1 = (((unsigned int)LCD_BUFFER >> 22) << 21) | LOW21BITS((unsigned int)LCD_BUFFER >> 1);


rLCDSADDR2 = LOW21BITS( ((unsigned int)LCD_BUFFER + (LCD_YSIZE_TFT * LCD_XSIZE_TFT *2) ) >> 1 );


rLCDSADDR3 = (0 << 11) | (LCD_XSIZE_TFT / 1);


这样,向LCD_BUFFER数组中写入颜色数据,就可以自动显示到TFT屏上了。


从上面可知,数据端口VD[0:23],共24个,推理可知正好可以传送RGB的24位像素数据。但是,我们这里的颜色数据是565模式,共16位,怎么传送的呢?S3C2440的datasheet中有说明,见下图: 

这样我们就明白了,并且空余的GPIO引脚还可以用做其它用途,呵呵


6.LCD显示程序


向帧数据数组中写入数据,LCD控制器将自动向显示屏显示,因此主程序只要向LCD_BUFFER中放置RGB数据即可。


本例,通过串口交互,按下字母n时,将分别循环显示绿,蓝,红。


可以向清屏函数参数代入不同颜色值即可。


00000 000000 11111 = 31     纯蓝

00000 111111 00000 = 2016   纯绿

11111 000000 00000 = 63488  纯红

 清屏函数:


void Lcd_ClearScr( unsigned int c)

{

unsigned int x,y ;

    for( y = 0 ; y < 272 ; y++ )

    {

    for( x = 0 ; x < 480 ; x++ )

    {

LCD_BUFFER[y][x] = c ;

    }

    }

}

关键字:S3C2440  开发板  裸机程序  LCD控制器 引用地址:S3C2440开发板裸机程序系列06—LCD控制器

上一篇:S3C2440开发板裸机程序系列09—PWM控制舵机
下一篇:2440裸机-14-中断与异常

推荐阅读

据外媒报道,Cabot公司被美国能源部选中,该公司参与了一项先进车用技术的研发项目,获得了部分资金支持。卡博特将利用其创新加工技术,致力于研发新一代锂离子电池低钴活性阴极的配方。钴是价格昂贵的关键性材料,主要从美国境外进口,随着电动车的蓬勃发展,未来存在一定的供货风险。Cabot的研发项目旨在探索更加可持续性、可负担的替代性材料,最终改善...
#include <intrins.h>#include <STC8.H>sbit lcd_sclk=P5^0; /*接口定义:lcd_sclk就是CLK*/sbit lcd_sid=P5^1; /*接口定义:lcd_sid就是MOSI*/sbit lcd_rs=P5^2; /*接口定义:lcd_rs就是DC*/sbit lcd_cs1=P5^3; /*接口定义:lcd_cs1就是OLED的片选CS1*/sbit Rom_OUT=P5^4; /*字库IC接口定义:Rom_OUT就是FSO*/sbit Rom_CS=P5^5; ...
2020年,是个特殊的一年,半导体行业面临着诸多独特而艰巨的挑战——摩尔定律接近物理极限、芯片创新成本增长、疫情的侵袭、反全球化浪潮和相关的经贸脱钩风险不断上升等。每个身在其中的人,都希望拨开这层层迷雾,探寻中国半导体行业真正的机遇与挑战。为此,10月14日,由中国半导体行业协会、中国电子信息产业发展研究院主办,北京赛迪会展有限公司、中...
前不久,任天堂最新一代的Switch OLED版正式发售了,其在性能方面没有任何升级,并且号称升级了更好的OLED屏幕,其实让原本就是远古画质的720P屏幕直接变成了“马赛克”,引起不少吐槽。  玩家们也纷纷为任天堂感到羞耻,在PS5、XSX这些主机性能已经甩的Switch开火箭都追不上的程度下,任天堂居然还是这么优哉游哉。  不过,事实上任天堂也...

史海拾趣

问答坊 | AI 解惑

电子类毕业设计中英文翻译5000字左右

哪位老大有的,麻烦发我邮箱manbu_yuzhong@yahoo.cn谢谢了!!…

查看全部问答∨

远距离无线数传模块

平流层对地约40km,有无相关无线数传模块可以达到传输jpg的目的?…

查看全部问答∨

怎样用MOS管做开关?

本帖最后由 paulhyde 于 2014-9-15 03:02 编辑 我想用MOS管做开关,实现自动转换,当电压5v时走另一个通道,实现自动切换。 各位版主,高手,大侠,牛人们帮我出个主意吧    …

查看全部问答∨

请教为什么没有嵌入式系统的专门论坛呢

看到有有关的话题,都在硬件讨论区,需要专门搜索才找得到。要是有个嵌入式系统专区就好了,我想了解有关DSP的问题。:)…

查看全部问答∨

用c#写的在wm里拨号函数rasDial总是报错691,但是手动拨号可以

大家好! 我用ras在phonebookEntry里面建立了一个entry要拨电信的#777,用户名ctnet@mycdma.cn,密码vnet.mobile,并把参数设置为了 rasEntry.dwCountryCode = 1; rasEntry.dwfNetProtocols = 4; rasEntry.dwfOptions = 4194824; rasEntry.dwF ...…

查看全部问答∨

请高手帮忙弄个电子日历!

请高手帮忙弄个电子日历. 就是利用数码管显示年月日星期。功能按键设置,包括时间的设置 , 定时时间设置和定时报警功能。 就这样.谢谢了.是用proteus软件,at89c51!    还请麻烦告诉下怎么连接那个图!还有代码!…

查看全部问答∨

wince下GPIO控制!谢谢

硬件平台:2410 软件:    wince420 在应用中,IIS有4条线,其中一条是左右声道的控制(LRCLK),在设置GPIO寄存器的时候,必须把他设置成相应的功能。 问题来了,如果现在我正在播放声音,但是我又需要将LRCLK这个引脚配置成其他的功 ...…

查看全部问答∨

[深圳] 创业公司,招聘 嵌入式 硬件开发人员 结构 工艺工程师

小公司,刚成立 ,业务稳定,招聘硬件开发人员。 薪资从优,发展空间大。 职位:硬件工程师 职位要求: 1。负责电路板的设计与开发工作。熟练使用相关设计软件(POWER PCB、PROTEL、ORCAD等)。 2。对模拟/数字电路有较高的设计能力。二年电子 ...…

查看全部问答∨

3.0库里怎么没有stm32f10x_nvic.h文件?

                                 设置串口中断时提示USART1_IRQChannel未定义,后来发现3.0库里少了个stm32f10x_nvic.h头文件,从2.01库里考了一个 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved