搜索
bottom↓
回复: 81

玩转 ARM11(S3C6410 + 7寸TFT(800x480,24bpp)) 之 LCD显示测试

[复制链接]

出0入0汤圆

发表于 2010-10-29 21:19:00 | 显示全部楼层 |阅读模式
本人使用S3C2450已经很长一段时间,由于前几天板子被意外损坏,只好"被迫"转移到ARM11平台,经过两天的努力,完成了系统BSP移植.也正好验证了下应用程序与硬件平台的无关性,原本运行在S3C2450平台上的应用程序,无需重新编译,便可直接在S3C6410上运行.

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-10-29 21:21:08 | 显示全部楼层
S3C6410 LCD初始化程序:


static        int        lcd_init(void)
{

#if 1

// s3c6410 AT070TN 7.0"    (800x480)
#define VBPD                    (23)       
#define VFPD                    (23)       
#define VSPW                    (23)

#define HBPD                    (46)
#define HFPD                    (46)       
#define HSPW                    (46)       

#define FRAME_RATE        30

#define LCD_XSIZE_TFT     (LCD_XSIZE)   
#define LCD_YSIZE_TFT     (LCD_YSIZE)
#define LCD_SCR_XSIZE     (LCD_XSIZE)           // virtual screen  
#define LCD_SCR_YSIZE     (LCD_YSIZE)
#define LCD_SCR_XSIZE_TFT (LCD_XSIZE)           // virtual screen  
#define LCD_SCR_YSIZE_TFT (LCD_YSIZE)



//* VIDCON0       

#define        VIDOUT                (0)
#define        L1_DATA16        (4)
#define        L0_DATA16        (4)
#define        PNRMODE                (0)       
#define        CLKVALUP        (1)
#define        CLKVAL_F        (6)
#define        CLKDIR                (1)
#define        CLKSEL_F        (0)


//* VIDCON1
#define VCLK_INVERTED                        (0)
#define HSYNC_INVERTED                        (0)
#define VSYNC_INVERTED                        (0)
#define VDEN_INVERTED                        (0)


//* WINCON1to4
#if(LCD_BPP==16)
#define BITSWP                (0)        //shift on basis of half-word swap
#define BYTSWP                (0)        //shift on basis of half-word swap
#define HAWSWP                (1)        //shift on basis of half-word swap
#endif

#if(LCD_BPP==24)
#define BITSWP                (0)        //shift on basis of half-word swap
#define BYTSWP                (0)        //shift on basis of half-word swap
#define HAWSWP                (0)        //shift on basis of half-word swap
#endif

#define WINCONx_4WORD_BURST                        (2)
#define WINCONx_8WORD_BURST                        (1)
#define WINCONx_16WORD_BURST                (0)
#define WINCONx_PLANE_BLENDING                (0)
#define WINCONx_PIXEL_BLENDING                (1)
#define WINCONx_1BPP_PALLET                        (0)
#define WINCONx_2BPP_PALLET                        (1)
#define WINCONx_4BPP_PALLET                        (2)
#define WINCONx_8BPP_PALLET                        (3)
#define WINCONx_8BPP_NO_PALLET                (4)
#define WINCONx_16BPP_565                        (5)
#define WINCONx_16BPP_A555                        (6)
#define WINCONx_16BPP_1555                        (7)
#define WINCONx_18BPP_666                        (8)
#define WINCONx_18BPP_A665                        (9)
#define WINCONx_19BPP_A666                        (10)
#define WINCONx_24BPP_888                        (11)
#define WINCONx_24BPP_A887                        (12)
#define WINCONx_25BPP_A888                        (13)
#define WINCONx_ALPHA_MODE_0                (0)
#define WINCONx_ALPHA_MODE_1                (1)

#define    LCD_HOZVAL_TFT          (LCD_XSIZE_TFT-1)
#define    LCD_LINEVAL_TFT         (LCD_YSIZE_TFT-1)


        int x,y,m,n;
        U8 pagewidth_in_byte=0,offsize_in_byte=0;       
        U8 clkval=0;
        U16 hsync_cnt,vclk_cnt;
        U16 lcd_horizon_value,lcd_line_value;
        U8 lcd_vbpd,lcd_vfpd,lcd_vspw,lcd_hbpd,lcd_hfpd,lcd_hspw;
        U8 lcd_frame_rate;       
        int i;

               
        //// LCD Port
        rGPICON   = 0xAAAAAAAA;
        rGPIPUD   = 0xAAAAAAAA;
       
        rGPJCON   = 0xAAAAAAAA;
        rGPJPUD   = 0xAAAAAAAA;
        lcd_horizon_value = LCD_XSIZE;
        lcd_line_value = LCD_YSIZE;
        lcd_vbpd = VBPD;
        lcd_vfpd = VFPD;
        lcd_vspw = VSPW;
        lcd_hbpd = HBPD;
        lcd_hfpd = HFPD;
        lcd_hspw = HSPW;
        lcd_frame_rate = FRAME_RATE;

        pagewidth_in_byte = lcd_horizon_value/8*16;               
        offsize_in_byte = 0;
       
        hsync_cnt         = (lcd_vbpd+lcd_vfpd+lcd_vspw+lcd_line_value);
        vclk_cnt          = (lcd_hbpd+lcd_hfpd+lcd_hspw+lcd_horizon_value);
        clkval = (U8)(((float)CPU_GetHclkHZ()/(float)(hsync_cnt*vclk_cnt*lcd_frame_rate*2))+0.5)-1;       
       
        rVIDCON0 &= ~(3<<0); // ENVID Off using Per Frame method
        rWINCON0 &= ~(1<<0);

        rVIDCON0 = (VIDOUT<<26)|(L1_DATA16<<23)|(L0_DATA16<<20)|(PNRMODE<<17)|(CLKVALUP<<16)|(clkval<<6)|(CLKDIR<<4)|(CLKSEL_F<<2)|(0<<0);
  
       
        rVIDCON1 = (VCLK_INVERTED<<7)|(HSYNC_INVERTED<<6)|(VSYNC_INVERTED<<5)|(VDEN_INVERTED<<4);

        rVIDTCON0 = ((lcd_vbpd-1)<<16)|((lcd_vfpd-1)<<8)|(lcd_vspw-1);
        rVIDTCON1 = ((lcd_hbpd-1)<<16)|((lcd_hfpd-1)<<8)|(lcd_hspw-1);
        rVIDTCON2 = ((lcd_line_value-1)<<11)|(lcd_horizon_value-1);

        #if(LCD_BPP==16)
        rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_8WORD_BURST<<9)|(WINCONx_16BPP_565<<2); // 16word burst, 16bpp,
        #endif
       
        #if(LCD_BPP==24)
        rWINCON0 = (BITSWP<<18)|(BYTSWP<<17)|(HAWSWP<<16)|(WINCONx_8WORD_BURST<<9)|(WINCONx_24BPP_888<<2); // 16word burst, 24bpp,
        #endif
       
        rVIDOSD0A = (0<<11)|(0);
        rVIDOSD0B = (lcd_horizon_value-1)<<11|(lcd_line_value-1);       
       
        rVIDW00ADD0B0 = (U32)LCD_Buffer;               
        rVIDW00ADD1B0 = (U32)LCD_Buffer + LCD_BUF_SIZE;
       
        rVIDW00ADD2 = (offsize_in_byte<<13)|(LCD_XSIZE*sizeof(LCD_COLOR));
       
       
        rVIDCON0 |= (3<<0);
        rWINCON0 |= (1<<0);
       
       
        DebugPrintf("LCDInit End(%dx%d,%dbpp)\n",LCD_XSIZE,LCD_YSIZE,LCD_BPP);

#endif

}

出0入0汤圆

 楼主| 发表于 2010-10-29 21:27:46 | 显示全部楼层
显示性能测试软件工程源码:

BitBlt -> 基本块传输速度测试ourdev_593860X8GOS1.rar(文件大小:77K) (原文件名:BitBlt_Test.rar)
StretchBlt -> 任意尺寸拉伸,缩放速度测试ourdev_593861N0TRZT.rar(文件大小:79K) (原文件名:StretchBlt_Test.rar)
RotateBlt -> 任意角度旋转速度测试ourdev_593862G0QXR5.rar(文件大小:78K) (原文件名:RotateBlt_Test.rar)

出0入0汤圆

 楼主| 发表于 2010-10-29 21:32:05 | 显示全部楼层
程序运行效果和显示性能测试:

(原文件名:DSC_1333.JPG)


(原文件名:DSC_1335.JPG)


(原文件名:DSC_1338.JPG)


(原文件名:DSC_1339.JPG)


(原文件名:DSC_1342.JPG)


(原文件名:DSC_1343.JPG)


(原文件名:DSC_1344.JPG)


(原文件名:DSC_1345.JPG)


(原文件名:DSC_1347.JPG)


(原文件名:DSC_1351.JPG)

出0入0汤圆

 楼主| 发表于 2010-10-29 21:40:45 | 显示全部楼层

(原文件名:DSC_1352.JPG)


(原文件名:DSC_1358.JPG)


(原文件名:DSC_1360.JPG)


(原文件名:DSC_1362.JPG)


(原文件名:DSC_1369.JPG)

出0入0汤圆

发表于 2010-10-29 21:46:12 | 显示全部楼层
只能用一个字来形容:你好牛!

出0入0汤圆

发表于 2010-10-29 21:49:20 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-10-29 21:54:05 | 显示全部楼层
暂时还没有做NandFlash驱动,系统内核固化在NorFlash中(AM29V160),应用程序是放在SD卡中加载运行(基于FAT文件系统).

出0入0汤圆

 楼主| 发表于 2010-10-29 21:58:58 | 显示全部楼层
系统内核执行文件(NorFlash版):
可烧录到S3C6410的NorFlash 0地址运行,或下载到RAM 0x50000000处直接运行

点击此处下载 ourdev_593892DBWBHR.rar(文件大小:146K) (原文件名:S3C6410_System.rar)

出0入0汤圆

发表于 2010-10-30 01:02:26 | 显示全部楼层
又见牛人~~~

liuwei 出的都是精品~~~~

出0入0汤圆

发表于 2010-10-30 09:04:19 | 显示全部楼层
这是自己写的GUI还是使用操作系统的啊?

出0入0汤圆

发表于 2010-10-30 09:09:39 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2010-10-30 09:16:57 | 显示全部楼层
回复【10楼】cy757
这是自己写的gui还是使用操作系统的啊?
-----------------------------------------------------------------------

自己写的GUI + 多进程OS +  FS

出0入0汤圆

发表于 2010-10-30 21:53:31 | 显示全部楼层
请教一下高手,s3c6410的lcd控制器能否在可以只刷新指定的区域像素? 而不整屏的刷新lcd.
我现在使用的atmel公司的arm9,发现不能刷新指定区域像素,只能一屏一屏的像素刷新。

出0入0汤圆

 楼主| 发表于 2010-10-30 21:59:10 | 显示全部楼层
可以用軟件實現

出0入0汤圆

发表于 2010-11-1 19:44:59 | 显示全部楼层
请问软件是怎么实现?

出0入0汤圆

 楼主| 发表于 2010-11-1 19:53:36 | 显示全部楼层
你是指软件层还是指硬件层的指定区域刷新.

出0入0汤圆

 楼主| 发表于 2010-11-1 19:54:07 | 显示全部楼层
这两个概念是不一样的

出0入0汤圆

发表于 2010-11-2 08:27:21 | 显示全部楼层
我指的是硬件层指定区域的刷新

出0入0汤圆

 楼主| 发表于 2010-11-2 09:38:49 | 显示全部楼层
不行,如果不定期刷新,液晶是无法正常显示的:液晶需要作周期性电压极性反转,才能正常显示.

出0入0汤圆

发表于 2010-11-2 14:24:16 | 显示全部楼层
好的,谢谢你啊!
如果用软件实现是不是可以用双缓存?

出0入0汤圆

 楼主| 发表于 2010-11-2 18:23:33 | 显示全部楼层
回复【20楼】llf021421 马中马
好的,谢谢你啊!
如果用软件实现是不是可以用双缓存?
-----------------------------------------------------------------------

可以,S3C2416/2450/6410可以支持硬件缓冲区切换,效率比软件模拟高出很多.

出0入0汤圆

发表于 2010-11-2 19:50:18 | 显示全部楼层
lz牛人,佩服

出0入0汤圆

发表于 2010-11-4 09:19:51 | 显示全部楼层
牛人啊,好久没有看到了!出来就是一个好东西!牛!

出0入0汤圆

 楼主| 发表于 2010-11-5 20:52:02 | 显示全部楼层
今天测试了一下 S3C6410的浮点运算性能:  ~~ 太强了 ~~

出0入0汤圆

发表于 2010-11-6 08:30:52 | 显示全部楼层
呵呵,A8更加是一个飞跃。呵呵。

出0入0汤圆

发表于 2010-11-6 08:37:52 | 显示全部楼层
看看

出0入0汤圆

 楼主| 发表于 2010-11-6 12:31:13 | 显示全部楼层
回复【25楼】goooogleman gooogleman
呵呵,a8更加是一个飞跃。呵呵。
-----------------------------------------------------------------------

A8是下一个目标

出0入0汤圆

发表于 2010-11-8 11:43:11 | 显示全部楼层
学习记号!

出0入0汤圆

发表于 2010-12-20 14:02:45 | 显示全部楼层
mark

出0入20汤圆

发表于 2010-12-20 14:42:22 | 显示全部楼层
楼主对A8是否有兴趣?我们的A8核心板出来后可以送给您一块测试.

出0入0汤圆

 楼主| 发表于 2010-12-21 00:09:48 | 显示全部楼层
回复【31楼】wenming  老王
-----------------------------------------------------------------------

你用哪家的A8?

出0入20汤圆

发表于 2010-12-21 00:14:15 | 显示全部楼层
TI am3517

出0入0汤圆

发表于 2010-12-21 00:47:03 | 显示全部楼层
学习记号!

出0入0汤圆

发表于 2010-12-21 10:42:08 | 显示全部楼层
太帅了,严重顶

出0入0汤圆

发表于 2010-12-21 17:32:46 | 显示全部楼层
高手做的东西就是牛!

出350入8汤圆

发表于 2010-12-23 10:26:51 | 显示全部楼层
要顶!

出0入0汤圆

发表于 2010-12-24 22:05:21 | 显示全部楼层
LZ的屏哪里买的??能给个链接吗?

出0入0汤圆

发表于 2010-12-26 15:30:27 | 显示全部楼层
mark,谢谢

出0入0汤圆

发表于 2011-1-18 21:04:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-19 18:18:58 | 显示全部楼层
友坚恒天的板子。。。mark

出0入0汤圆

发表于 2011-1-23 17:51:08 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-1-23 23:26:54 | 显示全部楼层
回复【38楼】liouravr
lz的屏哪里买的??能给个链接吗?
-----------------------------------------------------------------------

你想买屏?

出0入0汤圆

发表于 2011-1-26 11:45:11 | 显示全部楼层
好强啦,不错

出0入0汤圆

发表于 2011-1-26 12:44:30 | 显示全部楼层
回复【43楼】liuweiele  Liuwei
回复【38楼】liouravr
lz的屏哪里买的??能给个链接吗?
-----------------------------------------------------------------------

你想买屏?
-----------------------------------------------------------------------

您的这个屏怎么卖的?可以支持mini6410的板吗?谢谢

出0入0汤圆

发表于 2011-1-26 13:05:20 | 显示全部楼层
lz的屏哪里买的??能给个链接吗?
能否上屏的资料?

出0入0汤圆

发表于 2011-3-31 15:55:17 | 显示全部楼层
楼主的贴子,一定要顶

出0入0汤圆

发表于 2011-4-2 13:44:07 | 显示全部楼层
好贴  顶

出0入0汤圆

发表于 2011-4-9 00:21:46 | 显示全部楼层
好牛
头像被屏蔽

出0入0汤圆

发表于 2011-4-9 02:07:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入264汤圆

发表于 2011-4-9 09:20:23 | 显示全部楼层
厉害。

出0入0汤圆

发表于 2011-4-9 09:51:39 | 显示全部楼层
顶娄主!!!

出0入0汤圆

 楼主| 发表于 2011-4-9 17:34:13 | 显示全部楼层
回复【50楼】sczh01

楼主用的windows mobile 吧,是什麽版本呢
老实说windows mobile 开发产品还是可以的 (特别是d版 呵呵)
-----------------------------------------------------------------------

不是windows,自己开发的 多进程GUI操作系统

出0入0汤圆

发表于 2011-4-9 22:33:08 | 显示全部楼层
好东东,记号一下.

出0入0汤圆

发表于 2011-4-9 22:54:04 | 显示全部楼层
ding 1 xia

出0入0汤圆

发表于 2011-4-22 15:45:03 | 显示全部楼层
请教一下高手,在lcd上显示一幅静态的图片的原理是什么?
谢谢啦

出0入0汤圆

 楼主| 发表于 2011-6-8 10:23:42 | 显示全部楼层
回复【56楼】wuhuijie
请教一下高手,在lcd上显示一幅静态的图片的原理是什么?
谢谢啦

-----------------------------------------------------------------------

和数码管动态扫描显示的原理差不多;不过有一个明显不同点是:LCD需要周期性的反转驱动电压极性,这部分由LCD驱动器硬件完成,无需软件干预.

出0入0汤圆

发表于 2011-6-8 11:25:52 | 显示全部楼层
屏好,楼主做的效果更好

出0入0汤圆

 楼主| 发表于 2011-6-8 11:59:49 | 显示全部楼层
回复【31楼】wenming 老王
楼主对a8是否有兴趣?我们的a8核心板出来后可以送给您一块测试.
-----------------------------------------------------------------------

回复【33楼】wenming 老王
ti am3517
-----------------------------------------------------------------------

没问题,我可以帮你们把整个操作系统移植上去.

出0入0汤圆

发表于 2011-6-17 00:17:57 | 显示全部楼层
好贴  顶

出0入0汤圆

发表于 2011-7-3 21:03:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-7 09:23:18 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-7-7 10:21:21 | 显示全部楼层
回复【53楼】liuweiele Liuwei
回复【50楼】sczh01  
强  
楼主用的windows mobile 吧,是什麽版本呢  
老实说windows mobile 开发产品还是可以的 (特别是d版 呵呵)
-----------------------------------------------------------------------
不是windows,自己开发的 多进程gui操作系统
-----------------------------------------------------------------------

楼主可否帮忙代为开发HMI呢,我的邮箱:lrzxc@163.com

出0入0汤圆

 楼主| 发表于 2011-7-7 10:43:10 | 显示全部楼层
回复【64楼】lrzxc
回复【53楼】liuweiele liuwei
回复【50楼】sczh01   
强   
楼主用的windows mobile 吧,是什麽版本呢   
老实说windows mobile 开发产品还是可以的 (特别是d版 呵呵)  
-----------------------------------------------------------------------  
不是windows,自己开发的 多进程gui操作系统
-----------------------------------------------------------------------
楼主可否帮忙代为开发hmi呢,我的邮箱:lrzxc@163.com
-----------------------------------------------------------------------

可以的,可以先把你的<项目要求>发给我: liuweiele@163.com

出0入0汤圆

发表于 2011-7-7 11:12:12 | 显示全部楼层
回复【65楼】liuweiele Liuwei
回复【64楼】lrzxc  
回复【53楼】liuweiele liuwei  
回复【50楼】sczh01   
强   
楼主用的windows mobile 吧,是什麽版本呢   
老实说windows mobile 开发产品还是可以的 (特别是d版 呵呵)   
-----------------------------------------------------------------------   
不是windows,自己开发的 多进程gui操作系统  
-----------------------------------------------------------------------  
楼主可否帮忙代为开发hmi呢,我的邮箱:lrzxc@163.com
------------------------------------------------......
-----------------------------------------------------------------------

回复得好快啊。我整理下发给您。

出0入0汤圆

发表于 2011-7-7 12:06:37 | 显示全部楼层
牛人!

出0入0汤圆

发表于 2011-7-16 12:01:37 | 显示全部楼层
NAND

出0入0汤圆

发表于 2011-7-29 21:39:14 | 显示全部楼层
好犀利啊  我ARM7都还没玩通

出0入0汤圆

发表于 2011-10-10 15:29:48 | 显示全部楼层
不得不顶啊

出0入0汤圆

发表于 2011-10-10 19:49:25 | 显示全部楼层
牛啊

出0入0汤圆

发表于 2011-10-11 09:53:39 | 显示全部楼层
回复【21楼】liuweiele Liuwei
回复【20楼】llf021421 马中马
好的,谢谢你啊!  
如果用软件实现是不是可以用双缓存?
-----------------------------------------------------------------------
可以,s3c2416/2450/6410可以支持硬件缓冲区切换,效率比软件模拟高出很多.
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-10-19 16:49:29 | 显示全部楼层
能不能发点相关的教程,最近也在搞LCD,能不能给个联系方式,交流一下。

出0入0汤圆

发表于 2011-10-24 13:09:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-24 13:22:12 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2011-10-24 15:40:05 | 显示全部楼层
牛人啊,mark

出0入102汤圆

发表于 2011-11-4 23:52:45 | 显示全部楼层
#define VBPD      (23)
#define VFPD     (23)
#define VSPW     (23)

#define HBPD     (46)
#define HFPD     (46)
#define HSPW     (46)

#define FRAME_RATE 30
_________________________________

想问一下,这些值如何确定,有没有公式可用呢?
如果是4.3寸屏,如何从资料中找到?


INNOLUX 4.3inch TFT资料ourdev_691913AM5024.pdf(文件大小:348K) (原文件名:AT043TN24-4.3inch.pdf)

出0入0汤圆

发表于 2011-12-19 02:08:18 | 显示全部楼层
楼主个个都是精品!

出0入0汤圆

发表于 2012-1-6 00:05:25 | 显示全部楼层
牛人顶一把,回头学习一下

出90入372汤圆

发表于 2012-5-3 11:23:28 | 显示全部楼层
不错,收藏了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 10:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表