您的位置:首页 > 其它

MTK平台上有关LCD,Audio参数,Camera参数的使用

2010-07-19 14:50 441 查看
MTK LCD,Audio and Camera 目 录
1 引言... 3
2 MTK LCD.. 3
2.1 LCD时序设置... 3
2.2 LCD接口函数的定义... 4
3 MTK Audio参数设置... 6
4 MTK Camera参数设置... 6
 
 
1 引言
    本文主要是简单介绍一下MTK平台上有关LCD,Audio参数,Camera参数的使用。
2 MTK LCD
   MTK平台上面有关LCD的驱动主要是在/custom/drv/LCD/Project Name/这个目录下面Lcd.c文件。当我们更换不同的LCD时,主要改变的就是这个文件。
2.1 LCD时序设置
LCD的读写时序设置主要是在init_lcd_interface()这个函数里面设置的。修改的部分主要如下所示:
    SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);
     SET_LCD_PARALLEL_CE2WR_HOLD_TIME(3);
     SET_LCD_PARALLEL_CE2RD_SETUP_TIME(3);
     SET_LCD_PARALLEL_WRITE_WAIT_STATE(10);
     SET_LCD_PARALLEL_READ_LATENCY_TIME(10);
     SET_LCD_ROI_CTRL_CMD_LATENCY(10);
以上代码主要是设置LCD_PCNF0(LCD Parallel Interface 0 Configuration Register)这个寄存器。
RLT Read Latency Time
WST Write Wait State Time
13M Enable 13MHz clock gating
26M Enable 26MHz clock gating
DW Data width of the parallel interface
00 8-bit.
01 9-bit
10 16-bit
11 18-bit
GAMMA_ID _R Gamma Correction LUT ID for Red Component
00 table 0
01 table 1
10 table 2
11 no table selected
GAMMA_ID_G Gamma correction LUT ID for Green Component
00 table 0
01 table 1
10 table 2
11 no table selected
GAMMA_ID_B Gamma correction LUT ID for Blue Component
00 table 0
01 table 1
10 table 2
11 no table selected
C2RS Chip Select (LPCE#) to Read Strobe (LRD#) Setup Time
C2WH Chip Select (LPCE#) to Write Strobe (LWR#) Hold Time
C2WS Chip Select (LPCE#) to Write Strobe (LWR#) Setup Time
 
2.2 LCD接口函数的定义
在MTK平台里,它的接口函数都由一个结构来封装。该结构在文件lcd_if.h里:
 
typedef struct
{
   void (* Init)(kal_uint32 background, void **buf_addr);
   void (* PWRON)(kal_bool on);
   void (* BrightLevel)(kal_uint8 level);
   void (* SCREENON)(kal_bool on);
   void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy);
   void (* GetSize)(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height);
   void (* SleepIn)(void);
   void (* SleepOut)(void);
void (* PartialOn) (kal_uint16 start_page,kal_uint16 end_page);
void (* PartialOff) (void);
kal_uint8 (*partial_display_align) (void);
   /*Engineering mode*/
   kal_uint8 (* get_param_number)(lcd_func_type type);
   void (* set_bias)(kal_uint8 *bias);
   void (* set_contrast)(kal_uint8 *contrast);
     void (* set_linerate)(kal_uint8 *linerate);
     void (* set_temp_compensate)(kal_uint8 *compensate);
#ifdef __LCD_ESD_RECOVERY__
     kal_bool (* esd_check)(void);
#endif  
}LCD_Funcs;
 
     在lcd.c文件内有相应的LCD_Funcs。
如下所示:
LCD_Funcs LCd_func_HX8312A={
   LCD_Init_HX8312A,
   LCD_PWRON_HX8312A,
   LCD_SetContrast_HX8312A,
   LCD_ON_HX8312A,
   LCD_BlockWrite_HX8312A,
   LCD_Size_HX8312A,
   LCD_EnterSleep_HX8312A,
   LCD_ExitSleep_HX8312A,
   LCD_Partial_On_HX8312A,
   LCD_Partial_Off_HX8312A,
   LCD_Partial_line_HX8312A,
   /*Engineering mode*/
   LCD_GetParm_HX8312A,
   LCD_SetBias_HX8312A,
   LCD_Contrast_HX8312A,
   LCD_LineRate_HX8312A,
   LCD_Temp_Compensate_HX8312A
   #ifdef __LCD_ESD_RECOVERY__  
   ,LCD_ESD_check_HX8312A
   #endif
};
在lcd.c中实现了该结构的各个成员。里面的有些函数如果不用,可以置空。
其中的主要的是以下4个函数,我们介绍如下。
1.  LCD_Init_HX8312A
初始化函数。设完了时序之后,我们就可以写初始化程序了。初始化程序的作用是使屏能正常工作起来,屏在上电复位之后其寄存器都是清零的,不能马上工作,要对它的寄存器重新进行一些配置。
一般我们在拿到屏的时候,也会要求屏的供应商提供相应的初始化代码,我们的工作就是把它的初始化代码抄到我们的初始化函数中,使之符合我们的代码规范。
2.  LCD_EnterSleep_HX8312A和LCD_ExitSleep_HX8312A
进入和退出睡眠模式(sleep)。我们在长期不对手机进行操作的情况下,程序会调用进入sleep函数,使LCM进到省电模式;进到sleep之后,如果我们又对手机有操作了,这时候就要调用退出sleep函数使屏能够恢复正常显示。一般的显示芯片都会有一些寄存器控制进入和退出sleep,我们在函数LCD_EnterSleep_HX8312A, LCD_ExitSleep_HX8312A里分别对这些寄存器进行设置。
3.  LCD_BlockWrite_HX8312A
 往屏输出数据的函数。我们在LCM上看到的各种缤纷图像,都是通过这个函数来实现的。在这个函数里面我们要设置LCD屏幕显示的一些位置参数,并把它写道相应的寄存器里面。
3 MTK Audio参数设置
MTK音频里面有很多的参数需要设置,这个参数主要是在nvram_default_audio.c这个文件里面完成的。
  对于这些参数,我们手机掉电了以后还需要保存,所以它们都是要保存在NVRAM里面的。
首先是一些宏定义,这些宏要定义不同的Level对应的具体数值。
如下所示:
#define GAIN_HND_CTN_VOL              3
#define GAIN_HND_CTN_VOL0                127
#define GAIN_HND_CTN_VOL1                127
#define GAIN_HND_CTN_VOL2                127
#define GAIN_HND_CTN_VOL3                127
#define GAIN_HND_CTN_VOL4                127
#define GAIN_HND_CTN_VOL5                127
#define GAIN_HND_CTN_VOL6                127
 
#define GAIN_HND_KEY_VOL         3
#define GAIN_HND_KEY_VOL0        67
#define GAIN_HND_KEY_VOL1        87
#define GAIN_HND_KEY_VOL2        107
#define GAIN_HND_KEY_VOL3        127
#define GAIN_HND_KEY_VOL4        147
#define GAIN_HND_KEY_VOL5        167
#define GAIN_HND_KEY_VOL6        255
            然后要把这些数值写到NVRAM_EF_CUST_ACOUSTIC_DATA_DEFAULT[]和NVRAM_EF_AUDIO_EQUALIZER_DEFAULT[]这两个数组里面去。而最终这两个数组里面的数据会被写到logical_data_item_table_cust[]这个数组里面去。这个数组保存着手机里面各种初始化的参数。
4 MTK Camera参数设置
Camera里面也有很多初始化的参数需要设置。这些设置主要在camera_para.c文件里完成。
设置Camera的默认参数主要是在CAMERA_PARA_DEFAULT_VALUE和CAMERA_GAMMA_DEFAULT_VALUE这两个结构体里面。而这两个结构体里面的数据最终还是会被写到logical_data_item_table_cust[]这个数组里面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息