MTK手机设备驱动编写介绍.pptx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK 手机 设备 驱动 编写 介绍
- 资源描述:
-
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,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),COM_DEFS +=_CUST_NEW_,endif,endif,2.,WIN32,#ifndef WIN32,#endif,用该宏将真机与模拟器的代码分隔开,一,.GPIO,口的初使化与使用,GPIO,口的初始化,方法:两种:,1.,工具,customdrvDrv_ToolDrvGen.exe,修改:,customdrvmisc_drvIWIT23_NEP_07A_PMJ_BBcodegencodegen.dws,2.,程序中修改:,Gpio_drv.c,void GPIO_init(void),操作,1.,写状态,a.,模式,修改,GPIO_ModeSetup(kal_uint16 pin,kal_uint16 conf_dada),b.,方向修改,void GPIO_InitIO(char direction,char port),c.,置高与置低,GPIO_WriteIO(char data,char port),d.,上拉与下拉的使能,void GPIO_PullenSetup(kal_uint16 pin,kal_bool enable,),2.,读取状态,a.,返回模式,char GPIO_ReturnMode(char port);,b.,返回方向,char GPIO_ReturnDir(char port);,c.,返回电平值,char GPIO_ReturnDout(char port);,3.GPIO,使用中需注意的问题,LCD_delay_HX8306A();,Delayms(100);,construct_local_para(sizeof(aux_id_struct),TD_CTRL);,aux_id_data=(aux_id_struct*),aux_id_data-aux_id=AUX_ID_FLICK_OFF;,十月 226:34 下午10月-2218:34October 25,2022,14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。,14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。,做时,你只能或者最好沿着以脚为起点的射线向前。,18:34:1818:34:1818:34Tuesday,October 25,2022,0 x00,0 xC2,0 x01,0 x00,/*ps default baud rate base=115200=0 x0001C200*/,10月-2210月-2218:34:1818:34:18October 25,2022,二,.,中断的配置与使用,.,中断个数,8,个,EINT0,EINT1,为专用中断,EINT2-7,与,GPIO,等功能复用,.,设置中断模式,通过,DRV_TOOL,或,Gpio_init(void),来初始化,也可在程序中通过,GPIO_ModeSetup(kal_uint16 pin,kal_uint16 conf_dada),随时修改,.,中断注册函数,在某个,TASK,中注册中断,建议注册在,AUX_TASK,中,便于管理,EINT_Registration(FLICK_EINT_NO,KAL_TRUE,flick_state,FLICK_EINT_HISR,KAL_TRUE);,.,中断处理函数,以,FLICK,及,BATTERY,两个中断为例:,void FLICK_EINT_HISR(void)/added by Jeff Ji 071024,ilm_struct *flick_ilm;,aux_id_struct *aux_id_data;,if(flick_state=LEVEL_HIGH),aux_id_data=(aux_id_struct*),construct_local_para(sizeof(aux_id_struct),TD_CTRL);,aux_id_data-aux_id=AUX_ID_FLICK_OFF;,DRV_BuildPrimitive(flick_ilm,MOD_EINT_HISR,MOD_UEM,MSG_ID_AUX_ID,aux_id_data);,else,aux_id_data=(aux_id_struct*),construct_local_para(sizeof(aux_id_struct),TD_CTRL);,aux_id_data-aux_id=AUX_ID_FLICK_ON;,DRV_BuildPrimitive(flick_ilm,MOD_EINT_HISR,MOD_UEM,MSG_ID_AUX_ID,aux_id_data);,msg_send_ext_queue(flick_ilm);,flick_state=!flick_state;,EINT_Set_Polarity(FLICK_EINT_NO,flick_state);,void BATTERY_EINT_HISR(void),iwit_battery_state=!iwit_battery_state;,EINT_Set_Polarity(BAT_EINT_NO,iwit_battery_state);,iwit_fakeChargerAct=KAL_TRUE;,if(iwit_battery_state=LEVEL_HIGH)/plug out,bmt_set_chr_status(bmt_chr_out);,bmt_charger_action(KAL_FALSE);,else/plug in,if(iwit_charger_present),bmt_set_chr_status(bmt_chr_in);,bmt_charger_action(KAL_TRUE);,三,.,键盘配置,5X6,键盘,Powerkey,单独,第,6,列,DEVICE_KEY_END,Keypad_def.c,配置行列矩阵,Kbd_table.h,定义,DRIVER KEY CODE,KeyBrd.c,定义,KeyPadMap,GlobalConstants.h,定义,MMI KEY CODE,四,.LCD,驱动,Lcd_sw.h,1.,定义写命令及写数据的函数,#define LCD_CtrlWrite_HX8306A(_data),*(volatile kal_uint32*)LCD_HX8306A_CTRL_ADDR=(_data,LCD_delay_HX8306A();,#define LCD_DataWrite_HX8306A(_data),*(volatile kal_uint32*)LCD_HX8306A_DATA_ADDR=(_data,LCD_delay_HX8306A();,2.,定义是否使用,DMA,方式,#define LCD_CMD_DMA_MODE,3.,若是并口屏,要定义,LCD,接口的位数,#define LCD_18BIT_MODE,Lcd.c,void LCD_FunConfig(void),MainLCD=,void LCD_Init_ST7549T(kal_uint32 bkground,void*buf_addr),void LCD_BlockWrite_ST7549T(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy),void LCD_EnterSleep_ST7549T(void),void LCD_ExitSleep_ST7549T(void),void LCD_SetContrast_ST7549T(kal_uint8 level),串口屏,void init_lcd_interface(void),SPI_Initialize();/modified by jeff ji 071024,/*init_lcd_interface()*,void lcdSendSerialData(kal_uint8 SerialData,kal_bool rs),#define lcdSendCmd(cmd)lcdSendSerialData(cmd,0),#define lcdSendData(data)lcdSendSerialData(data,1),并口屏:,void init_lcd_interface(void),kal_uint32 i;,REG_LCD_ROI_CTRL=0;,CLEAR_LCD_CTRL_RESET_PIN;,#if(defined(MT6219)|defined(MT6226)|defined(MT6226M)|defined(MT6227)|defined(MT6223)|defined(MT6223P),SET_LCD_PARALLEL_CE2WR_SETUP_TIME(kal_uint32)2);,SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);,SET_LCD_PARALLEL_CE2RD_SETUP_TIME(2);,SET_LCD_PARALLEL_WRITE_WAIT_STATE(3);,SET_LCD_PARALLEL_READ_LATENCY_TIME(31);,SET_LCD_ROI_CTRL_CMD_LATENCY(3,#if(defined(MT6226)|defined(MT6226M)|defined(MT6227)|defined(MT6223)|defined(MT6223P),#if(defined(LCD_16BIT_MODE),SET_LCD_PARALLEL_16BIT_DATA_BUS;/ywm+20060518,#elif(defined(LCD_18BIT_MODE),GPIO_ModeSetup(55,1);,*(volatile unsigned short*)0 x801201B0)|=0 x4000;,*(volatile unsigned short*)0 x801201D0)|=0 x0001;,SET_LCD_PARALLEL_18BIT_DATA_BUS;,#elif(defined(LCD_8BIT_MODE),SET_LCD_PARALLEL_8BIT_DATA_BUS;,#endif,#endif,#if(defined(MT6219),DISABLE_LCD_PARALLEL_SYNC;,#endif,#endif,SET_LCD_CTRL_RESET_PIN;,Delayms(100);,/*init_lcd_interface()*/,五,.,音效优化,Speaker,Receiver,Micphone,模式:,normal;handfree;headset,Nvram_default_audio.c,值的范围,0-255,Audcoeff.c,FIR,需使用音频测试仪器测出的参数,一般都是,normal,模式下的参数,;handfree,模式下的参数要依靠经验和尝试来确定。,const unsigned short DG_DL_Speech =0 x1000;,const unsigned short DG_Microphone =0 x1400;,以上两个变量为,Receiver,及,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 _apply_mic_setting_c63216(kal_int16 a_lowest),if(afe.mic_src=L1SP_LNA_1)/*Headset Mode*/,*AFE_VAC_CON0|=0 x0480;,/*Switch input source to headset microphone*/,*AFE_VAC_CON1|=0 x0040;/*Switch on resister string*/,else /*Normal Mode*/,*AFE_VAC_CON0 /*Switch input source to normal microphone*/,*AFE_VAC_CON1 /*Switch off resister string*/,六,.ADC,使用,1.,工具配置,2.,系数设置,Chr_parameter.c,const kal_uint16 adc_volt_factorADC_MAX_CHANNEL,100,100,50,250,50,50,/*NC*/,50/*NC*/,50,为一倍,3.ADC,测量,Auxmain.c,七,.Touch panel,1.MAKE,文件中如下配置,TOUCH_PANEL_SUPPORT =MT6301,2.,Touch_panel_spi.h,#define SPI_DIN_PIN gpio_tp_spi_din_pin /*GPO*/,#define SPI_CLK_PIN gpio_tp_spi_clk_pin/*GPO*/,#define SPI_DOUT_PIN gpio_tp_spi_dout_pin/*GPI*/,#define SPI_CS_PIN gpio_tp_spi_cs_pin/*GPO*/,#define SPI_BUSY_PIN gpio_tp_spi_busy_pin/*GPI*/,3.Touch_panel_custom.h,#define TOUCH_PANEL_COORD_X_START 0,#define TOUCH_PANEL_COORD_X_END 239,#define TOUCH_PANEL_COORD_Y_START 0,#define TOUCH_PANEL_COORD_Y_END 319,八,.,USB,1.MAKE,文件中,_,CHARGER_USB_DETECT_WIHT_ONE_EINT_,_USB_ENABLE_,USB_IN_NORMAL_MODE_SUPPORT=TRUE,2.ADC,配置,工具配置,ADC_CHR_USB,3.Chr_parameter.c,const kal_uint16 adc_volt_factorADC_MAX_CHANNEL,100,100,50,250,50,50,/*NC*/,50/*NC*/,九,.UART,串口初始化,Uart.c,中,,void UART_HWInit(UART_PORT port),UARTDCBStruct UART_DefaultConfig=,UART_BAUD_115200,/*baud;*/,len_8,/*dataBits;*/,sb_1,/*stopBits;*/,pa_none,/*parity;*/,fc_none,/*no flow control*/,0 x11,/*xonChar;*/,0 x13,/*xoffChar;*/,KAL_FALSE,;,关于,AT,模式串口及,Trace,模式串口的设置(,NVRAM),Nvram_common_config.c,static kal_uint8 const NVRAM_EF_PORT_SETTING_DEFAULT=,#if defined(_ONLY_ONE_UART_),0 x63,0 x00,/*TST uses uart_port2(value is 1)*/,0 x00,0 x00,/*APP uses uart_port1*/,#else,0 x01,0 x00,/*TST uses uart_port2(value is 1)*/,0 x00,0 x00,/*APP uses uart_port1*/,#endif,#if defined(EMPTY_MMI),0 x00,0 x10,0 x0E,0 x00,/*tst default baud rate base=921600=0 x000E1000*/,#else,0 x00,0 xC2,0 x01,0 x00,/*tst default baud rate base=115200=0 x0001C200*/,#endif,#if defined(_GPRS_MODE_),0 x00,0 xC2,0 x01,0 x00,/*ps default baud rate base=115200=0 x0001C200*/,#else,0 x00,0 xC2,0 x01,0 x00,/*ps default baud rate base=57600=0 x0000E100*/,#endif,0 x00,/*High SpeedSIM*/,0 x00,/*SWDBG*/,0 x03,0 x63,/*uart power setting,plus 1-byte padding*/,0 x00,0 x00,0 x00,0 x00 /*CTI baud rate*/,;,十,.,充电控制,1.,充电器检测,EINT,配置,2.,充电开始与停止,bmt_charge_start();,bmt_charge_end();,3.,充电电流控制,Pmu.c,pmu_chr_cur_level pmu_ret_chr_current(void),4.,电池电量等级,kal_uint32 const NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT=,5.chr_parameter.c,十一,.,工厂测试模式,1.FactoryModeSrc.c,const testlet TestsMAX_AUTO_TEST_ITEMS,2.Nvram_common_config.c,static kal_uint8 const NVRAM_EF_AUTOTEST_DEFAULTNVRAM_EF_AUTOTEST_SIZE,十二,.,其它,WDT,的使用,调试时使用,在出现死循环情况时,.,void WDT_Enable(kal_bool en),将该函数默认为,Disable.,但当,RAM CRUSH,掉后,无效,.,void DRV_RESET(void),LCD,键盘背光及马达控制,Uem_gpio.c,kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type,kal_uint8 gpio_dev_level),14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。,#endif,MSG_ID_AUX_ID,sb_1,/*stopBits;*/,MOMODA POWERPOINT,MSG_ID_AUX_ID,aux_id_struct *aux_id_data;,Auxmain.,SET_LCD_PARALLEL_CE2RD_SETUP_TIME(2);,八.,Auxmain.,三.,#define LCD_CtrlWrite_HX8306A(_data),SPI_Initialize();/modified by jeff ji 071024,定义写命令及写数据的函数,3.,工程模式,*#3646633#,4.META,工具的使用,5.,总的初始化函数,Init.c,中,void Application_Initialize(void*first_available_memory),9,、静夜四无邻,荒居旧业贫。,10月-26,10月-26,Thursday,October 1,2026,10,、雨中黄叶树,灯下白头人。,01:08:55,01:08:55,01:08,10/1/2026 1:08:55 AM,11,、以我独沈久,愧君相见频。,10月-26,01:08:55,01:08,Oct-26,01-Oct-26,12,、故人江海别,几度隔山川。,01:08:55,01:08:55,01:08,Thursday,October 1,2026,13,、乍见翻疑梦,相悲各问年。,10月-26,10月-26,01:08:55,01:08:55,October 1,2026,14,、他乡生白发,旧国见青山。,01 十月 2026,1:08:55 上午,01:08:55,10月-26,15,、比不了得就不比,得不到的就不要。,。,十月 26,1:08 上午,10月-26,01:08,October 1,2026,16,、行动出成果,工作出财富。,2026/10/1 1:08:55,01:08:55,01 October 2026,17,、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。,1:08:55 上午,1:08 上午,01:08:55,10月-26,9,、没有失败,只有暂时停止成功!。,10月-26,10月-26,Thursday,October 1,2026,10,、很多事情努力了未必有结果,但是不努力却什么改变也没有。,01:08:55,01:08:55,01:08,10/1/2026 1:08:55 AM,11,、成功就是日复一日那一点点小小努力的积累。,10月-26,01:08:55,01:08,Oct-26,01-Oct-26,12,、世间成事,不求其绝对圆满,留一份不足,可得无限完美。,01:08:55,01:08:55,01:08,Thursday,October 1,2026,13,、不知香积寺,数里入云峰。,10月-26,10月-26,01:08:55,01:08:55,October 1,2026,14,、意志坚强的人能把世界放在手中像泥块一样任意揉捏。,01 十月 2026,1:08:55 上午,01:08:55,10月-26,15,、楚塞三湘接,荆门九派通。,。,十月 26,1:08 上午,10月-26,01:08,October 1,2026,16,、少年十五二十时,步行夺得胡马骑。,2026/10/1 1:08:55,01:08:55,01 October 2026,17,、空山新雨后,天气晚来秋。,1:08:55 上午,1:08 上午,01:08:55,10月-26,9,、杨柳散和风,青山澹吾虑。,10月-26,10月-26,Thursday,October 1,2026,10,、阅读一切好书如同和过去最杰出的人谈话。,01:08:55,01:08:55,01:08,10/1/2026 1:08:55 AM,11,、越是没有本领的就越加自命不凡。,10月-26,01:08:55,01:08,Oct-26,01-Oct-26,12,、越是无能的人,越喜欢挑剔别人的错儿。,01:08:55,01:08:55,01:08,Thursday,October 1,2026,13,、知人者智,自知者明。胜人者有力,自胜者强。,10月-26,10月-26,01:08:55,01:08:55,October 1,2026,14,、意志坚强的人能把世界放在手中像泥块一样任意揉捏。,01 十月 2026,1:08:55 上午,01:08:55,10月-26,15,、最具挑战性的挑战莫过于提升自我。,十月 26,1:08 上午,10月-26,01:08,October 1,2026,16,、业余生活要有意义,不要越轨。,2026/10/1 1:08:55,01:08:55,01 October 2026,17,、一个人即使已登上顶峰,也仍要自强不息。,1:08:55 上午,1:08 上午,01:08:55,10月-26,MOMODA POWERPOINT,Lorem ipsum dolor sit amet,consectetur adipiscing elit.Fusce id urna blandit,eleifend nulla ac,fringilla purus.Nulla iaculis tempor felis ut cursus.,感谢您的下载观看,专家告诉,展开阅读全文

咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。
咨信网小贴示:
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】
1、浏览或下载可查看了解,请点击【咨信网告知】。
2、下载文件中如有侵权或不适当内容,将立即纠正。
3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
4、开具发票登录电脑端申请,请点击【索取发票】。
咨信网客服组:【微信客服】


MTK手机设备驱动编写介绍.pptx
















自信AI助手














微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/14501019.html