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开发板裸机程序系列09—PWM控制舵机
下一篇:2440裸机-14-中断与异常
推荐阅读
史海拾趣
FTDI公司(Future Technology Devices International)在电子行业中的发展充满了多个关键节点和故事,以下是五个相关故事,每个故事均基于事实描述:
1. 创立与早期发展
FTDI公司成立于1992年3月13日,由弗雷德·达特(Fred Dart)创立。起初,公司专注于为个人电脑市场提供服务,其首发产品是针对主板芯片组的解决方案。这些产品被成功应用于IBM的AMBRA和PS/2系列个人电脑上,为当时的计算机技术发展做出了贡献。这一时期的成功为FTDI奠定了坚实的基础,并展示了其在芯片设计领域的初步实力。
2. USB桥接芯片领域的崛起
随着计算机技术的快速发展,FTDI敏锐地捕捉到了USB接口技术的潜力。公司开始专注于USB桥接芯片的研发与生产,并逐渐在这一领域崭露头角。其MM232R和USB-COM232-PLUS1等接口产品因其出色的连接性和兼容性而广受好评。FTDI的USB桥接芯片广泛应用于汽车电子、IOT互联网、工业产品、医疗设备、新能源以及高端消费电子等多个领域,逐步确立了其在全球USB桥接芯片市场的领先地位。
3. 全球化布局与业务拓展
为了进一步扩大市场份额,FTDI积极实施全球化战略。公司在新加坡设立了业务运营总部,并在全球范围内建立了完善的销售和服务网络。这一布局不仅提升了FTDI在全球市场的竞争力,还为其带来了更多的商业机会。同时,FTDI不断拓展产品线,满足不同领域客户的需求,进一步巩固了其在USB桥接芯片领域的市场地位。
4. 并购与合作
在发展过程中,FTDI也通过并购与合作的方式不断壮大自身实力。例如,在2022年,FTDI被电连技术通过发行股份及支付现金的方式收购,成为电连技术的控股子公司。这次并购不仅为FTDI带来了更多的资金和资源支持,还为其未来的发展注入了新的动力。同时,FTDI也与其他行业巨头建立了广泛的合作关系,共同推动电子行业的发展。
5. 技术创新与市场引领
FTDI始终将技术创新作为公司发展的核心驱动力。公司不断投入研发资源,推出具有自主知识产权的新产品和技术解决方案。这些创新成果不仅提升了FTDI的产品竞争力,还为其在全球市场树立了良好的品牌形象。同时,FTDI还积极参与行业标准的制定和推广工作,致力于推动整个电子行业的技术进步和发展。
以上五个故事展示了FTDI公司在电子行业中的发展历程和关键节点。从创立初期的默默无闻到如今的全球领先企业,FTDI凭借其敏锐的市场洞察力、强大的技术实力和不懈的创新精神,在电子行业中书写了属于自己的辉煌篇章。
Fastron公司起源于XXXX年的德国,凭借其卓越的技术和产品质量,逐渐在电感器领域崭露头角。随着业务的发展,Fastron不仅保留了德国的精湛工艺和严格品质控制,还成功地将业务拓展到了东欧和东南亚。这些地区的生产设施均通过TS 16949和ISO 14001认证,确保了产品的全球统一品质。
随着公司业务的不断发展壮大,Globaltech开始着手进行全球化布局。公司在全球多个地区设立了研发中心和销售中心,以便更好地服务全球客户。同时,公司还注重可持续发展和社会责任,积极参与公益事业和环保活动。这些举措不仅提升了公司的社会形象和品牌价值,也为公司的长期发展奠定了坚实的基础。
以上五个故事展示了Globaltech Semiconductor Co., Ltd.在电子行业中的发展历程和关键里程碑。通过技术创新、市场拓展、研发实力提升、战略调整和全球化布局等措施,公司不断壮大自身实力,并在全球半导体行业中占据了一席之地。
EMC一直致力于技术研发和创新能力的提升。公司拥有一支专业的研发团队,不断投入资金和人力进行新产品的研发和技术创新。通过不断的努力,EMC在电气元件领域取得了多项专利和技术成果,其产品质量和技术水平在行业中处于领先地位。同时,EMC还积极参与行业标准的制定和推广工作,为推动整个行业的发展做出了积极贡献。
在自动驾驶技术快速发展的同时,AURORA公司也积极寻找商业化突破口。公司创始人认为,自动驾驶卡车商业化是一个具有巨大潜力的市场。因此,AURORA优先瞄准了自动驾驶卡车商业化领域,与FedEx、Paccar、Schneider、Werner和Xpress等多家平台公司建立了试点合作关系。通过在实际场景中测试和验证自动驾驶技术,AURORA不断积累经验和数据,为未来的商业化落地奠定了坚实基础。
这五个故事展示了AURORA公司在电子行业中的发展历程和取得的成就。从初创时期的挑战与机遇到技术实力的不断提升,再到与汽车制造商的深度合作、垂直产业链的整合与布局以及自动驾驶卡车商业化的探索,AURORA公司凭借其卓越的技术实力和前瞻性的战略眼光,在电子行业中逐渐崭露头角。未来,我们有理由相信AURORA将继续在自动驾驶领域取得更多突破和创新。
本帖最后由 paulhyde 于 2014-9-15 03:02 编辑 我想用MOS管做开关,实现自动转换,当电压5v时走另一个通道,实现自动切换。 各位版主,高手,大侠,牛人们帮我出个主意吧 … 查看全部问答∨ |
|
用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! 还请麻烦告诉下怎么连接那个图!还有代码!… 查看全部问答∨ |
硬件平台:2410 软件: wince420 在应用中,IIS有4条线,其中一条是左右声道的控制(LRCLK),在设置GPIO寄存器的时候,必须把他设置成相应的功能。 问题来了,如果现在我正在播放声音,但是我又需要将LRCLK这个引脚配置成其他的功 ...… 查看全部问答∨ |
[深圳] 创业公司,招聘 嵌入式 硬件开发人员 结构 工艺工程师 小公司,刚成立 ,业务稳定,招聘硬件开发人员。 薪资从优,发展空间大。 职位:硬件工程师 职位要求: 1。负责电路板的设计与开发工作。熟练使用相关设计软件(POWER PCB、PROTEL、ORCAD等)。 2。对模拟/数字电路有较高的设计能力。二年电子 ...… 查看全部问答∨ |
设置串口中断时提示USART1_IRQChannel未定义,后来发现3.0库里少了个stm32f10x_nvic.h头文件,从2.01库里考了一个 ...… 查看全部问答∨ |