MTK之LCD移植详解

2019-09-01 19:40

详解LCD移植

1. Make文件设置设置LCD

LCD_MODULE = BROADMOBI68_09B_LCM //这个名字可以

自己取,但是//这个名字要和\\custom\\drv\\LCD\\下的文件夹一致。

//一般可以不用改。到时直接修改这个文件夹下的代码就行了。

# Based on the LCM solutions (even multiple LCM modules for this project)

# SHOULD BE ONE OF THE FOLLOWINGS, based on the LCM # MTKLCM - Mono, 102x64

# MTKLCM_COLOR - Color, 120x160, for MT6218_MW001 or MT6205_CEVB

# ORDNANCELCM - Mono, 112x64 # KLMLCM - Color, 128x128

# INFOLCM - Color, 128x128

# TOPPOLY_LCM - Color, 128x160, for MT6218B_EVB # SONY_LCM

MAIN_LCD_SIZE = 320X480 //查LCD datasheet可以查到分辨率。

# To distinguish the main lcd size.

# We can use it to copy the matching resources, such themecomponents.h, Fontres.c, L_xxx.h, etc, to PLUTO_MMI folder

SUB_LCD_SIZE = NONE

# NONE, 48X64BW, 64X96, 96X64BW, 96X64, 128X128 COM_DEFS_FOR_BROADMOBI68_09B_LCM = BROADMOBI68_09B_LCM

TFT_MAINLCD //如果//上面的LCD_MOULE设置改了,这个就要跟着该。

# TFT_MAINLCD – LCD类型

驱动代码:

mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd.c mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd_hw.h mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd_sw.h mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd_sw_inc.h mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd_rnd.h 2. 驱动开发。

a. 打开关闭DMA模式。

文件:mcu\\custom\\drv\\LCD\\$( LCD_MODULE)\\lcd_sw.h #if

(defined(MT6226)||defined(MT6227)||defined(MT6228)||defined(MT6229)||defined(MT6268T)||defined(MT6230)||defined(MT6235)||defined(MT6235B)||defined(MT6238)||defined(MT6268A)||defined(MT6239)||defined(MT6268))

#define LCD_CMD_DMA_MODE //如果不需要则注解掉。一般打开,这样速度快。

#define LCD_DUMMYADDR 0x90000000 ……

b. 设置LCD Bus Width。

这个定义要根据硬件上IM3~IM0的接法,具体查LCD datasheet。比如:

看上图,IM3~IM0=”1010”,所以要如下定义: #define MAIN_LCD_18BIT_MODE

c. 根据LCD参数设置主屏Command/Data Address.

查LCD Datasheet可以看到:

这里叫D/CX,也有叫RS的,反正是CMD和DATA的选择信号。看上图1为数据,0为命令,所以要做如下定义:

#define MAIN_LCD_CMD_ADDR LCD_PARALLEL0_A0_LOW_ADDR

#define MAIN_LCD_DATA_ADDR

LCD_PARALLEL0_A0_HIGH_ADDR

//LCD_PARALLEL0_A0_LOW_ADDR/ LCD_PARALLEL0_A0_HIGH_ADDR在

//lcd_if_xxxx_serials_hw.h中被定义,路径位于mcu\\interface\\hwdrv。具体使用那个文件//里的定义,请参考lcd_if_hw.h文件内容。

d. 设置color format

一般一个lcd,比如说有18bit的总线,但是根据IM3~IM0的接法,可以调整到8/9/16/18四种总线接法。但是呢,实际上肯定是18bit的接法,不然就浪费了,不让用这么好的屏干嘛啊,意思是一般都会用最大的总线支持的颜色类型。然后查lcd,可以查到:

Full color mode位262K色,所以应定义LCM_18BIT_18_BPP_RGB666_1(666=2的6次方乘3次,就是262K色)

#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))

//18位总线下最大支持RGB666,也就是262K色。 #define MAIN_LCD_OUTPUT_FORMAT

LCM_18BIT_18_BPP_RGB666_1 #endif

// LCM_8BIT_16_BPP_RGB565_1这些值在lcd_if.h中被定义。 e. 设置Sub LCD的参数—和上面主屏一样的方法。

#ifdef DUAL_LCD #ifdef SERIAL_SUBLCD

#define SUB_LCD_CMD_ADDR LCD_SERIAL0_A0_LOW_ADDR

#define SUB_LCD_DATA_ADDR LCD_SERIAL0_A0_HIGH_ADDR #else

#define SUB_LCD_CMD_ADDR LCD_PARALLEL1_A0_LOW_ADDR

#define SUB_LCD_DATA_ADDR LCD_PARALLEL1_A0_HIGH_ADDR #endif

#if (defined(SUB_LCD_8BIT_MODE)) #define SUB_LCD_OUTPUT_FORMAT LCM_8BIT_16_BPP_RGB565_1

#elif (defined(SUB_LCD_9BIT_MODE)) #define SUB_LCD_OUTPUT_FORMAT LCM_9BIT_16_BPP_RGB565_1

#elif (defined(SUB_LCD_16BIT_MODE)) #define SUB_LCD_OUTPUT_FORMAT LCM_16BIT_16_BPP_RGB565_1

#elif (defined(SUB_LCD_18BIT_MODE)) #define SUB_LCD_OUTPUT_FORMAT LCM_18BIT_18_BPP_RGB666_1 #endif #endif

f. 实现LCD_CtrlWrite_XXX/ LCD_DataWrite_XXX函数。

LCD_DataWrite_XXX 和 LCD_CtrlWrite_XXX一样。所以只说LCD_CtrlWrite_XXX是如何实现的。

首先要明白我们的寄存器一般都是16位数据的,但是我们现在的总线接法有8位,9位,16位,18位这四种。这个函数的功能就是要将寄存器的数据送到总线上去。很显然,8位和9位的总线无法一次性将寄存器的数据获取,所以要分2次进行。而16位和18位就可以一次将寄存器的数据获取。

8位:分2次,先传高八位,然后传低8位。 #define LCD_CtrlWrite_XXX(_data) \\ {\\

SET_LCD_CMD_PARAMETER(0,LCD_CMD,((_data & 0xFF00)>>8));

SET_LCD_CMD_PARAMETER(1,LCD_CMD,(_data & 0xFF));


MTK之LCD移植详解.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:细胞骨架习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: