傑理AC1082/1074/1090---LDOIN電壓採集

2020-08-14 01:04:38

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的輸入電壓了。