MTK平台ADC学习笔记

合集下载

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采样笔记

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学习心得

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学习笔记

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平台个人笔记精髓

➢关于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:用于对单个模块进行编译的选项。

ADC学习知识整理

ADC学习知识整理

ADC学习知识整理过采样频率: 增加一位分辨率或每减小6dB 的噪声,需要以4 倍的采样频率fs 进行过采样.假设一个系统使用12 位的ADC,每秒输出一个温度值(1Hz),为了将测量分辨率增加到16 位,按下式计算过采样频率: fos=4^4*1(Hz)=256(Hz)。

1. AD转换器的分类 下面简要介绍常用的几种类型的基本原理及特点:积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。

1)积分型(如TLC7135)积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。

其优点是用简单电路就能获得高分辨率,抗干扰能力强(为何抗干扰性强?原因假设一个对于零点正负的白噪声干扰,显然一积分,则会滤掉该噪声),但缺点是由于转换精度依赖于积分时间,因此转换速率极低。

初期的单片AD转换器大多采用积分型,现在逐次比较型已逐步成为主流。

2)逐次比较型SAR(如TLC0831)逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出数字值。

其电路规模属于中等。

其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。

3)并行比较型/串并行比较型(如TLC5510)并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称FLash(快速)型。

由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。

串并行比较型AD结构上介于并行型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为 Half flash(半快速)型。

还有分成三步或多步实现AD转换的叫做分级(Multistep/Subrangling)型AD,而从转换时序角度又可称为流水线(Pipelined)型AD,现代的分级型AD中还加入了对多次转换结果作数字运算而修正特性等功能。

AD及DA学习笔记

AD及DA学习笔记

ADC学习笔记1、ADC简介LPC1700 系列Cortex-M3 处理器A/D 转换器可进行模拟信号到数字信号的转换。

它的基本时钟由APB 时钟提供。

A/D 转换器包含一个可编程的分频器,它可以将APB 时钟调整为逐次逼近转换所需的时钟(最大可达13MHz)。

1.1功能特性(1)12 位逐次逼近式模数转换器;(2)8路模拟输入通道;(3)具有掉电模式;(4)测量范围:VREFN~VREFP(通常为3V;不超过VDDA);(5)12 位转换时间达200KHz;(6)一个或多个输入的Burst 转换模式;(7)可选择由输入跳变或定时器匹配信号触发转换。

VREFP、VREFN为ADC参考电压输入,VDDA、VSSA为ADC电源输入。

模拟输入引脚的电压不能超过VDDA,否则会导致A/D读取数据出错。

1.2功能结构整体结构图1.3相关寄存器1.3.1 A/D 控制寄存器(AD0CR-0x4003 4000)(1)A/D 控制寄存器主要位描述位符号描述BIT[7:0] SEL 通过置位可以选择采样输入通道BIT[15:8] CLKDIV 将APB时钟(pclk)进行分频得到A/D转换时钟BIT[16] BURST 1:AD转换器以CLKS字段的200KHZ的速度重复执行转换,AD转换器启动后,首先采样的通道是编号较低的通道,其次是编号较高的通道0:转换由软件控制BIT[21] PDN 1:AD转换器处于正常工作模式0:AD转换器处于掉电工作模式BIT[26:24] START 001:立即启动转换BIT[27] EDGE 该位只有在START 字段为010~111 时有效,在这种情况下:1:在所选CAP/MAT 信号的下降沿启动转换0:在所选CAP/MAT 信号的上升沿启动转换1)A/D转换时钟分频值计算:CLKDIV=(Fpclk/Fadclk)-1 Fadclk为所要设置的ADC时钟,不能大于13MHZ 2)启动转换模式:(a)软件启动转换当BURST=0且START=001时,启动转换(b)硬件触发转换当BURST=0且START为010~111时,由指定信号的边沿触发。

MTK工作笔记重点讲义资料

MTK工作笔记重点讲义资料

目录1、添加一个按键DEVICE_KEY_LOCK (3)2、修改状态栏图标间距 (3)3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,34、换主菜单/二级菜单背景 (3)5、修改情景模式默认值nvram_common_config.c (4)6、修改flash型号: (4)7、Speech→音量4由160→调整为180,其余不变 (5)8、添加彩号功能及修改彩号字体颜色 (6)9、修改音量调节界面按钮位置 (6)10、修改手机为单/双IMEI号, (6)11、修改运营商标志的位置 (7)12、修改照相机/录像防止闪烁默认频率为50Hz (7)13、去掉拼音输入法 (8)14、修改电子书全屏背景颜色 (9)15、修改滑盖机关机来闹钟滑盖下滑时白屏并自动开机的Bug (9)16、修改短信输入等界面背景为全透 (11)17、修改开盖铃声默认值/情景模式其他设置 (12)18、修改短信铃声资源数据 (13)19、增加滑盖机滑盖滑下时键盘锁自动锁住 (13)20、修改合盖并且键盘锁锁上及背光熄灭情况下按任意键不能点亮背光的Bug (15)21、打开6318对双喇叭的驱动 (16)22、修改选择标点界面符号和预设动画的字体颜色 (17)23、视频播放时去掉全屏的图标,并去掉触摸该区域时切换为全屏的响应 (17)24、修改屏灭后只有待机界面键盘锁住的情况下点触摸屏不亮 (19)25、修改视频播放/录像软键条不够高的问题 (20)26、注册上下左右键为计算器加减乘除功能键 (22)27、修改默认输入法为智能拼音/默认城市为北京/默认语言为中文/默认是否开启自动键盘锁2328、修改背光默认开启时间为15秒 (24)29、修改拨号界面功能键高度 (25)30、修改默认时间为2010年 (26)31、关闭开机触摸屏校准 (27)32、修改蓝牙装置名称 (27)33、更改了NVRAM升级软件不需要格式化 (27)34、通话界面上下键可以调节音量 (28)35、修改mp3、mp4默认存储位置为T卡 (28)36、修改模拟时钟的位置 (29)37、更换SIM1和SIM2的位置 (29)38、蓝牙耳机听MP3时,不能通过蓝牙耳机上的按键切换上下一首歌曲 (30)39、3603摄像头作为网络摄像头拍照时死机的Bug (30)40、去掉待机墙纸中的主题图片 (31)41、修改com口为Trace口 (32)42、添加ZI输入法后报无法找到zi8api.h的错误, (32)43、世界时钟入口函数 (32)44、日历入口函数 (32)45、SMS插入图片显示函数 (32)46、编辑短信时符号选择界面的高亮框 (33)47、计算手机占用RAM方法 (33)48、修改拨号界面输入框的大小, (33)1、添加一个按键DEVICE_KEY_LOCKA.用codegen配置好后生成keypad_drv.h文件,文件中会自动添加DEVICE_KEY_LOCK,B.在kbd_table.h文件中添加#define DEVICE_KEY_LOCK 74C.在KeyBrd.c文件nKeyPadMap[]数组中把底层的ID与上层ID对应起来{DEVICE_KEY_LOCK, KEY_EXTRA_1, TONE_KEY_NORMAL, DEVICE_AUDIO_PLAY_ONCE},直接使用KEY_EXTRA_1作为KEY_LOCK键2、修改状态栏图标间距arrange_status_icons(){......x = x1;// + STA TUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖while (!done){……x += MMI_status_icons[k].width;// + STATUS_ICON_X_GAP; Modified by Brandt 2009/11/28 for 修改状态栏图标的位置避免点此条被覆盖……}}3、显示状态条void show_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID,隐藏状态条void hide_status_icon_bar(U8 status_bar_ID) status_bar_ID状态条ID4、换主菜单/二级菜单背景因为菜单/二级菜单背景不是直接从压缩包里取的图片,而是从Themecomponents.h文件里取的16进制数据。

MTK平台手机硬件培训 (3)

MTK平台手机硬件培训 (3)

控制PA输出功率和ramp
17
硬件电路原理 -基带 - Camera接口
基带处理器的Camera接口主要包括10根图象传感器的数据输入CMDATA0~CMDATA9,Sensor垂直 以及水平参考信号输入CMVREF & CMHREF, 象素时钟输入CMPCLK和主时钟输出CMMCLK, sensor PowerDowN 和复位信号CMRST
双向
I/Q信号
LDO1 输出电压2.8V
6
硬件电路原理 -射频 -供电
串行数据接口 RFVCO使能
串行数据接口供电
输出基带参考时钟
内置LDO使能 LDO2 输出电压2.8V
LDO2 输出电压2.8V
VCTCXO供电2.8V
26M温补晶体振荡器
7
硬件电路原理 -射频 -发射功率放大
PA 工作频段选择
LCD控制 信号线 MCP 控制信号
Memory地址总线
系统复位信号输 入,来自PMU VCXO供电使能 USB LDO(3.3V) 使能信号
音频放大器 shutdown信号
充电控制信号
21
硬件电路原理 -基带 - 数字逻辑控制
键盘接口
LCD & NAND数据线
NAND控制信号
UART串口,用于下 载,AT指令通信
使能信号,这些信号通过MT6305的电平转换以后通过SIO,SRST,SCLK跟SIM卡实现通信。
13
硬件电路原理 -电源管理 - 内置LDO输出
1.8V 2.8V 2.8V 2.8V
2.8V 1.8/3.0V
1.5V
背光灯 控制 Motor 控制
14
硬件电路原理 -电源管理 - 外部LDO

MTK平台手机充电原理分析及问题总结

MTK平台手机充电原理分析及问题总结

MTK平台手机充电原理分析及问题总结MTK平台充电介绍:当充电器插入时,亦即为PMIC充电模块提供了Vcharge电压,只要把PMIC的BA TDET 脚接地即可启动充电模块,这时会产生一个充电中断信号到CPU,通知CPU现在已经进入充电状态。

这时PMIC会产生一个中断给CPU,CPU开始启动如下模块:1.ADC采样,主要是采集Vchrg,Vbat及从MOSFET漏极输出的电压,通过Vbat和Vd(MOSFET漏极)及Rsense的值,可以算出充电电流!以上就是我们通过*#23642*#在charge选项中显示的Icharg、Vchrg、Vbat、Vd等这些信息!2.发消息给MMI层,让它显示充电状态及一些采样数据3.检测电池电压有没有超过保护电压及电池连接是否连接正确,如果有问题即可通过CHRCTRL(GPI031)切断充电电路!4.平时显示“充电器没有连接”警告,是因为PMIC的BA TDET脚float,MOSFET没有打开,从而没有充电电流引起的PMIC 会通过电池BA T ID脚来判断要不要给电池充电,并不是用来区分是锂电还是镍氢电池!区别锂电还是镍氢电池是通过PMIC的BA TUSE脚,低电平是选择锂电!我们目前使用的电池ID电阻是10k左右,只要电池三个脚都接到电池connector上,就可以通过电池ID电阻把BA TDET脚接地,这时MOSFET的Vgs=-1.4V,从而可以把MOSFET打开!充电也就开始了(包括预充电)!插充电器后,只要把PMIC的BA TDET脚接地,就可以保证有电流流入了,电池的电压只影响充电状态(比如是预充还是恒流充电),如果电池电压较低,只是预充的时间稍长一些,最多一两个小时应该可以完成预充电,进入恒流充电状态!一般电池都有自保护,不会把电放到0V的!我做过试验把电池放到2.5V时,在往下放电已经很难了,负载刚接上时还是可以有电流放出,但很快就停止放电了!所以如果电池是一块合格的电池不应该会出现是0V的情况!充电有三个过程:预充电、恒流充电、恒压充电1.当Vbat<3.3V 属于预充阶段,在这个阶段充电跟电池还有多少电压没有关系,即使电池电压为0V也应该可以冲进电(电池内部有保护电路,当放电到两点几伏时已经截止,不能放出电了),只要电池本身没问题!关键是确保BA TDET脚是否处于低电平!当电池电压低于3.3V时,PMIC不能提供Vcore、Vdd等电压,CPU处于关机状态,这时CPU是不工作的!在这个模式只要BA TDET脚通过下拉电阻置低,即可进行预充!充电电流Ipre=10mV/Rsense 现在MTK平台Rsense=0.33R, 可知Ipre=30mA2. 当3.3V<bat<4.2V PMIC的LDO开始输出电压,从而cpu开始工作,这是进入恒流充电阶段充电电流Icc=160mV/Rsense ,现在MTK平台Rsense=0.33R,可知Icc=480mA3. Vbat>4.2V 进入恒压充电阶段,这个阶段电流逐渐变小,电压维持不变!当电流减小到接近为0时,CPU发出控制信号这时停止充电!下图是手机充电各阶段的状态图:EOC: End of charge充电原理图标示:---------------------------------------------------------------------------------------------------------------------- 由以上分析可以推知,手机在低电压锁定后不能充电跟手机的充电电路没有关系!下面是针对手机电池内部保护电路的分析过程:电池内部保护电路图:现在电池保护IC有很多家,但基本原理应该是上图所示!它主要有过冲保护、过放保护、大电流保护等功能。

单片机ADC应用笔记

单片机ADC应用笔记

单片机ADC应用笔记AVR单片机模数转换的ADC实验ATmega16内容来源:本站整理发布时间:[2010-11-07]查看次数:7226.2 模数转换的ADC实验6.2.1、实例功能AVR的模数转换器ADC具有下列特点:1.10位精度;2.0.5LSB积分非线形误差3.±2LSB的绝对精度;4.13μs~260μs的转换时间;5.在最大精度下可达到每秒15kSPS的采样速率;6.8路可选的单端输入通道;7.7路差分输入通道;8.2路差分输入通道带有可选的10×和200×增益;9.ADC转换结果的读取可设置为左端对齐(LEFTADJUSTMENT);10.ADC的电压输入范围0~Vcc;11.可选择的内部2.56V的ADC参考电压源;12.自由连续转换模式和单次转换模式;13.ADC自动转换触发模式选择;14.ADC转换完成中断;15.休眠模式下的噪声抑制器(NOISE CANCELER)。

在本实例中,我们将编写程序实现将模数转换后获得的电压值通过单片机的串口发送到计算机,然后通过计算机上的串口助手显示测量的电压值。

本实例共有3个功能模块,分别描述如下:● 单片机系统:使用单片机的串口实现将模数转换后获得的电压值通过串口发送到计算机。

● 外围电路:RS232电平转换电路,DB9串行接口插座,模拟电压输入采集电路。

● 软件程序:进一步熟悉单片机的串行通信,并掌握单片机的模数转换的方法。

6.2.2、器件和原理关于串行接口的原理已接单片机与计算机的串口的连接在上一实例中进行了描述,在本实例中不再重复。

本实例只介绍ATmega16单片机如何通过内置的模数转换模块采集外界输入的模拟电压。

1、ATmega16单片机的模数转换器ADC介绍由于单片机只能处理数字信号,所以外部的模拟信号量需要转变成数字量才能进一步的由单片机进行处理。

ATmega16内部集成有一个10位逐次比较(successive approximation)ADC电路。

ADC学习总结

ADC学习总结

ADC介绍12位ADC是一种逐次逼近型模拟数字转换器。

它有多达18个通道,可测量16个外部和2个内部信号源。

各通道的A/D转换可以单次、连续、扫描或间断模式执行。

ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

ADC转换时间的计算ADC 时钟频率越高,转换速度也就越快,但ADC 时钟有上限值,不能超过14MHzADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。

每个通道可以分别用不同的时间采样。

总转换时间如下计算:把PCLK2 配置为56MHz时,最短采样时间为1us把PCLK2 配置为72MHz时,最短采样时间为1.17us因为ADC时钟上线不能超过14MHz,72MHz时最小分频要6分频,此时ADC时钟频率为12MHz,而最小采样时间为1.5T CONV = 1.5 + 12.5 = 14周期T=14*1/12MHz=1.17usADC的GPIO的配置GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOC, &GPIO_InitStructure);ADC的配置ADC_InitTypeDef ADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;//规定了模数转换工作在扫描模式(多通道)模式ADC_ScanConvMode 规定了模数转换工作在扫描模式(多通道)还是单次(单通道)模式。

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

作者: 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())中保存的斜率和偏移量。

相关文档
最新文档