杰理AC1082/1074/1090---LDOIN电压采集

Author : Jim

AC109N系列的芯片带有内部LDOIN ADC采集,所以我们在采集电池电量时并不需要单独用另一路ADC来采集。

只需要用内部的LDOIN采集就可以了。以下为ADC应用的寄存器说明:

/*! \page5 ADC 编程指南
 *
 * \section adc ADC 介绍
 * - CD002 支持16 个ADC入口\n
 * \section adc1 ADC 寄存器
 * - ADC_CON0(可读写)\n
 *   Bit2~0,波特率选择,初始值为0\n
 *   000:系统时钟除6\n
 *   001:系统时钟除12\n
 *   010:系统时钟除24\n
 *   011:系统时钟除48\n
 *   1xx:系统时钟除1\n 
 *   Bit3,ADC 模拟模块Enable,初始值为0\n
 *   Bit4,ADC控制器Enable(数字电路部分),初始值为0\n
 *   Bit5,ADC中断允许,高有效,初始值为0\n
 *   Bit6,ADC Pending,初始值为1\n
 *   Bit7,ADC启动位,写1会启动ADC转换,并且对ADC Pending清0。读永远是0

 * - ADC_CON1(可读写)初始值为xx\n
 *   Bit3~0,通道选择\n
 *   0000~0111:选择P00~P07\n
 *   1000:		选择P20\n
 *   1001:		选择P21\n
 *   1010:		选择P22\n
 *   1011:		选择P35\n
 *   1100:		选择AMUX左声道\n
 *   1101:		选择AMUX右声道\n
 *   1110:		选择LDOIN的1/2\n
 *   1111:		选择LDO电压源(1.2V)\n
 *   Bit7~4,	启动延时控制,\n
 *   实际启动延时为这4Bit乘8个ADC时钟\n
 *   
 *
 * - ADC_DATH\n
 *   bit7~0 : 存放ADC采样结果的高 8 bit
 * - ADC_DATL\n
 *   bit7~6 : 存放ADC采样结果的低 2 bit
 */

可以看到当ADC_CON1寄存器配置为0XFE时,就可以打开LDOIN采集通道了,采集到的电压是1/2 Vbat.

参考代码如下:

void AD_init(void) AT(CSTART)
{
    ADC_CON0 = BIT(4) | BIT(3) ;
    LDO_CON |= BIT(1);
    ADC_CON1 = 0xfe;
    ADC_CON0 |= BIT(7);
}
_near_func __root u8 ldoin_voltage(void) AT(COMMON_CODE)
{
   u8  adc_h,adc_l;

    adc_h= (AD_var.wADValue[AD_CH_LDO])>>8;
    adc_l= (AD_var.wADValue[AD_CH_VBG])>>8;
    return  ((((u16)adc_h*248+5)/10)/adc_l);
}

调用 ldoin_voltage ,返回值就是LDOIN的输入电压了。

你可能感兴趣的:(AC1082,AC1074,AC1090)