[精选]MTK手机设备驱动编写介绍.pptx
《[精选]MTK手机设备驱动编写介绍.pptx》由会员分享,可在线阅读,更多相关《[精选]MTK手机设备驱动编写介绍.pptx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MTK DRIVER INTRODUCTION首先需要注意两个宏定义1._CUST_NEW_程序中有多处用该宏将代码隔开Make文件中假设如下定义:DRV_CUSTOM_TOOL_SUPPORT =TRUE Option.mak文件中ifdef DRV_CUSTOM_TOOL_SUPPORT ifeq$strip$DRV_CUSTOM_TOOL_SUPPORT,TRUE _DEFS +=_CUST_NEW_ endifendif2.WIN32#ifndef WIN32#endif用该宏将真机与模拟器的代码分隔开 一.GPIO口的初使化与使用 GPIO口的初始化方法:两种:1.工具customd
2、rvDrv_ToolDrvGen.exe 修改:customdrvmisc_drvIWIT23_NEP_07A_PMJ_BBcodegencodegen.dws 2.程序中修改:Gpio_drv.c void GPIO_initvoid 操作 1.写状态 a.模式修改 GPIO_ModeSetupkal_uint16 pin,kal_uint16 conf_dada b.方向修改 void GPIO_InitIOchar direction,char port c.置高与置低 GPIO_WriteIOchar data,char port d.上拉与下拉的使能void GPIO_PullenS
3、etupkal_uint16 pin,kal_bool enable 2.读取状态 a.返回模式char GPIO_ReturnModechar port;b.返回方向char GPIO_ReturnDirchar port;c.返回电平值char GPIO_ReturnDoutchar port;3.GPIO使用中需注意的问题 二.中断的配置与使用.中断个数 8个EINT0,EINT1为专用中断,EINT2-7 与GPIO等功能复用.设置中断模式通过DRV_TOOL或Gpio_initvoid来初始化,也可在程序中通过GPIO_ModeSetupkal_uint16 pin,kal_uint
4、16 conf_dada随时修改.中断注册函数 在某个TASK中注册中断,建议注册在AUX_TASK中,便于管理 EINT_RegistrationFLICK_EINT_NO,KAL_TRUE,flick_state,FLICK_EINT_HISR,KAL_TRUE;.中断处理函数以FLICK及BATTERY两个中断为例:void FLICK_EINT_HISRvoid /added by Jeff Ji 071024 ilm_struct *flick_ilm;aux_id_struct *aux_id_data;if flick_state=LEVEL_HIGH aux_id_data=a
5、ux_id_struct*construct_local_parasizeofaux_id_struct,TD_CTRL;aux_id_data-aux_id=AUX_ID_FLICK_OFF;DRV_BuildPrimitiveflick_ilm,MOD_EINT_HISR,MOD_UEM,MSG_ID_AUX_ID,aux_id_data;else aux_id_data=aux_id_struct*construct_local_parasizeofaux_id_struct,TD_CTRL;aux_id_data-aux_id=AUX_ID_FLICK_ON;DRV_BuildPrim
6、itiveflick_ilm,MOD_EINT_HISR,MOD_UEM,MSG_ID_AUX_ID,aux_id_data;msg_send_ext_queueflick_ilm;flick_state=!flick_state;EINT_Set_PolarityFLICK_EINT_NO,flick_state;void BATTERY_EINT_HISRvoid iwit_battery_state=!iwit_battery_state;EINT_Set_PolarityBAT_EINT_NO,iwit_battery_state;iwit_fakeChargerAct=KAL_TRU
7、E;ifiwit_battery_state=LEVEL_HIGH/plug out bmt_set_chr_statusbmt_chr_out;bmt_charger_actionKAL_FALSE;else/plug in ifiwit_charger_present bmt_set_chr_statusbmt_chr_in;bmt_charger_actionKAL_TRUE;三.键盘配置5X6键盘Powerkey单独,第6列 DEVICE_KEY_ENDKeypad_def.c 配置行列矩阵Kbd_table.h 定义 DRIVER KEY CODEKeyBrd.c 定义KeyPadM
8、ap GlobalConstants.h 定义MMI KEY CODE 四.LCD驱动 Lcd_sw.h 1.定义写命令及写数据的函数#define LCD_CtrlWrite_HX8306A_data *volatile kal_uint32*LCD_HX8306A_CTRL_ADDR=_data&0 xFF002|_data&0 xFF1;LCD_delay_HX8306A;#define LCD_DataWrite_HX8306A_data *volatile kal_uint32*LCD_HX8306A_DATA_ADDR=_data&0 xFF002|_data&0 xFF1;LCD
9、_delay_HX8306A;2.定义是否使用DMA方式#define LCD_CMD_DMA_MODE 3.假设是并口屏,要定义LCD接口的位数#define LCD_18BIT_MODE Lcd.c void LCD_FunConfigvoid MainLCD=&LCD_func_ST7549T;void LCD_Init_ST7549Tkal_uint32 bkground,void*buf_addrvoid LCD_BlockWrite_ST7549Tkal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endyv
10、oid LCD_EnterSleep_ST7549Tvoidvoid LCD_ExitSleep_ST7549Tvoidvoid LCD_SetContrast_ST7549Tkal_uint8 level 串口屏void init_lcd_interfacevoid SPI_Initialize;/modified by jeff ji 071024/*init_lcd_interface*void lcdSendSerialDatakal_uint8 SerialData,kal_bool rs#define lcdSendCmdcmd lcdSendSerialDatacmd,0#def
11、ine lcdSendDatadata lcdSendSerialDatadata,1 并口屏:void init_lcd_interfacevoid kal_uint32 i;REG_LCD_ROI_CTRL=0;CLEAR_LCD_CTRL_RESET_PIN;#if definedMT6219|definedMT6226|definedMT6226M|definedMT6227|definedMT6223|definedMT6223P SET_LCD_PARALLEL_CE2WR_SETUP_TIMEkal_uint322;SET_LCD_PARALLEL_CE2WR_HOLD_TIME
12、2;SET_LCD_PARALLEL_CE2RD_SETUP_TIME2;SET_LCD_PARALLEL_WRITE_WAIT_STATE3;SET_LCD_PARALLEL_READ_LATENCY_TIME31;SET_LCD_ROI_CTRL_CMD_LATENCY3#if definedMT6226|definedMT6226M|definedMT6227|definedMT6223|definedMT6223P#if definedLCD_16BIT_MODE SET_LCD_PARALLEL_16BIT_DATA_BUS;/ywm+20060518#elif definedLCD
13、_18BIT_MODE GPIO_ModeSetup55,1;*volatile unsigned short*0 x801201B0|=0 x4000;*volatile unsigned short*0 x801201D0|=0 x0001;SET_LCD_PARALLEL_18BIT_DATA_BUS;#elif definedLCD_8BIT_MODE SET_LCD_PARALLEL_8BIT_DATA_BUS;#endif#endif#if definedMT6219 DISABLE_LCD_PARALLEL_SYNC;#endif#endif SET_LCD_CTRL_RESET
14、_PIN;Delayms100;/*init_lcd_interface*/五.音效优化1.Speaker2.Receiver3.Micphone模式:normal;handfree;headset Nvram_default_audio.c值的范围 0-255Audcoeff.c FIR 需使用音频测试仪器测出的参数,一般都是normal模式下的参数;handfree模式下的参数要依靠经验和尝试来确定。const unsigned short DG_DL_Speech =0 x1000;const unsigned short DG_Microphone =0 x1400;以上两个变量为Re
15、ceiver及Microphone的数字增益,值可以在0 x1000至0 x2000之间调整,但一般情况下不需调整。使用默认值,而只调整Nvram_default_audio.c当中的模拟增益值的大小即可audcoeff_default.h#define DEFAULT_SPEECH_LOUDSPK_MODE_PARA 128,224,5128,0,374,0,400,0 第一个参数范围值0至1024,值越大,回声抑制越弱;值越小,回声抑制越强。该值可以用于改善音频的回声及断续。其它值不建议修改._Apply_Mic_Setting对MIC的设置,注意MIC的单端及差分设置void _appl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精选 MTK 手机 设备 驱动 编写 介绍
限制150内