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