MTK的驱动和MMI经验总结_第1页
MTK的驱动和MMI经验总结_第2页
MTK的驱动和MMI经验总结_第3页
MTK的驱动和MMI经验总结_第4页
MTK的驱动和MMI经验总结_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——MTK的驱动和MMI经验总结//pleasereferencetocomptask_info_structdefine./*INDX_XXX*//*

{“XXX〞,“XXXQ〞,211,1024,XXX_create,KAL_FALSE}*/};

c.实现XXX_create。

详细参考代码中的custom1_create函数实现方式。

d.定义MSGID。

文件:

/*Addcustomizationmessageidhere*/

MSG_ID_CUSTOM1_CUSTOM2=CUSTOM_MSG_CODE_BEGIN,MSG_ID_CUSTOM2_CUSTOM1,//addMSGIDhere.//MSG_ID_XXX,

7.如何添加一个新的NVRAM项?

NVRAM根据级别分3种region:MT–系统,不对用户开放。

MP–和应用相关的,用户可以读到,写入。

CT–专门针对用户的,某个客户专用的一般放这里。步骤如下:

a.定义新的LID,以及size和total数量。

MT:mcu\\interface\\ps\\nvram_data_items.h在nvram_lid_core_enum中添加新的LID。

MP:mcu\\custom\\common\\PLUTO_MMI\\nvram_common_defs.h

在nvram_lid_commapp_enum中添加新的LID。MP:\\custom\\app\\PROJECTNAME\\nvram_user_defs.h在nvram_lid_cust_enum中添加新的LID。b.

驱动开发

以下未说明文件的配置在项目make文件上进行:mcu\\make\\PROJECTNAME.mak1.设置BB

PLATFORM=MT6268

#HardwarePlatform,MT6208,FPGA,MT6218,MT6218B,MT6219,MT6226,MT6227,MT6228,MT6229...etc.BOARD_VER=BROADMOBI68_09B_BB

#Basebandmainboarddescription,SHOULDBEONEOFTHEFOLLOWINGS#MT6208_EVB,MT6208_CEVB,MT6205_CEVB,ORDNANCE,KLM2023_BB,CHICAGO2023_BB,#MT6218_MW001,CANNON,MT6218B_EVB,JUPITER_EVB,MT6219_EVB,#MT6226_EVB,MT6227_EVB,MT6228_EVB,MT6229_EVB

MCU_CLOCK=MCU_245_76M

#MCUclocksetting,MCU_13M,MCU_26M,MCU_39M,MCU_52M,MCU_104M

MCU_DCM=DCM_ENABLE

#DCM_ENABLE,DCM_DISABLE#DynamicClockManagement#AvailableBBchip:MT6217,MT6226,MT6226M,MT6227,MT6228,MT6229...etc.

EXT_CLOCK=EXT_26M

#Externalclocksourcesetting,EXT_13M,EXT_26M

2.设置RFModule

RF模块:

UMTS_RF_MODULE=CUSTOM_MT6160RF_MODULE=AD6546_CUSTOM晶振类型:

AFC_VCXO_TYPE=VCTCXO

#VCTCXO:VCTCXO#VCXO:VCXO#VCXO_SC:VCXOwith7areaslopecontrol#VCXO_TC:VCXOwithtemperaturecompensation#VCXO_SC_TC:VCXOwith7areaslopecontrol&temperaturecompensationCOM_DEFS_FOR_CUSTOM_MT6160=MT6160_RFUMTS_BAND_I=TRUE#TRUE,FALSEUMTS_BAND_II=TRUE#TRUE,FALSEUMTS_BAND_III=FALSE#TRUE,FALSE

CUSTOM_MT6160

UMTS_BAND_IV=FALSE#TRUE,FALSEUMTS_BAND_V=TRUE#TRUE,FALSEUMTS_BAND_VI=FALSE#TRUE,FALSEUMTS_BAND_VII=FALSE#TRUE,FALSEUMTS_BAND_VIII=FALSE#TRUE,FALSEUMTS_BAND_IX=FALSE#TRUE,FALSEUMTS_BAND_X=FALSE#TRUE,FALSE

驱动代码:

mcu\\custom\\l1_rf\\$(RF_MODULE)\\l1d_custom_rf.hmcu\\custom\\l1_rf\\$(RF_MODULE)\\m12193.c

3.设置PMIC–电源管理模块

PMIC=MT6326

#ChargeFunction,NONE,MT6305orMT6318

4.设置LCDLCD_MODULE=BROADMOBI68_09B_LCM

#BasedontheLCMsolutions(evenmultipleLCMmodulesforthisproject)#SHOULDBEONEOFTHEFOLLOWINGS,basedontheLCM#MTKLCM-Mono,102x64#MTKLCM_COLOR-Color,120x160,forMT6218_MW001orMT6205_CEVB

#ORDNANCELCM-Mono,112x64

#KLMLCM-Color,128x128#INFOLCM-Color,128x128#TOPPOLY_LCM-Color,128x160,forMT6218B_EVB#SONY_LCM

MAIN_LCD_SIZE=320X480

#Todistinguishthemainlcdsize.#Wecanuseittocopythematchingresources,suchthemecomponents.h,Fontres.c,L_xxx.h,etc,toPLUTO_MMIfolder

SUB_LCD_SIZE=NONE

#NONE,48X64BW,64X96,96X64BW,96X64,128X128#TFT_MAINLCD–LCD类型

驱动代码:

mcu\\custom\\drv\\LCD\\$(LCD_MODULE)\\lcd.cmcu\\custom\\drv\\LCD\\$(LCD_MODULE)\\lcd_hw.hmcu\\custom\\drv\\LCD\\$(LCD_MODULE)\\lcd_sw.hmcu\\custom\\drv\\LCD\\$(LCD_MODULE)\\lcd_sw_inc.hmcu\\custom\\drv\\LCD\\$(LCD_MODULE)\\lcd_rnd.h

COM_DEFS_FOR_BROADMOBI68_09B_LCM=BROADMOBI68_09B_LCMTFT_MAINLCD

5.设置Camera

CMOS_SENSOR=OV2655

#OV9640,PAS105,OV9650#MT9D011,

#6229uses2Msensor-MT9D011

SENSOR_ROTATE=SENSOR_ROTATE_0

#SENSOR_ROTATE_0,SENSOR_ROTATE_90,SENSOR_ROTATE_180,SENSOR_ROTATE_270

HORIZONTAL_CAMERA=TRUE#FALSE,TRUE

#Toenablehorizontalcamerafeature.

#AddHORIZONTAL_CAMERAtoglobalcompileoptionwhenthevalueisTRUE.

WEBCAM_SUPPORT=TRUE

#TRUE,FALSEforWEBCAMERAsupportSENSOR_TYPE=RAW

#RAW,YUV,DIRECT,NONE

对摄像头FineTune直接联系厂商或MTK。驱动代码:

mcu\\custom\\drv\\camera\\PROJECTNAME\\camera_hw.c

mcu\\custom\\drv\\camera\\PROJECTNAME\\camera_tuning_oper.c

6.FM设置

FM_RADIO_CHIP=MT6188A1#NONE,TEA5767HN,FM_RADIO_RECORD=FALSE#TRUE,FALSE

7.TP(TouchPanel)设置

TOUCH_PANEL_SUPPORT=TP_INTERNAL#NONE,MT6301,MT6301B,TP_INTERNAL

TOUCH_PANEL_SHORTCUT_SUPPORT=FALSE

#FALSE,TRUE

#TRUEfortouchpanelsizeneedtobelargerthanLCDsize#Supporttouchpanelshortcutfunctionality

8.MSDC–大容量设备管理器设置

MSDC_CARD_SUPPORT_TYPE=MSDC_SD_MMC

#MSDC_SD_MMCforSD/MMCcardsupport#MSDC_MSforMScardsupport#MSDC_MSPROforMS-PROcardsupport#NONE

#MT6218B,MT6217,MT6219supportMSDC

#MT6218,MT6205B,MT6208don'tsupportMSDC

9.USB设置

USB_SUPPORT=TRUE#MT6218BandMT6219chipsupportUSB

USB_MULTIPLE_COMPORT_ENABLE=FALSE#TRUE/FALSE.ToenableUSBmultiplecomportfeature

USB_HS_SUPPORT=TRUE#TRUE,FALSE

USB_COM_PORT_SUPPORT=TRUE#TRUE,FALSEUSB_MASS_STORAGE_SUPPORT=TRUE#TRUE,FALSEUSB_IN_META_SUPPORT=FALSE#TRUE,FALSE

#ToenableUSBsuuportinMETAmodefeature

USB_IN_NORMAL_MODE_SUPPORT=TRUE#TRUE,FALSE#ToenableUSBmassstoragesupportinnormalmode

USB_DOWNLOAD=NORMAL#NONEorNORMALorSECURE#ToenableFactoryDownload/ConnectionviaUSBcable

10.AudioCodec–音频解码器

AMRWB_DECODE=TRUE#TRUE/FALSEAMRWB_ENCODE=TRUE#TRUE/FALSE#MT6219DSPcannotsupportAMRWB_ENCODEwhenGPRSconnectionDAF_ENCODE=FALSE#TRUE,FALSE

DAF_DECODE=TRUE#TRUE/FALSE

AAC_DECODE=TRUE#TRUE/FALSE

AAC_PLUS_DECODE=TRUE#TRUE/FALSEAAC_PLUS_PS_DECODE=FALSE#TRUE,FALSE

MMF_DECODE=FALSE#TRUE,FALSEMMF_DECODEsupportinMT6218B,MT6217,MT6219andlaterchip

WMA_DECODE=FALSE#MT6228supportWMADECODE

11.Image/ViddoCodec–视频解码

RawRGB?JPEG/JPEG?RawRGB转换,可以是硬件或软件进行解码。JPG_DECODE=JPG_HW#NONE,JPG_SW,JPG_HW.JPG_ENCODE=JPG_HW#NONE,JPG_SW,JPG_HW.GIF_DECODE=TRUE#TRUE/FALSE

PNG_DECODE=PNG_HW#NONE,PNG_HW,PNG_SWMJPG_DECODE=FALSE#TRUE/FALSEMJPG_ENCODE=FALSE#TRUE/FALSEMP4_DECODE=TRUE#TRUE,FALSEMP4_ENCODE=TRUE#TRUE,FALSE

12.BT–蓝牙

BLUETOOTH_SUPPORT=BTMTK_MT6612#NONE,BTMTK,BTMTK_MT6601,BTMTK_MT6612,BTMTK_MT6612,BTMTK_MT6616BLUETOOTH_VERSION=BT_VER_30#NONE,BT_VER_PRE21,BT_VER_21,BT_VER_30

13.IrDa–红外

IRDA_SUPPORT=FALSE#IRDAsupportfeature

14.MS(MitionSensor)-加速传感器

MOTION_SENSOR_SUPPORT=NONE#NONE,KXP84_SPI,KXP84_I2C,KXP74_SPI,MXC6202_I2C,MMA7660_I2C,KXTF9_I2C

#Formotionsensorfunctionsupportornot.

15.EMI配置

设备类型为NANDFlash的make文件配置:NAND_FLASH_BOOTING=ONDEMAND

#NONE,ENFB,ONDEMAND,MIXED,BASIC

#NONE:NORXIPProjectandit'snotNANDFLASHBOOTING

#ENFB:MMIImagesandstringputonTHIRD_ROManddynmaicloadintoRAMbyapplication.DefaultforMT6228/29/30

#ONDEMAND:MMIResourceandSomeNon-Real-TimeAppROputonNANDandon-demandpagein.

#ARM9MMURequired.DefaultforMT6235/38

#MIXED:BothENFBandOn-DemandPageInmechanismenabled.ARM9MMURequired.PickthistosupportMBAFeature.

#BASIC:NandFlashBootingisturnedon,butnoneofENFBandONDEMANDexists.OnlyROMandSECONDARY_ROM.

NAND_SUPPORT=TRUE#NANDSUPPORT

SYSTEM_DRIVE_ON_NAND=TRUE#FALSE:SystemDriveonNORflash#TRUE:SystemDriveonNANDflashFOTA_UPDATE_PACKAGE_ON_NAND=FALSE#TRUE,FALSE

设备类型为NORFlash的make文件配置:NAND_FLASH_BOOTING=NONENAND_SUPPORT=FALSESYSTEM_DRIVE_ON_NAND=FALSE

文件位置:mcu\\tools\\MemoryDeviceList\\MemoryDeviceList_XXXX.xls

在数据库文件中查找是否有我们用到的EMI类型型号,假使没有则MTK不支持,假使有则写入EMI配置文件:mcu\\custom\\system\\PROJECTNAME\\custom_memorydevice.h第一步:设置设备类型。/*

****************************************************************************

Step1:Specifymemorydevicetypeanditscompletepartnumber

Possiblememorydevicetype:NOR_RAM_MCP,LPSDRAM,NOR_LPSDRAM_MCP

*****************************************************************************/

#defineMEMORY_DEVICE_TYPELPSDRAM

#defineCS0_PART_NUMBERH8BCS0SI0MBR//EHD013111MA_60//假使设备类型为NOR_RAM_MCP,则需要如下配置://#defineCS0_PART_NUMBERLRS1828C//#defineCS1_PART_NUMBERLRS1828C

//CS0和CS1要一致,PART_NUMBER则根据实际通过数据库xls文件查询。

其次步:设置FLASH和RAM访问类型。/*

****************************************************************************

Step2:SpecifyaccesstypeforNOR_RAM_MCP;forLPSDRAM,justassign

UNDEF_ACCESStobothitems(NOR_ACCESS_TYPEandRAM_ACCESS_TYPE)Possibleaccesstypes:ASYNC_ACCESS,SYNC_ACCESS,UNDEF_ACCESS

*****************************************************************************/

#defineFLASH_ACCESS_TYPESYNC_ACCESS#defineRAM_ACCESS_TYPESYNC_ACCESS

//设置对于LPSDRAM类型来说,这项忽略,不过一般选UNDEF_ACCESS。

第三步:设置NOR_FDM版本,支持大容量的NOR-FLASH/*

****************************************************************************

Step3:FDMVersionChoose

MTKNORFDMisupgradedto5.0from2023/Q3tosupportlargeNOR-flashdisk(multi-bank),forexample,diskspacelargerthan64blocks.

ThemajordifferenceofNORFDM5.0andNORFDM4.0asbelow:

1.RAMconsumption

Tomanage32MBINTELM18NOR-flashdisk,FDM5.0consumes1KB,butFDM4.0takes32KB.2.Addressableblocknumbers

TheaddressablespaceofNORFDM5.0is65K-1blocks,butNORFDM4.0islimitedat128-1blocks.

3.IdlereclaimandmanualreclaimareimplementedonNORFDM5.0.

ToenableNORFDM5.0onNOR-flashdisk,pleaseenablethefollowing

definitionandcustomizecustom_flash_norfdm5.c;theoptionisswitchon/offatcustomersitewithoutdelivernewlibrary.

[REMIND]========

Tomanagesmalldiskspace,likesmallerthan64blocks,FDM4.0isrecommended.

*****************************************************************************/

//#define__NOR_FDM5__

//由于我们使用LPSDRAM,所以不用定义

//一般大于128个blocks才启用,否则注解掉。

第四步:FAT配置

存储区可划分为代码区和文件存储区,而文件存储去有可分为用户区域和系统区域,系统区域可用来放NVRAM和MMS文件。

代码区文件存储区用户区域|系统区域||好多NOR-Flash手机寻常不舍用户区域,而NANDFlash一般会设置一定的用户区域。假使是NORBooting类型(例子):

//文件系统起始位置为14MB处,也就是说代码区域就是从0x0000000~0x0E00000#defineNOR_BOOTING_NOR_FS_BASE_ADDRESS0x0E00000//文件系统总的容量2MB,包括用户区域和系统区域

#defineNOR_BOOTING_NOR_FS_SIZE0x0200000

//用户区域500个SECTORS,每个SECTOR为512Bytes,这样总共用户区域就是0.25MB#defineNOR_BOOTING_NOR_FS_FIRST_DRIVE_SECTORS500

假使是NAND-FLASHBooting类型(例子):

//文件系统起始位置为64MB处,也就是说代码区域就是从0x00000000~0x04000000#defineNAND_BOOTING_NAND_FS_BASE_ADDRESS0x04000000//文件系统总的容量192MB,包括用户区域和系统区域

#defineNAND_BOOTING_NAND_FS_SIZE0x0C000000

//用户区域262144个SECTORS,每个SECTOR为512Bytes,这样总共用户区域就是128MB#defineNAND_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS262144

还有一种变态的状况就是,NOR-BOOTING,但是文件系统是NAND的,这种状况基本较少,不翻译了,将就这看吧:

***********************************************************************Step5:ForNOR-XIPconfiguration,if

1.\

2.\

featureisenabled.UsersareresponsibletospecifyFS(filesystem)regioninformationonNAND-flashhere!

Step1.StartaddressofFSregiononNAND-flash,Step2.TotalFSsizeonNAND-flashdisk

Step3.Thefirstdrive(orpartition)sizeofFSregion.ifnoadditionaldriveonNAND-flashdisk,itshouldbe0.Formoredetails,pleaserefertoREMIND1and2.

Forexample,on128MBNAND-flash,becausecodeisalreadylocatedonNORflash,

total128MBNAND-flashspaceisreservedforNAND-flashdisk.Reserve~110MBforuserdrive,

remainaround15MBforsystemdrive.

#defineNOR_BOOTING_NAND_FS_BASE_ADDRESS0x00000000

#defineNOR_BOOTING_NAND_FS_SIZE0x08000000//128MB

#defineNOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS220000//110000KB

[REMIND]========

1.Itisspecialforflashdiskwhichhastwodrives(orpartitions),thefirstleadingisuserdrive,visibleonUSBdisk,thesecondmaybesystemdrive,andinvisiblefromUSBdisk.2.Forprojectswith__UP_PKG_ON_NAND__defined,NOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORSwill

beignored.Thatis,NANDflashisallowedtocreateonlyonedrive(orpartition)inthiscase.

3.For\DRIVEONNOR\andFOTA\PACKAGEONNAND\configuration,FOTA

updatepackagewillbelocatedinthetopofFSregionbydefault.Auto-Genwill

reserverequiredspaceautomatically.

[VERYIMPORTANTNOTICE]=======================

1.Thevaluesinstep1~3MUSTbesetif__FS_SYSDRV_ON_NAND__or__UP_PKG_ON_NAND__isdefined!!

2.ThespareareaisexcludingfromtheFSSPACE!!

3.Pleaseassigntheexactintegervalueintermsofsectors(onesectorequalto512Bytes)inNOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS.MUSTNOTassignas

(TOTAL_FS_SIZE-SIZE_OF_SYSTEM_DRIVE),becausesystemwillkeepsomespacesfordiskmanagement.

*****************************************************************************/

#defineNOR_BOOTING_NAND_FS_BASE_ADDRESS0x00000000#defineNOR_BOOTING_NAND_FS_SIZE0x08000000#defineNOR_BOOTING_NAND_FS_FIRST_DRIVE_SECTORS220000

第五步:从新生成EMI配置和SCATTER文件。在project.mak文件中SYSGEN_ENABLE=TRUEMake[prject_name]umtsemiclean–先清理emi配置Make[prject_name]umtssysgen--生成emi和scatter

16.使用DrvTool对GPIO/GPO,EINT,ADC,KEYPAD等进行配置,生产驱动代码。

首先确认:DRV_CUSTOM_TOOL_SUPPORT=TRUE,否则不能使用DrvTool配置,这个设

置将启用__CUST_NEW__宏。DrvTool的路径为:

mcu\\custom\\drv\\Drv_Tool\\DrvGen.exe

在工程中,有一个已经配置好的默认驱动配置文件codegen.dws,位于:mcu\\custom\\drv\\misc_drv\\PROJECTNAME\\codegen\\

16.1开启DrvTool

首先要保证project.mak文件中:DRV_CUSTOM_TOOL_SUPPORT=TRUE运行工具,运行界面如下:

点击Open按钮开启方才的codegen.dws,然后单击Edit按钮可进入编辑界面。

16.2GPIO/GPO设置。

不同的平台有不同GPIO/GPO口数量。如MT6268平台,有99个GPIO口,无GPO口。

切换到GPIO设置页面,界面如下:

可设置的GPIO/GPO口如下:GPIO_DIR(方向控制寄放器)对应Def.DirGPIO_PULLEN(上位/下拉寄放器)对应InPullEnGPIO_DINV(输入倒置寄放器)对应INVGPIO_DOUT(数据输出寄放器)对应OutGPIO_DIN(数据输入寄放器)对应InGPIO_MODE(模式设置寄放器)对应M0/M1/M2/M3

参考硬件工程师提供的GPIO/GPO配置表进行设置。

16.3设置EINT(外部中断)。

列列列列列列

中断有耳机插入检测中断,触摸屏中断,充电中断等,参考硬件工程师提供的EINT配置表设置EINT。

16.3ADC设置

ADC有电池电压通道,充电电流感应电压通道,USB检测通道等,详细参考硬件工程师提供的ADC配置表设置ADC。

16.4keypad设置

键盘的硬件实现是一个二维矩阵,交织点代表一个按键。详细参考硬件工程师提供的键盘矩阵配置表设置按键定义。

17.PWM(脉宽调制)设置-主要用于对屏幕背光灯、按键背光灯、闪光灯等亮度的设置调整。

文件路径:mcu\\custom\\app\\PRJECTNAME\\nvram_user_config.c

kal_uint32constNVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT[]={

/*屏幕背光灯*/200,20,/*PWM1Level1*/200,40,/*PWM1Level2*/200,60,/*PWM1Level3*/200,80,/*PWM1Level4*/200,100,/*PWM1Level5*//*按键背光灯*/200,0,/*PWM2Level1*/200,0,/*PWM2Level2*/200,0,/*PWM2Level3*/200,0,/*PWM2Level4*/200,0,/*PWM2Level5*//*闪光灯*/200,20,/*PWM3Level1*/200,40,/*PWM3Level2*/200,60,/*PWM3Level3*/200,80,/*PWM3Level4*/200,100,/*PWM3Level5*///LCD对比度设置。

#if(definedMTKLCM)

34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,#elif(definedMTKLCM_COLOR)/*MainLCDcontrastlevel1~15*/148,149,150,151,152,153,154,155,156,158,160,162,164,166,168,#else/*MainLCDcontrastlevel1~15*/120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,#endif/*MainLCDBiasParam(Reserved)*/0,0,0,0,0,/*MainLCDLinerateParam(Reserved)*/0,0,0,0,0,/*MainLCDTemperatureParam(Reserved)*/0,0,0,0,0,//子LCD对比度/*SubLCDcontrastlevel1~15*/20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,/*SubLCDBiasParam(Reserved)*/0,0,0,0,0,/*SubLCDLinerateParam(Reserved)*/0,0,0,0,0,/*SubLCDTemperatureParam(Reserved)*/0,0,0,0,0,//电池电量等级设置。/*BatteryvoltageLevel*/3350000,/*LowBatteryPoweroff*/3400000,/*LowBattery*//*batterylevel1~8*/3550000,3640000,3740000,3870000,9999999,9999999,9999999,9999999,/*电池的等级对应下面枚举。文件位于:mcu\\ps\\l4\\include\\device.h

typedefenum{

BATTERY_LOW_POWEROFF=0,BATTERY_LOW_TX_PROHIBIT,

警告信息出现条件:

充电参数设置(上述条件中的个电压等),文件:

mcu\\custom\\drv\\misc_drv\\PROJECTNAME\\chr_parameter.c

bmt_customized_structbmt_custom_chr_def={……

1000000,/*ICHARGE_ON_HIGH*///I>VALUE,overcharge!电流过高20000,/*ICHARGE_ON_LOW*///IVALUE,overcharge!电流过高

4050000,/*V_FAST2TOPOFF_THRES*/V>VALUE,TOP-OFFmode,恒流充电进入恒压充电

/*下面三个值对应不同温度是的ADC电压值,在驱动中用于判断,假使电池电压温度小于-40度,则报连接错误。假使小于0度,则报温度过低,假使45度以上则报温度过高。*/2500000,/*BATTMP_MINUS_40C*///电池温度40度的(ADC端口)电压值1469409,/*BATTMP_0C*///电池温度0度的(ADC端口)电压值520232,/*BATTMP_45C*///电池温度45度的(ADC端口)电压值

//======================================================================4500000,/*MAX_VBAT_LI*///锂电池,大于这个值,则显示电压过高5500000,/*MAX_VBAT_NI*/NI电池,大于这个值,则显示电压过高

3400000,/*V_PRE2FAST_THRES*///大于3.4v,准备充电模式进入快速充电(横流)模式250000,/*I_TOPOFF2FAST_THRES*//*250ma,TOPOFF->FAST*/

120000,/*I_TOPOFF2FULL_THRES*//*120ma,TOPOFF->BATFULL*/电流小于120mA,充满

4110000,/*V_FULL2FAST_THRES*//*BATFULL->FAST*///小于4.11V,充满->快速充电模式

414557,/*V_TEMP_FAST2FULL_THRES_NI*//*50oC,FAST->BATFULL*/4050000,/*V_FULL2FAST_THRES_NI*/

600000,/*FAST_ICHARGE_HIGHLEVEL*//*600ma,fortablesearch*/400000,/*FAST_ICHARGE_LOWLEVEL*//*400ma,fortablesearch*/4050000,/*V_PROTECT_HIGH_LI*/3800000,/*V_PROTECT_LOW_LI*/6500000,/*VCHARGER_HIGH*/

……

5,/*ADC_ISENSE_RESISTANCE_FACTOR*//*1/0.2=5*///这个值计算公式=1/分压电阻,假使分压电阻是0.25,则1/0.25=4

24,/*bmt_measure_discard_time*//*24ticks*///ADC_CALIDATAadc_cali_param{{

//看实际ADC的量程和ADC位数,计算公式slop=V(单位为uV)/pow(2,n)//如ADC量程为2.8V,位数为10位,则slop=2.8*1000000/1024=2734

//但是我们不会调整这里的值,通过调整adc_volt_factor同样可以达到测试正//确的效果。

5524,//CH05524,//CH15524,//CH25524,//CH35524,//CH45524,//CH55524,//CH65524,//CH75524//CH8},{//slop_offset,不知道怎么算的。

(23286),//CH0(23286),//CH1(23286),//CH2(23286),//CH3(23286),//CH4(23286),//CH5(23286),//CH6(23286),//CH7(23286)//CH8}},

/*ratio=adc_volt_factor/100*/

//constkal_uint16adc_volt_factor[ADC_MAX_CHANNEL]{/*-

放大因子主要用于当adc物理端口不能直接测试所需要的电压,然后根据电路

图计算放大因子。如:

我们要计算1方框内VBAT的电压值,但是ADC物理端口没有直接连,所以没有方法直接测量,我们只能测试2方框内ADC0处电压,但是根据电路图,可以知道VBAT的电压正好是ADC0处的2倍。所以把放大因子调整为100,到这里,你一定会问,100不是1倍吗,怎么又变成2倍了呢?!!问题就在上面的slop参数,由于我们不调整slop值,但是实际算出的slop值为2734,而当前设置值5524,大约是2倍。所以实际上已经放大了2倍。我研究了很久才弄明白的,这下你弄明白了吧!!PS:你也可以调整上面的slope,而在这里放大因子写200.但是看MTK的参考文档不是这样,不知道为啥。*/

100,//CH0–测试电压的放大因子,100正好是1倍100,//CH1

50,//CH2-50为0.5倍。250,//CH3100,//CH4

50,//CH5100,//CH650,//CH7100//CH8},……}

20.AUXTask-外部设备检测。

文件:\\custom\\drv\\misc_drv\\PROJECTNAME\\auxmain.c

#defineUART_ADC9999999

//=============================================================/*

用来检测设备的Plug-in/out,或者是key_press,key_release.*/

#defineNORMAL_EARPHONE_ADC_HIGH9999999

#defineNORMAL_EARPHONE_ADC_LOW500000/*0.5~2.8*/#defineSINGLE_EARPHONE_ADC_HIGH9999999

#defineSINGLE_EARPHONE_ADC_LOW500000/*0.5~2.8*/#defineSENDKEY_ADC300000/*3.0*/

//=============================================================#definePOLLING_INTERVAL50/*pollinginterval*/

#defineTURN_ON_BIAS_INTERVAL10/*measureadcinterval*/#definePLUGIN_DEBOUNCE_TIME7/*unit=10ms*/#definePLUGOUT_DEBOUNCE_TIME100#defineVOLTAGE_MEASURE_TIME450

21.USB设置

21.1设置描述参数/VID_PID。

厂商和表述信息写入USB参数,可以在PC端杯读取到,文件路径:mcu\\\\custom\\drv\\misc_drv\\PROJECTNAME\%usb_custom.c

/************************************************************devicedescriptorparameters

*************************************************************/

staticconstkal_uint16USB_MANUFACTURER_STRING[]={

//〞MediatekInc〞长度为12,计算公式(12+1)*2=26=0x1a,前面数字03不能动。0x031a,'M','e','d','i',

'a','T','e','k','','I','n','c'};

staticconstkal_uint16USB_PRODUCT_STRING[]={

0x0310,'M','T','6','2','6','8',''};

VID调整,请看下面定义:

staticconstUSB_DEVICE_PARAMusb_device_param

PID以及描述调整,请看下面定义:

staticconstUSB_MS_PARAMusb_ms_paramstaticconstUSB_ACM_PARAMusb_acm_paramstaticconstUSB_VIDEO_PARAMusb_video_paramstaticconstUSB_IMAGE_PARAMusb_image_param

staticconstUSB_MTP_IMAGE_PARAMusb_mtp_image_param

21.2USB检测GPIO口设置。

文件:mcu\\\\custom\\drv\\misc_drv\\PROJECTNAME\%usb_custom.c/*powercontrolfunction,enable==KAL_TRUEturnonthepower*/voidUSB_PowerControl(kal_boolenable){

#ifdef__USB_ENABLE__

#ifdefPMIC_6318_USB_FUNCTIONpmic_usb_regulator_enable(enable);#elseif(enable==KAL_TRUE)#ifdef__CUST_NEW__GPIO_WriteIO(1,gpio_usb_enable_pin);//--设置GPIO口#else

GPIO_WriteIO(1,1);#endifelse

#ifdef__CUST_NEW__

GPIO_WriteIO(0,gpio_usb_enable_pin);//--设置GPIO口

#elseGPIO_WriteIO(0,1);#endif

#endif/*PMIC_6318_USB_FUNCTION*/#endif/*__USB_ENABLE__*/}

21.3MassStorage存储模式设置。

可设置MSDC,NOR,NAND等模式,相关的参数分别为:USB_MSDC_drv、USB_NOR_drv和USB_NAND_drv。文件路径:

mcu\\\\custom\\drv\\misc_drv\\PROJECTNAME\\custom_drv_init.c

voidcustom_usb_ms_init(void){

#ifdef__USB_ENABLE__#if

((defined(__MSDC_MS__))||(defined(__MSDC_MSPRO__))||(defined(__MSDC_SD_MMC__)))#ifdef__SIM_PLUS__

if(g_usb_ms_simplus_exist==KAL_TRUE){USB_Ms_Register_DiskDriver(}#endif

USB_Ms_Register_DiskDriver(//USB_MSDC_drv#endif

#ifdef__USB_RAMDISK__

USB_Ms_Register_DiskDriver(#endif

#if(!defined(__FS_SYSDRV_ON_NAND__)//USB_NOR_drv}

#endif

#ifdefNAND_SUPPORT

if(FS_GetDevPartitions(FS_DEVICE_TYPE_NAND)>=2){USB_Ms_Register_DiskDriver(//USB_NAND_drv}

elseif(FS_GetDevPartitions(FS_DEVICE_TYPE_NAND)==1){#if(!defined(__FS_SYSDRV_ON_NAND__))USB_Ms_Register_DiskDriver(#endif}

#endif

#endif/*__USB_ENABLE__*/}

22.UARTLlowControl配置

fc_none:noflowcontrol.fc_sw:swflowcontrol.fc_hw:hwflowcontrol.

文件:mcu\\\\custom\\drv\\misc_drv\\PROJECTNAME\\uart_def.c

UART_flowCtrlModeUART_GetFlowCtrl(UART_PORTuart_port){

UART_flowCtrlModeflow_ctrl;

switch(uart_port){

caseuart_port1:flow_ctrl=fc_none;break;

caseuart_port2:

flow_ctrl=fc_none;break;

#ifdef__UART3_SUPPORT__caseuart_port3:

flow_ctrl=fc_none;break;#endif

#ifdef__IRDA_SUPPORT__caseuart_port_irda:flow_ctrl=fc_none;break;#endif

#ifdef__USB_ENABLE__

caseuart_port_usb:flow_ctrl=fc_none;break;#endif

#ifdef__BLUETOOTH_SUPPORT__caseuart_port_bluetooth:flow_ctrl=fc_none;break;#endifdefault:

flow_ctrl=fc_none;break;

}

return(flow_ctrl);}

23.LCD屏幕移植。

a.参考4.设置make文件配置LCD。b.开启关闭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))

#defineLCD_CMD_DMA_MODE//假使不需要则注解掉。一般开启,这样速度快。#defineLCD_DUMMYADDR0x90000000……

c.设置LCDBusWidth。

#defineMAIN_LCD_16BIT_MODE

d.根据LCD参数设置主屏Command/DataAddress.

#defineMAIN_LCD_CMD_ADDRLCD_PARALLEL0_A0_LOW_ADDR#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论