找回密码
 注册
搜索
查看: 1234|回复: 11

[讨论] 高手有没有LCD移植的可讲解讲解~

[复制链接]
发表于 2010-9-28 12:04:47 | 显示全部楼层 |阅读模式
最近学习驱动,在LCD这一块卡了,好多没看懂。特来讨教。

#define MAIN_LCD_16BIT_MODE --这个几bit几bit的定义,根据什么来定?

    #define MAIN_LCD_CMD_ADDR               LCD_PARALLEL0_A0_LOW_ADDR  --这个玩意儿怎么定??一定是这个值么?
    #define MAIN_LCD_DATA_ADDR              LCD_PARALLEL0_A0_HIGH_ADDR

                #if (defined(MAIN_LCD_8BIT_MODE))
                     #define MAIN_LCD_OUTPUT_FORMAT        LCM_8BIT_16_BPP_RGB565_1
                #elif (defined(MAIN_LCD_9BIT_MODE))
                    #define MAIN_LCD_OUTPUT_FORMAT        LCM_9BIT_18_BPP_RGB666_1
                #elif (defined(MAIN_LCD_16BIT_MODE))
                    #define MAIN_LCD_OUTPUT_FORMAT        LCM_16BIT_16_BPP_RGB565_1
                #elif (defined(MAIN_LCD_18BIT_MODE))
                    #define MAIN_LCD_OUTPUT_FORMAT        LCM_18BIT_18_BPP_RGB666_1 --这个format有怎么定?
                #endif

这么着东西研究了半天,还是不懂!

#if (defined(MAIN_LCD_8BIT_MODE))
                #define LCD_CtrlWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_CMD,((_data & 0xFF00)>>8));\ --为啥要偏移8位?
                        SET_LCD_CMD_PARAMETER(1,LCD_CMD,(_data & 0xFF));\ --为啥要写两次?
                        LCD_SEND_DMA_CMD(2);                }
                #define LCD_DataWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_DATA,((_data&0xFF00)>>8));                        SET_LCD_CMD_PARAMETER(1,LCD_DATA,(_data&0xFF));                        LCD_SEND_DMA_CMD(2);                }
        #elif (defined(MAIN_LCD_9BIT_MODE))
                #define LCD_CtrlWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_CMD,(((_data & 0xFF00))<<2));                        SET_LCD_CMD_PARAMETER(1,LCD_CMD,(((_data & 0x00FF))<<10));                        LCD_SEND_DMA_CMD(2);                }
                #define LCD_DataWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_DATA,(((_data & 0xFF00))<<2));                        SET_LCD_CMD_PARAMETER(1,LCD_DATA,(((_data & 0x00FF))<<10));                        LCD_SEND_DMA_CMD(2);                }
        #elif (defined(MAIN_LCD_16BIT_MODE))

                #define LCD_CtrlWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_CMD,(_data));                        LCD_SEND_DMA_CMD(1);                }
                #define LCD_DataWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_DATA,(_data));                        LCD_SEND_DMA_CMD(1);                }               
        #elif (defined(MAIN_LCD_18BIT_MODE))
                #define LCD_CtrlWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_CMD,(((_data & 0xFF00)<<2)|(_data&0xFF)<<1));\ --这里为啥只有一次??!!而上面则要两次??
                        LCD_SEND_DMA_CMD(1);                }
                #define LCD_DataWrite_ILI9327(_data)                 {                        SET_LCD_CMD_PARAMETER(0,LCD_DATA,(((_data & 0xFF00)<<2)|(_data&0xFF)<<1));                        LCD_SEND_DMA_CMD(1);                }
        #endif
发表于 2010-9-30 12:39:29 | 显示全部楼层
相关链接
http://www.52rd.com/bbs/Detail_RD.BBS_195194_5_1_1.html
点评回复

使用道具 举报

发表于 2010-9-30 12:26:21 | 显示全部楼层
不过我个人认为,要读懂程序,就要改写MTK的架构,你这点做到了,MTK的东西就熟悉的很了。
点评回复

使用道具 举报

发表于 2010-9-30 12:23:56 | 显示全部楼层
以下是引用redzong在2010-9-30 9:38:28的发言:

我也等啊。感觉好多东西不动,学mmi的时候有些函数可以自己看为什么这样写,意图是什么。驱动这一块,我完全不知道玩什么要这么写。目前感觉就要个操作工一样


昨天就写好了,是用YILISHA的ID发的
点评回复

使用道具 举报

发表于 2010-9-30 09:38:28 | 显示全部楼层
以下是引用hztianxie在2010-9-29 8:37:52的发言:
我前几天正好为这个写了很详细的注释。

不过我懒得上图了,简单回答你一下,

#define MAIN_LCD_16BIT_MODE --这个几bit几bit的定义,根据什么来定?

这个你看硬件原理图,你的数据线是几根,8根究是8BIT

16根究是16BIT

18根究是18BIT

详细的,我等会发个帖子。

我也等啊。感觉好多东西不动,学mmi的时候有些函数可以自己看为什么这样写,意图是什么。驱动这一块,我完全不知道玩什么要这么写。目前感觉就要个操作工一样
点评回复

使用道具 举报

发表于 2010-9-29 09:11:16 | 显示全部楼层
以下是引用hztianxie在2010-9-29 8:37:52的发言:
我前几天正好为这个写了很详细的注释。

不过我懒得上图了,简单回答你一下,

#define MAIN_LCD_16BIT_MODE --这个几bit几bit的定义,根据什么来定?

这个你看硬件原理图,你的数据线是几根,8根究是8BIT

16根究是16BIT

18根究是18BIT

详细的,我等会发个帖子。


等贴,嘿嘿。[em01]
点评回复

使用道具 举报

发表于 2010-9-29 08:37:52 | 显示全部楼层
我前几天正好为这个写了很详细的注释。

不过我懒得上图了,简单回答你一下,

#define MAIN_LCD_16BIT_MODE --这个几bit几bit的定义,根据什么来定?

这个你看硬件原理图,你的数据线是几根,8根究是8BIT

16根究是16BIT

18根究是18BIT

详细的,我等会发个帖子。
点评回复

使用道具 举报

 楼主| 发表于 2010-9-28 13:58:59 | 显示全部楼层
你还入行了,我现在就一套代码,没人来帮我,让我看。公司做驱动的就我一个,完了。要黄了。
点评回复

使用道具 举报

发表于 2010-9-28 12:47:34 | 显示全部楼层
用的16位数据写入命令,所以有了第一句高八位和第八位。那么第二个为啥就好解释了,使用16位数据,而命令是8位的,所以要分两次写入。上面的两句作用不同,第一句是命令,第二句是数据。
具体是由LCD的工作方式决定,要问硬件工程师用的是八位线还是16位抑或18位。目前,我移植的LCD大都数是16位的方式。我也是刚入行的
点评回复

使用道具 举报

发表于 2010-11-27 17:51:27 | 显示全部楼层
楼主问题提的好,有好人教,我也学习哦下
点评回复

使用道具 举报

发表于 2010-11-27 17:48:48 | 显示全部楼层
楼主问题提的好,有好人教,我也学习哦下
点评回复

使用道具 举报

发表于 2010-11-26 10:51:52 | 显示全部楼层
看看看看看
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-29 13:04 , Processed in 0.048716 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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