MTK平台ADC学习笔记

作者: Darren完成日期: 2010-06-28 Page 1 of 14 e-mail:*******************目录1.基本概念 (2)2.MT6225 ADC简介 (3)3.MT6253 ADC简介 (3)4.两种操作模式 (3)5.用于电池电量显示的ADC检测 (4)5.1.主要流程图 (4)5.2.流程说明 (6)5.3.创建步聚 (6)6.充电时ADC的检测 (7)6.1充电时ADC的调度流程 (7)7.工程模式查看电池电压ADC (8)8.MT6225平台区分USB和CHARGER的ADC通道 (8)9.ADC校准 (10)10.ADC检测的主要API (11)11.ADC调度器的成员变量 (13)作者: Darren完成日期: 2010-06-28 Page 2 of 14 e-mail:*******************1.基本概念ADC ,即analog to digital converter,模拟信号至数字信号的转换器。

主要的ADC转换算法有逐次逼近法,双积分法。

它们一般由芯片内部的硬件电路实现,但外部的电路接法会有所不同。

MTK平台ADC采样的可使用外部电路:y=((a*x+b)/100)*factor(如adc_adc2vol()中的算式)x为ADC采样值,y为测量点的实际电压如图2所示,(a*x+b)为A点的电压值,((a*x+b)/100)*factor才是我们要测量的Ui的电压值。

由于ADC的量程有限,故需要进行分压才能测量比较大的电压,之后再根据分压电阻的比值转换成要测量点的电压。

a为每单位表示的电压。

MTK的ADC量程为2.8V,ADC为10位的,故a=2800000/2^10=2734(uV)。

通常为了扩大测量范围,需要把a扩大约一倍(记为a1),之后再通过factor校正。

比如变成5524,是原来的2.02倍b是偏移量,需要测量确定。

每一个ADC都有一组a,b值,在chr_parameter.c bmt_custom_chr_def[]结构体中的数组ADC_CALIDATA adc_cali_param[]给定作者: Darren完成日期: 2010-06-28 Page 3 of 14 e-mail:*******************factor满足以下等式:factor*(R2+R1)/R1=100*a1/aa1为adc_cali_param[]中的值,a为2734,R1,R2分压的两个电2.MT6225 ADC简介MT6225有7个ADC通道,主要有四个用途:1.周期性地检测电池状态,vbat2.充电时不断测量vbat,visense,vtmp,vcharger这四个ADC通道的值b-charger插入时检测usb的ADC以区分是USB还是charger4.进入工程模式下的ADC菜单时不断读取电池电压ADC和电流有两种操作模式:定时触发模式(上述的1,2)和即时触发模式(3,4)3.MT6253 ADC简介MT6253有6个ADC通道,0~2通道用于内部:0-电池电压,1—电池电流,2—充电电压;3~5通道可用于外部电压检测主要有三个用途(区分usb还是charger不需要ADC):1.周期性地检测电池状态(即电池电量显示)vbat2.充电时不断测量vbat,visense,vtmp,vcharger这四个ADC通道的值3.进入工程模式下的ADC菜单时不断读取电池电压ADC和电流1和2属于定时触发模式;3为即时触发4.两种操作模式定时触发检测和即时触发检测(或称事件触发检测)。

定时触发检测:由AUXADC_CON0(0x8205_0000)寄存器设置,当对应位置为1时,对应的通道即为定时触发检测模式。

如AUXADC_CON0 设为0x3f,则6个通道均为定时触发检测。

定时的时间量在寄存器TDMA_AUXEV1中设置即时触发检测:由AUXADC_CON1(0x8205_0008)寄存器设置,当对应位置为1时,对应的通道即为定时检测模式。

如AUXADC_CON1 设为0x3f,则6个通道均为即时触发检测。

作者: Darren完成日期: 2010-06-28 Page 4 of 14 e-mail:*******************通道0~5 采样好的ADC值存储在寄存器AUXADC_DAT0(0x8205_0010)~AUXADC_DAT5(0x8205_0024)中5.用于电池电量显示的ADC检测5.1.主要流程图作者: Darren完成日期: 2010-06-28 Page 5 of 14 e-mail:*******************作者: Darren完成日期: 2010-06-28 Page 6 of 14 e-mail:*******************5.2.流程说明在开机进行到一定阶段后,UEM接收到消息ID(MSG_ID_MED_STARTUP_CNF),接着调度uemaud_startup_cnf_hdlr( ),最终通过函数uem_init_hardware_data( ),创建用于检测电池电压ADC的通道。

此时的检测时间间隔和次数分别为ADC_BOOTUP_EV AL_PERIOD和ADC_BOOTUP_EV AL_COUNT。

第一次检测完成后,通过函数uembmt_adc_measure_done_cnf_hdlr( )更新一次电池电量,并将检测时间间隔和次数改为:ADC_IDLE_EV AL_COUNT,ADC_IDLE_EV AL_PERIOD。

之后保持ADC_IDLE_EV AL_COUNT* ADC_IDLE_EV AL_PERIOD的时间周期完成一次电池电压ADC的检测并更新电池图标。

如果有来电,则在函数l4cuem_call_status_req_ind( )中将检测周期和次数更改为:ADC_TALKING_EV AL_COUNT,ADC_TALKING_EV AL_PERIOD;在通话期间保持这样的周期检测电池电压ADC和更新电池图标。

通话结束结束后再把检测周期和次数更改为ADC_IDLE_EV AL_COUNT,ADC_IDLE_EV AL_PERIOD。

5.3.创建步聚5.3.1.创建ADC通道:adc_sche_id = adc_sche_create_object( MOD_UEM, //创建该ADC所属模块ADC_VBAT, //该ADC通道的物理IDADC_BOOTUP_EV AL_PERIOD, //检测时间间隔(kal_uint8) ADC_BOOTUP_EV AL_COUNT, //检测次数KAL_TRUE); //是否通过发送消息形式uem_send_msg_to_bmt(MSG_ID_BMT_ADC_ADD_ITEM_REQ, //消息IDg_uem_cntx_p->adc_sche_id); //逻辑ID5.3.2.添加该ADC对应的完成回调函数和检测函数到ADC调度列表中:作者: Darren完成日期: 2010-06-28 Page 7 of 14 e-mail:*******************adc_sche_add_item(ptr->adc_sche_id, //逻辑idadc_sche_task_complete_callback, //完成的回调函数adc_sche_measure); //检测函数5.3.3.如果需要,则修改ADC的检测时间间隔和次数:adc_sche_modify_parameters(ptr->adc_sche_id,ptr->period,ptr->evaluate_count);5.3.4.从uemdrv_pmic_ind()到显示电池电量图标的过程:uem_get_bat_status()获取电池状态→custom_cfg_vbat_level_regulator()将电池电压转换成相应的电池图标的格数等级→l4cuem_battery_status_ind(status_type, vbat_level)→BatteryStatusRsp() casePMIC_VBAT_STATUS → BatteryStatusIndication()电池等级格数对应的电压定义在nvram_user_config.c NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT[ ]数组6.充电时ADC的检测在系统启动的初始阶段,bmt_task_main()中调用bmt_adc_init(),完成充电时四个ADC通道的创建工作。

主要有:设置检测时间间隔和次数,建立与物理通道ID对应的逻辑ID,检测完成后的回调函数。

充电器插入后,进入到bmt_charge_start(),之后进行BMT_CHRPRE_OFF()阶段的充电。

检测Vbat,Visense,Vtemp,Vcharger这四个ADC值,都完成后通过bmt_measure_done()调度下一阶段的充电。

6.1充电时ADC的调度流程作者: Darren完成日期: 2010-06-28 Page 8 of 14 e-mail:*******************7.工程模式查看电池电压ADC当进入工程模式的ADC菜单时,系统会发出读取所有ADC通道的请求消息()MSG_ID_READ_ALL_ADC_CHANNEL_REQ,之后系统在aux_task_main()中回应读取各个通道的ADC值,各读5次之后在MSG_ID_BMT_ADC_MEASURE_DONE_CONF分支取平均,并返回显示。

8.MT6225平台区分USB和CHARGER的ADC通道作者: Darren完成日期: 2010-06-28 Page 9 of 14 e-mail:*******************在系统启动的初始阶段,bmt_task_main()中调用pmic_adpt_reg_chr_usb()完成USB_CHARGER的中断注册以及创建用于区分两者的ADC通道:chr_usb_detect.chr_usb_adc_logical_id=adc_sche_create_object(MOD_BMT,chr_usb_detect.chr_usb_adc,10,3, KAL_TRUE);有充电器或USB插入后跑到中断转入函数CHR_USB_EINT_HISR()的USB分支将检测CHRAGER_USB ADC 通道添加到ADC调度列表adc_sche_add_item(chr_usb_detect.chr_usb_adc_logical_id,check_charger_or_usb,adc_sche_measure);在判断是否USB的函数中读取该通道的ADC值,并从列表中删除adc_sche_remove_item(chr_usb_detect.chr_usb_adc_logical_id);volt= (kal_int32)VOL_RESULT[chr_usb_detect.chr_usb_adc_logical_id];作者: Darren完成日期: 2010-06-28 Page 10 of 14 e-mail:*******************9.ADC校准每次将ADC采样值转换成实际的电压值时,均使用Chr_parameter.cbmt_custom_chr_def[]adc_cali_param(详情见函数adc_adc2vol())中保存的斜率和偏移量。

合集下载

ADC学习笔记

ADC学习笔记

2016.4.14 ADC实验◆ADC:是指将连续变量的模拟信号转换为离散的数字信号的器件,典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

◆STM32通道组①规则通道组:相当正常运行的程序。

最多16个通道。

规则通道和它的转换顺序ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中②注入通道组:相当于中断。

最多4个通道。

注入组和它的转换顺序在ADC_JSQR寄存器中选择。

注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中◆单次转换和连续转换单次转换模式在单次转换模式下, ADC 执行一次转换。

CONT 位为 0 时,可通过以下方式启动此模式:● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道)● 将 JSWSTART 位置 1(适用于注入通道)● 外部触发(适用于规则通道或注入通道)完成所选通道的转换之后:● 如果转换了规则通道:—转换数据存储在 16 位 ADC_DR 寄存器中— EOC(转换结束)标志置 1— EOCIE 位置 1 时将产生中断● 如果转换了注入通道:—转换数据存储在 16 位 ADC_JDR1 寄存器中— JEOC(注入转换结束)标志置 1— JEOCIE 位置 1 时将产生中断然后, ADC 停止。

连续转换模式在连续转换模式下, ADC 结束一个转换后立即启动一个新的转换。

CONT 位为 1 时,可通过外部触发或将 ADC_CR2 寄存器中的 SWSTRT 位置 1 来启动此模式(仅适用于规则通道)。

每次转换之后:● 如果转换了规则通道组:—上次转换的数据存储在 16 位 ADC_DR 寄存器中— EOC(转换结束)标志置 1— EOCIE 位置 1 时将产生中断◆常用库函数void ADC_CommonInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct);void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);void ADC_DeInit(ADC_TypeDef* ADCx)void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalStateNewState);void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT,FunctionalStateNewState);04.14.2ADC实验页02016void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalStateNewState);void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel,uint8_t Rank, uint8_t ADC_SampleTime);uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);配置步骤:(例ADC1的通道5(PA5)进行单次转化)1.开启PA口时钟和ADC1时钟,设置PA1为模拟输入。

mtk入门相关知识总结

mtk入门相关知识总结

功能 :全新开始构建整个工程的 ARM 版,包括图片、声音、字符串等资源都要重做。在构建工程过
程中,清除所有的目标文件,库文件,日志文件等。
New 指令还会自动创建必要的目录、移除临时文件和
中间脚本、更新日志文件。
过程简要说明 :
new->cleanall->sysgen->ckscatter->mmi_feature_check->asngen->codegen->asnregen->operator_check_lit->$(B
Resgen:生成 MMI 资源。它依赖的指令有: code_generБайду номын сангаасte,cleancodegen,asngen,codegen,asnregen,cleanbin,mcddll_update,done。
Cmmgen :生成 CMM 文件。 Sysgen:生成内存映射文件,并放在 CUSTOMER 文件夹里面。
文件和在模拟器上使用的 mmiresource.dll 资源文件。
1.3. 编译命令
命令
说明
Clean New Update Remake
清除所有的目标文件、库文件和日志文件
清除并重新编译所有的文件;主要完成工作
:
gsm2.mak cleanall cmmgen mmi_feature_check asngen codegen asnregen operator_check_lite update 重新编译资源文件 ,生成相应的目标文件;主要完成的工作:
= clean or c (clean)
= cci or clean_codegen (clean codegen intermedia files)

MTK学习笔记

MTK学习笔记

1.如何判断手机中是否插入sim卡方法1:判断标志gInsertSimAppFlag是否为1,为1时,有SIM卡,为0时,无SIM卡方法2:if(g_pwr_context.PowerOnSIMStatus & MMI_SIM_STATUS_NOT_INSERT) return FALSE;elsereturn TRUE;方法3:IsSATPresent();为0时无SIM卡,为1时有SIM卡方法4:判断DRV_Reg(SIM_CTRL)的值,为1时有SIM卡,为0时,无SIM卡。

方法5:MTPNP_BOOL MTPNP_PFAL_Is_Card1Absent(void);MTPNP_BOOL MTPNP_PFAL_Is_Card2Absent(void);2.菜单隐藏的实现如在娱乐游戏下菜单隐藏,#if defined(DMG_SKIPEGG_DEF)if (0 == gInsertSimAppFlag){mmi_frm_unhide_menu_item(MENU_ID_FNG_SKIPEGG);}else{mmi_frm_hide_menu_item(MENU_ID_FNG_SKIPEGG);}#endifnItems = GetNumOfChild_Ext(MAIN_MENU_FUNANDGAMES_MENUID);//修改对应的三个函数为_Ext形式。

GetSequenceStringIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemList);GetSequenceImageIds_Ext(MAIN_MENU_FUNANDGAMES_MENUID, ItemIcons);3.关于History手机中的屏幕流程都是顺序的,用户都是通过按键在屏幕之间切换。

这里有三种类型的屏幕切换,即1 向前移动向下一个屏幕的切换作为用户按键输入的结果。

2 向后移动向前一个屏幕的切换作为用户按键输入的结果。

ADC模块总结

ADC模块总结

ADCON0——用来控制 ADC 的操作, 是一位 7 位可读写的寄存器。 1. ADCS1~ADCS0:A/D 转换时钟及频率选择位。 � 00:选择系统时钟,频率为 fosc/2; � 01: 选择系统时钟,频率为 fosc/8; � 10:选择系统时钟,频率为 fosc/32; � 11:选择自带阻容(RC)振荡器,频率为 frc. 2. CHS2~CHS0:A/D 转换模拟通道选择位。选择公共通路与哪一 个模拟输入端接通, AN5~AN7 通道只有 40 脚封装的型号才具 备。 � 000:选择通道 0,RA0/AN0; � 001:选择通道 1,RA1/AN1; � 010:选择通道 2,RA2/AN2; � 011:选择通道 3,RA3/AN3; � 100:选择通道 4,RA5/AN4; � 101:选择通道 5,RE0/AN5; � 110:选择通道 6,RE1/AN6; � 111:选择通道 7,RE2/AN7; 我认为每次做 A/D 转换的时候,我们只需要估计也只能选择 一个通道进入。 (当然前提就是对一个模拟信号进行数字转换) , 现在我就有疑惑:如果我们遇到要对几个模拟量进行数字转换,
ADC
学习知识,我们要首先要明白,为什么需要这些知识,这些知 识解决了什么样的问题。 在各类电子产品中, 如何将现实的模拟物理量和计算机用的数 字来对应起来,那是相当重要的。 ADC 的任务就是: 将连续变化的模拟信号转换为离散的数字信 号,以便于我们的数字系统进行计算、处理、存储、控制、显示; DAC 的任务就是: 将经数字系统处理后的数字信号转换成模拟 信号以便进行控制,播放等。 也即: 数字处理器在采集花花世界里的模拟信号时, 离不开前 向通道中的 ADC;处理器要实现对模拟量的控制也离不开后向通 道中的 DAC。 ADC/DAC,有独立形态。也就是这么个意思:有单独的这种芯 片。但是现在很多单片机都集成了这些模块,就成为了单片机内 部的非独立形态。 哪些 ADC 指标很重要: (可能就是反应 AD 模块功能是否强大) � ADC 模块的位数: 是指数字量的位数, 其实和分辨率有 着密切的联系。 � ADC 模块的模拟通道: 有几个模拟量采集路口, 也就是 说可以对多少个模拟量进行转换。 (一) 和 ADC 模块有关的寄存器:11 个 � ADC 控制寄存器 0——ADCON0

MTK平台驱动调试笔记

MTK平台驱动调试笔记

分类:LINUX一、【一】调试串口的设置驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口1 通过手机进入工程模式设置2 修改代码,修改Nvram_user_config.c中的NVRAM_EF_PORT_SETTING_DEFAULT[]3.通过META工具修改在连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值,二【【二】关于gpio口Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。

代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例):GPIO_ModeSetup(25, 0);设置GPIO25为模式0GPIO_InitIO(1,25);初始化GPIO25方向为输出GPIO_WriteIO(0, 25 );设值GPIO25输入低电平0三、【三】键盘设置1)键盘定义Keypad_def.c如果定义CUST_NEW,工具中的键盘定义对应在改文件里的KEYPAD_MAPPING(keypad_drv.h);2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)3)工程模式键盘测试函数EntryFMKeypadTest()修改键盘测试时界面显示的键的名称1. 做好上面的第一第二两步2. FactoryModeSrc.c开始部分定义添加的键所要显示的名称,值,分别应用到keypad_layout[](确定要显示的位置),keypad_value[]3.在EntryFMKeypadTest()函数中的数组IdleScreenDigits[]里添加要显示的键4)如果要设置一个键不管在什么界面下都起作用的话(如手电筒开关或则其他需求)就需要在键盘的事件响应函数static voidKeyEventHandler(KEYBRD_MESSAGE *eventKey)里设置,根据键值条用相应的响应函数,不过该函数及时在锁屏状态下也会执行的,需要根据需要添加条件语句四、关于LCDlcm背光驱动分为两种控制方式:1. pwm这个是通过调占空比来调节亮度的持续信号;2. PFM这个是通过脉冲的个数来控制LCM背光亮度。

N79A8211系列单片机ADC应用笔记

N79A8211系列单片机ADC应用笔记

ADC 应用笔记
14-1
立超电子科技有限公司
2、N79A8211 系列ADC简介
www.dycΒιβλιοθήκη
N79A8211 系列 MCU 最多集成有 8 路 10 位 AD 转换器, 开始 AD 转换可以由软件设置也可以由硬件触发。 ADC 中断向量是 005BH。转换结果的高 8 位在 ADCH 中,低两位在 ADCCON.7 和 ADCCON.6。
3
ADCS
AADR2,AADR1, AADR0: 输入通道选择位: ADC 仿真输入通道选择位。只有当 ADCI=0 和 ADCS=0 时才可以改变这些位. AADR2 0 0 0 0 1 1 1 1 AADR1 0 0 1 1 0 0 1 1 AADR0 0 1 0 1 0 1 0 1 选择输入通道 AD0 (P0.3) AD1 (P0.4) AD2 (P0.5) AD3 (P0.6) AD4 (P0.2) AD5 (P0.1) AD6 (P0.0) AD7 (P0.7)
3.3、ADCH转换结果高位寄存器
Bit: 7 ADC.9 助记符: ADCH 位 7-0 名称 ADC.[9:2] 功能 ADC转换结果. 6 ADC.8 5 ADC.7 4 ADC.6 3 ADC.5 2 ADC.4 1 ADC.3 地址: E2h 0 ADC.2
3.1、AUXR1 辅助功能寄存器 ................................................................................................................2 3.2、ADCCON 控制寄存器 .....................................................................................................................2 3.3、ADCH转换结果高位寄存器 ............................................................................................................3 3.4、ADCCON1 控制寄存器 1.................................................................................................................3 3.5、P0M1 端口 0 配置模式 1..................................................................................................................4 3.6、P0M2 端口 0 配置模式 2..................................................................................................................4 3.7、端口 ADC 数字输入禁止 ...............................................................................................................4

ADC采样笔记


// AdcRegs.INTSEL1N2.bit.INT1SEL = 1; //setup EOC1 to trigger ADCINT1 to fire
EDIS;
AdcRegs.ADCSOCFRC1.all = 0x01ff; //SOC强制1寄存器(用于16个通道)
// Select the channel to be converted when SOCx is received 选择SOC某模块与ADCA0~ADCB7中某脚对应
AdcRegs.ADCSOC0CTL.bit.CHSEL= 0;
AdcRegs.ADCSOC1CTL.bit.CHSEL= 1;
AdcRegs.INTSEL1N2.bit.INT1CONT = 0; // Disable ADCINT1 Continuous mode 中断标记消除才能再次触发中断 非连续模式
AdcRegs.INTSEL1N2.bit.INT1E = 1; // enable ADC interrupt 1 使能中断1
AdcRegs.ADCSOC11CTL.bit.ACQPS = 20;
AdcRegs.ADCSOC15CTL.bit.ACQPS = 20;
// AdcRegs.ADCCTL1.bit.ADCBSYCHN=15;
EDIS;
AdcRegs.ADCSOCFRC1.bit.SOC15 = 1; //kick start ADC by causing a SOC11 event
// 0=create int pulses 1 cycle when begin to conversion
AdcRegs.INTSEL1N2.bit.INT1SEL = 15; // 选择EOC15模块 触发中断1 ADCInterrupt 1

ADC学习心得

ADC与DAC相反,将模拟信号转换成数字信号。

ADC原理(逐次逼近型)。

外部的电压和参考电压做比较,类似于二分法。

比如外部输入2V电压,内部参考电压为GND = 0V(VDD = 3.3V),参考电压不能超过VDD(一般3.3V)电压。

参考电压:参考电压进行配置,可以选择内部VCC、VDD电压,也可以选择内部其他电压或外部提供的电压(Vdda)。

PGA:可编程增益放大器,用来放大电压信号,可以放大外部输入信号,也可以放大内部信号输出。

单通道输入,双通道差分输入:模拟信号输入时受外部和硬件影响可能会产生误差,单通道输入时,转换的数字信号就是输入信号(不超过VDD,一般3.3V)。

差分输入时需要对两个管脚输入电压,转换值为两个电压的差值。

各自优缺点:差分输入信号精确,如需要得到1V数字电压,误差导致到达芯片时为1.1V,单通道输入得到的数字信号为1.1V,双通道高电压输入2V,低电压输入1V,到达芯片时分别为2.1V和1.1V,2.1V – 1.1V = 1V 。

但是对应的电压范围也减小了。

初始化顺序:
1.校准ADC
2.更新配置寄存器CFG(时钟,采样时间,低功耗)
3.配置状态控制寄存器SC2(触发方式,比较功能)
4.配置状态控制寄存器SC3(连续转换模式或单词转换模式)
5.配置状态控制寄存器SC1:SC1n(选择单端输入或双端差分输入,使能中断或禁止,选择输入通道)
6.配置PGA寄存器,使能或禁止。

MTK平台ADC学习笔记

作者: Darren完成日期: 2010-06-28 Page 1 of 14 e-mail:*******************目录1.基本概念 (2)2.MT6225 ADC简介 (3)3.MT6253 ADC简介 (3)4.两种操作模式 (3)5.用于电池电量显示的ADC检测 (4)5.1.主要流程图 (4)5.2.流程说明 (6)5.3.创建步聚 (6)6.充电时ADC的检测 (7)6.1充电时ADC的调度流程 (7)7.工程模式查看电池电压ADC (8)8.MT6225平台区分USB和CHARGER的ADC通道 (8)9.ADC校准 (10)10.ADC检测的主要API (11)11.ADC调度器的成员变量 (13)作者: Darren完成日期: 2010-06-28 Page 2 of 14 e-mail:*******************1.基本概念ADC ,即analog to digital converter,模拟信号至数字信号的转换器。

主要的ADC转换算法有逐次逼近法,双积分法。

它们一般由芯片内部的硬件电路实现,但外部的电路接法会有所不同。

MTK平台ADC采样的可使用外部电路:y=((a*x+b)/100)*factor(如adc_adc2vol()中的算式)x为ADC采样值,y为测量点的实际电压如图2所示,(a*x+b)为A点的电压值,((a*x+b)/100)*factor才是我们要测量的Ui的电压值。

由于ADC的量程有限,故需要进行分压才能测量比较大的电压,之后再根据分压电阻的比值转换成要测量点的电压。

a为每单位表示的电压。

MTK的ADC量程为2.8V,ADC为10位的,故a=2800000/2^10=2734(uV)。

通常为了扩大测量范围,需要把a扩大约一倍(记为a1),之后再通过factor校正。

比如变成5524,是原来的2.02倍b是偏移量,需要测量确定。

MTK平台个人笔记精髓

➢关于MTK Simulator1.MTK simulator的工程文件是 PixtelMMI.dsw。

2.打开PixtelMMI.dsw,检查文件default_Fmrdo.c、default_mmi_profiles.c、default_mmi_settings.c、default_version.c文件是否存在工程文件中,上述文件存放目录:工程所在目录\custom\app\MILAN_BB。

3.在调试运行过程中会提示某些DLL文件无法连接,这是VC没有安装。

DLL文件所在目录:VC安装盘\VC98\DEBUG。

把缺失的文件复制到window安装目录下的System32目录里。

4.运行MTK Simulator,选取File→Newwork Simulator,会运行MMINWSimulator;在MMINWSimulator菜单中,选取Menu→Messages,会弹出一个Send Event窗口,窗口里有一个Events列表,列表里有不同用途种类的Events;如果需要启动手机,选取BootUp Events,点击OK按钮,MTK Simulator模拟开机过程。

➢关于调试语句的说明kal_print语句:该语句只能打印字符串信息。

Trace_out语句:该语句可以输出格式化字符串。

ASSERT语句:断言语句。

Trace语句:可以输出格式化字符串。

➢关于MTK Target的编译连接批处理命令: Milan.bat 。

●概述在windows下,打开dos编辑窗口(开始->运行->cmd),找到工程代码所在根目录,如:E:\MTK6217 输入编译批处理命令:格式:make[custom="projectName"]"project" "action"["modules"]Example: make custom=mtk6217 gprs newModules:用于对单个模块进行编译的选项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档