yincheng.zhong
2024-03-01 8b77c1ebab0a815b07d8a899b4783c923dc733e2
Src/OnChipDevices/ADC.c
@@ -2,68 +2,35 @@
#include "main.h"
uint16_t Get_ADC_Value()
{
    HAL_ADC_Start(&hadc);
    HAL_ADC_PollForConversion(&hadc, 10);
    if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc), HAL_ADC_STATE_REG_EOC))
    {
        return HAL_ADC_GetValue(&hadc);
    }
HAL_ADC_Start(&hadc);
 HAL_ADC_PollForConversion(&hadc, 10);
   if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc), HAL_ADC_STATE_REG_EOC))
      {
         return HAL_ADC_GetValue(&hadc);
      }
}
float bat_volt;
uint8_t Get_Battary(void)
{   static float last_value = 100;
    static uint8_t first=1;
    HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_RESET);
    bat_volt = (float)Get_ADC_Value()/621;  //(value/4096*3.3*2-3.5)/0.7
    HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_SET);
    if(bat_volt>=3.5)
    {
        if(first)
        {
            first = 0;
            bat_volt = (float)Get_ADC_Value()/621;
            last_value =(bat_volt-3.5)*167;//(bat_volt-3.5)/0.6*100
        }
        last_value = 0.9*last_value + (bat_volt-3.5)*16.7;
        if(last_value>100)
            last_value = 100;
        if(last_value<0)
            last_value = 0;
    } else {
        last_value=0;
    }
    return last_value;
{static float last_value = 100;
static uint8_t first=1;
   HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_RESET);
   bat_volt = (float)Get_ADC_Value()/621;  //(value/4096*3.3*2-3.5)/0.7
   HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_SET);
   if(bat_volt>=3.5)
   {
      if(first)
      {
      first = 0;
            bat_volt = (float)Get_ADC_Value()/621;
         last_value =(bat_volt-3.5)*167;//(bat_volt-3.5)/0.6*100
      }
      last_value = 0.9*last_value + (bat_volt-3.5)*16.7;
   if(last_value>100)
      last_value = 100;
   if(last_value<0)
      last_value = 0;
}else{
   last_value=0;
}
uint16_t verfint_cal,adc_val;
uint8_t Get_VDDVlotage(void)
{   static float last_value = 100;
    static uint8_t first=1;
    static uint16_t bat_count = 0;
    if(bat_count++%600==0)
    {
        MX_ADC1_Init();
        Delay_Us(30);
        adc_val = Get_ADC_Value();
        MX_ADC_DeInit();
        //temp_voltage = (float)Get_ADC_Value()/621;  //(value/4096*3.3*2-3.5)/0.7
        verfint_cal = *(__IO uint16_t *)(0X1FF80078);
        bat_volt = 3*(float)verfint_cal/adc_val-0.329;
        if(bat_volt>=3.0)
        {
            if(first)
            {
                first = 0;
                last_value =(bat_volt-3.0)*167;//(bat_volt-3.5)/0.6*100
            }
            last_value = 0.9*last_value + (bat_volt-3.0)*16.7;
            if(last_value>100)
                last_value = 100;
            if(last_value<0)
                last_value = 0;
        } else {
            last_value=0;
        }
    }
    return last_value;
   return last_value;
}