,即analogtodigitalconverter,模拟信号至数字信号的转换器。主要的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为每单位表示的电压。,ADC为10位的,故a=2800000/2^10=2734(uV)。通常为了扩大测量范围,需要把a扩大约一倍(记为a1),之后再通过factor校正。比如变成5524,,需要测量确定。每一个ADC都有一组a,b值,[]结构体中的数组ADC_CALIDATAadc_cali_param[]给定factor满足以下等式:factor*(R2+R1)/R1=100*a1/aa1为adc_cali_param[]中的值,a为2734,R1,,主要有四个用途:,,visense,vtmp,-:定时触发模式(上述的1,2)和即时触发模式(3,4),0~2通道用于内部:0-电池电压,1—电池电流,2—充电电压;3~5通道可用于外部电压检测主要有三个用途(区分usb还是charger不需要ADC):(即电池电量显示),visense,vtmp,;(或称事件触发检测)。定时触发检测:由AUXADC_CON0(0x8205_0000)寄存器设置,当对应位置为1时,对应的通道即为定时触发检测模式。如AUXADC_CON0设为0x3f,则6个通道均为定时触发检测。定时的时间量在寄存器TDMA_AUXEV1中设置即时触发检测:由AUXADC_CON1(0x8205_0008)寄存器设置,当对应位置为1时,对应的通道即为定时检测模式。如AUXADC_CON1设为0x3f,则6个通道均为即时触发检测。通道0~5 采样好的ADC值存储在寄存器AUXADC_DAT0(0x8205_0010)~AUXADC_DAT5(0x8205_0024)()BMT添加ADC到调度列表bmt_adc_sche_add_item()MSG_ID_BMT_ADC_ADD_ITEM_REQ修改ADC读取周期:ADC_TALKING_EVAL_COUNTADC_TALKING_EVAL_PERIODl4cuem_call_status_req_ind()MSG_ID_BMT_ADC_MEASURE_DONE_CONFUEM显示电量,f_hdlr()MSG_ID_BMT_ADC_MODIFY_PARAMETERS_REQbmt_adc_sche_modify_parameters()adc_sche_modify_parameters()调度器测量ADC:adc_sche_measure(),adc_sche_readback()ADC测量完成,plete_callback()f_hdlr()uemdrv_pmic_ind(PMIC_V
MTK平台ADC学习笔记 来自淘豆网m.daumloan.com转载请标明出处.