From cbe3b0a4c27e0d28628e4c57a7835526591c6201 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期三, 06 三月 2024 22:10:15 +0800 Subject: [PATCH] V1.5 增加电量,心跳包功能,但是好像有bug,一段时间后UWB不测距。 --- Src/OnChipDevices/ADC.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 57 insertions(+), 3 deletions(-) diff --git a/Src/OnChipDevices/ADC.c b/Src/OnChipDevices/ADC.c index 2e512e7..c029a89 100644 --- a/Src/OnChipDevices/ADC.c +++ b/Src/OnChipDevices/ADC.c @@ -1,6 +1,7 @@ #include "ADC.h" #include "main.h" -static uint16_t Get_ADC_Value() + +uint16_t Get_ADC_Value() { HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc, 10); @@ -9,23 +10,76 @@ return HAL_ADC_GetValue(&hadc); } } +uint16_t GetRandomValue(void) +{ + uint16_t temp; + for(uint8_t i=0;i<16;i++) + { + if(Get_ADC_Value()%2) + { + temp=temp|(1<<i); + } + } + return temp; +} 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; - last_value =(bat_volt-3.5)*143; + 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)*14.3; + 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) +// { + READC_Init(); + Delay_Ms(10); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); + 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.28; + 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; + } + printf("VCC:%.2f\r\n",bat_volt); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); +//} return last_value; } \ No newline at end of file -- Gitblit v1.9.3