uint32_t stick = 0;
uint32_t sample_zero_count = 0;
//开启 battery NTC 开关
- uapi_gpio_set_val(BATTERY_NTC_GPIO,GPIO_LEVEL_LOW);
+ if(channel != ADC_CHANNEL_BAT_VOLTAGE)
+ uapi_gpio_set_val(BATTERY_NTC_GPIO,GPIO_LEVEL_LOW);
if (channel >= ADC_CHANNEL_4) {
sample_number = HAL_ADC_SAMPLE_NUMBER_CONFIG_1;
}
// osal_printk("channel = %d , stick = %d , voltage = %.04f.\r\n", channel,stick,*voltage);
- //关闭 battery NTC 电源
- uapi_gpio_set_val(BATTERY_NTC_GPIO,GPIO_LEVEL_HIGH);
+ //关闭 battery NTC 电源
+ if(channel != ADC_CHANNEL_BAT_VOLTAGE)
+ uapi_gpio_set_val(BATTERY_NTC_GPIO,GPIO_LEVEL_HIGH);
UNUSED(discard_number);
return true;
{
battery_info_t *current_battery_info = get_current_battery_info();
*temp = current_battery_info->battery_ntc_temp;
-
+ // PRINT("*temp : %.3f\n",*temp);
+ if(!*temp)
+ {
+ batteryservice_get_voltage_by_channel(¤t_battery_info->battery_ntc_temp,ADC_CHANNEL_BAT_TEMP);
+ uapi_tcxo_delay_ms(20);
+ *temp = current_battery_info->battery_ntc_temp;
+ }
return 0;
}
uint8_t batteryservice_get_pcb_temp(float *temp)
return 0;
}
+static uint8_t bat_temp_cnt = 0;
static void battery_check_voltage(void)
{
battery_info_t *current_battery_info = get_current_battery_info();
batteryservice_get_voltage_by_channel(¤t_battery_info->battery_voltage,ADC_CHANNEL_BAT_VOLTAGE);
uapi_tcxo_delay_ms(20);
- batteryservice_get_voltage_by_channel(¤t_battery_info->battery_ntc_temp,ADC_CHANNEL_BAT_TEMP);
- uapi_tcxo_delay_ms(20);
+
+ if(bat_temp_cnt >= 8) //5分钟左右检测一次电池温度
+ {
+ bat_temp_cnt = 0;
+ batteryservice_get_voltage_by_channel(¤t_battery_info->battery_ntc_temp,ADC_CHANNEL_BAT_TEMP);
+ // printf("current_battery_info->battery_ntc_temp : %.3f \n",current_battery_info->battery_ntc_temp);
+ uapi_tcxo_delay_ms(20);
+ }
+ else
+ {
+ bat_temp_cnt ++;
+ }
// batteryservice_get_voltage_by_channel(¤t_battery_info->pcb_ntc_temp,ADC_CHANNEL_PCB_TEMP);
// uapi_tcxo_delay_ms(20);
}