uint16_t HAL_GetVbatt(void)
{
uint8_t sensor, channel, config, tkey_cfg;
uint16_t adc_data;
tkey_cfg = R8_TKEY_CFG;
sensor = R8_TEM_SENSOR;
channel = R8_ADC_CHANNEL;
config = R8_ADC_CFG;
ADC_InterBATSampInit();
R8_ADC_CONVERT |= RB_ADC_START;
while (R8_ADC_CONVERT & RB_ADC_START)
;
adc_data = R16_ADC_DATA;
R8_TEM_SENSOR = sensor;
R8_ADC_CHANNEL = channel;
R8_ADC_CFG = config;
R8_TKEY_CFG = tkey_cfg;
return (adc_data+ADC_DataCalib_Rough());
}
或者用系统自带的:
ADC_InterBATSampInit();
PRINT("%d\r\n",ADC_ExcutSingleConver());
公式:(ADC/512-3)*Vref
3.6V供电:adc值是3300 公式计算电压:6.807V
3.3V供电:adc值是3156 公式计算电压:6.510V
3.0V供电:adc值是3009 公式计算电压:6.207V
2.9V供电:adc值是2961 公式计算电压:6.108V
2.5V供电:adc值是2761 公式计算电压:5.696V
无法对的上,也无法找到内部VBAT通道和实际供电电压的线性关系,请问正确的操作是?