| | |
| | | #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; |
| | | } |