#include "ADC.h"
|
#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);
|
}
|
}
|
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;
|
}
|
|
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;
|
}
|