amobbs.com 阿莫电子技术论坛

标题: Tiny6410点亮S70LCD的裸机教程 [打印本页]

作者: 王者之心style    时间: 2014-10-10 15:59
标题: Tiny6410点亮S70LCD的裸机教程
本帖最后由 王者之心style 于 2014-10-10 15:58 编辑

1.原理图分析
左图是tiny6410实际LCD电路图,右图是S70液晶屏参考电路图。在左图中,VDD5V_1,VDD5V_2是用来调节背光的引脚。VD0-VD23对应右图的R0-B7,分为三组,是R,G,B三原色,每组8个引脚。VDEN-VCLK是LCD控制配置用管脚。下面AIN6-AIN5是触摸屏控制引脚。
[attach]226212[/attach][attach]226213[/attach]
根据原理图知Rx和Gx连GPIx,Bx连GPJ0-GPJ7。控制信号连GPG8-GPJ11。
[attach]226214[/attach]


2.芯片手册导读

2.1
配置GPIO

首先配置GPIO的引脚为LCD模式。根据截图应全部填入10。因此代码应为,GPICON = 0xAAAAAAAA;

[attach]226215[/attach]

GPJ的前8位也一样。
[attach]226216[/attach]
GPJ8-GPJ11配成LCD控制器的信号模式。
[attach]226217[/attach]
所以代码为GPJCON = 0x00AAAAAA;
2.2配置LCD控制器
根据手册的步骤来配置。
[attach]226218[/attach]
l     配置MIFPCON为普通模式

根据图示,需将MIFPCON的第3位填入0。所以代码为MIFPCON&= ~(1<<3);
[attach]226219[/attach]
l     配置SPCON为RGB模式
根据图示将SPCON的第1和0位填入01,所以代码为SPCON =  (SPCON & ~(0x3))| 1;
[attach]226221[/attach]
l     配置VIDCON0,设置接口类型,时钟,极性和使能LCD控制器。
第27和26位填入00,再次配成RGB模式。
[attach]226222[/attach]
第18和17位填入00,配成RGB并行模式。
[attach]226223[/attach]

第16位填入0,配置时钟。
[attach]226225[/attach]
设置时钟源的系数。此处应根据LCD芯片手册填入CLKVAL的值。
[attach]226226[/attach]
根据LCD手册可以看出CLK的标准值是33.3M,根据上图公式,Video Clock Source是HCLK,大小是133M,因此33.3 = 133 / (CLKVAL + 1), 所以CLKVAL约等于3。因此向第16位填入3。
[attach]226428[/attach]
向第5位填入0,配置成普通模式.
[attach]226429[/attach]
向第4位写入1,选择CLKVAL_F。
[attach]226430[/attach]
向第3和第2位写入00,选择时钟源位HCLK。
[attach]226433[/attach]
向第1和第0位写入11,使能LCD控制器。
[attach]226434[/attach]
最终代码为VIDCON0 =(0<<26)|(0<<17)|(0<<16)|(3<<6)|(0<<5)|(1<<4)|(0<<2)|(3<<0);
l     配置VIDCON1,设置信号极性。
向第6和第5位填入11,使HSYNC和VSYNC的信号波形的极性为相反。
[attach]226435[/attach]
下方第一幅图是S3C6410提供的时序图,可以看到HSYNC和VSYNC的信号波形开始是高电平。第二幅图是S70手册提供的时序图,可以看到HSYNC和VSYNC的信号波形开始是低电平,所以要把极性设为相反。
[attach]226436[/attach]
代码为VIDCON1 |= 1<<5 | 1<<6;
l     配置VIDTCON0,设置VSYNC的三个参数。
根据下图所示,需配置VSPW, VBPD, LINEVAL,VFPD四个参数。去S70手册找。
[attach]226437[/attach]
根据S70给出的时序图可知,VSPW+1 = tvpw, VBPD +1 = tvb, LINEVAL + 1 = tvd, VFPD + 1 = tvfp。

由表知,VSPW可以设成2,VBPD为22,LINEVAL为479,VFPD为22。
[attach]226438[/attach][attach]226439[/attach]
根据下图,向第16位写入22,向第8位写入22,向第0位写入2。
[attach]226440[/attach]
最终代码为VIDTCON0 = VBPD<<16 | VFPD<<8 | VSPW<<0;
l    配置VIDTCON1,设置HSYNC的三个参数。
根据下图所示,需配置HSPW, HBPD,HOZVAL, HFPD四个参数。去S70手册找。
[attach]226443[/attach]
根据S70给出的时序图可知,HSPW+1 = thpw, HBPD +1 = thb, HOZVAL + 1 = thd, HFPD + 1 = thfp。

由表知,HSPW可以设成30,HBPD为46,HOZVAL为799,HFPD为210。
[attach]226444[/attach]
根据下图,向第16位写入46,向第8位写入210,向第0位写入30。
[attach]226445[/attach]
最终代码为VIDTCON1 = HBPD<<16 | HFPD<<8 | HSPW<<0;
l    配置VIDTCON2,设置长宽
根据上一节的计算,LINEVAL为479,HOZVAL为799。向第11位写入479,向第0位写入799。最终代码为VIDTCON2 = (LINEVAL << 11) |(HOZVAL << 0);
[attach]226446[/attach]
l     配置WINCON0,设置颜色格式。
向第5至2位写入1011,配置成24位格式。代码为WINCON0 |= 0xB<<2;
[attach]226448[/attach]
l     配置VIDOSD0A,VIDOSD0B,VIDOSD0C,设置边界。
A是左上角,B是右下角,C是整体大小。
[attach]226450[/attach]
最终代码为
#define LeftTopX     0
#define LeftTopY     0
#define RightBotX   799
#define RightBotY   479
VIDOSD0A = (LeftTopX<<11) | (LeftTopY << 0);
VIDOSD0B = (RightBotX<<11) | (RightBotY << 0);

VIDOSD0C = (LINEVAL + 1) * (HOZVAL + 1);
l    配置VIDW00ADD0B0,将framebuffer地址赋给LCD控制器。
代码为VIDW00ADD0B0 = FRAME_BUFFER;
[attach]226451[/attach]
代码为VIDW00ADD1B0 =(((HOZVAL + 1)*4 + 0) * (LINEVAL + 1)) & (0xffffff);
[attach]226452[/attach]
3.LCD代码设计
最终代码在下一附件。
[attach]226455[/attach]
如果各位网友觉得讲的还行,请在下面留言点赞。如果赞的多,我将在后续继续推出嵌入式linux的教学贴。











作者: changer15309    时间: 2014-10-10 16:51
不错~ 支持!
作者: 王者之心style    时间: 2014-10-11 12:11
changer15309 发表于 2014-10-10 16:51
不错~ 支持!

谢谢!
作者: 454234682    时间: 2014-10-11 15:54
不错,学习
作者: asj1989    时间: 2014-10-11 16:09
牛  请问裸机如何编译?用rvds?
作者: gallop020142    时间: 2014-10-11 16:10
支持,我买的6410吃灰两年多了
作者: 王者之心style    时间: 2014-10-11 21:32
454234682 发表于 2014-10-11 15:54
不错,学习


作者: 王者之心style    时间: 2014-10-11 21:33
asj1989 发表于 2014-10-11 16:09
牛  请问裸机如何编译?用rvds?

在linux环境下用gcc编译器变异
作者: 王者之心style    时间: 2014-10-11 21:33
gallop020142 发表于 2014-10-11 16:10
支持,我买的6410吃灰两年多了


作者: wangcjishu    时间: 2014-10-11 21:36
顶楼主,确实分析的不错,期待你的嵌入式linux的教学贴
作者: 王者之心style    时间: 2014-10-12 10:47
wangcjishu 发表于 2014-10-11 21:36
顶楼主,确实分析的不错,期待你的嵌入式linux的教学贴

谢谢支持

作者: suebillt    时间: 2015-5-11 16:34
神作,在找Tiny6410核心板LCD引脚所对应的RGB看到这个帮助很大哈哈
作者: 王者之心style    时间: 2015-6-6 20:29
suebillt 发表于 2015-5-11 16:34
神作,在找Tiny6410核心板LCD引脚所对应的RGB看到这个帮助很大哈哈






欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4