1.电池电压调整

This commit is contained in:
payton 2023-07-21 11:13:54 +08:00
parent 96a50de731
commit e3104e6907

View File

@ -302,7 +302,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS)
{
dcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc);
dcVoltageVal += 2;
//dcVoltageVal += 2;
if(puiPara->BatteryLogSwitch)
printf("DC ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10);
@ -311,7 +311,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS)
{
liPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
liPolymerVoltageVal += 2;
//liPolymerVoltageVal += 2;
if(puiPara->BatteryLogSwitch)
printf("Li ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,liPolymerVoltageVal,liPolymerVoltageVal/10,liPolymerVoltageVal%10);
@ -320,7 +320,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
{
batVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
batVoltageVal += 2;
//batVoltageVal += 2;
if(puiPara->BatteryLogSwitch)
printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
}
@ -693,6 +693,68 @@ signed int sf_battery_value_fast_get(void)
return ret;
}
/******************************************************
Function: sf_battery_adc_value_get
Description: auto mode:take the maximum of 5 times;
manual mode:take the average of 10 times;
Input: N/A
Output: N/A
Return: SUCCESS/FAIL
Others: N/A
*******************************************************/
SINT32 sf_battery_adc_value_get(void)
{
UINT8 readBatCnt = 0;
UINT32 dcTemp = 0;
UINT32 batTemp = 0;
UINT32 dcValueList = { 0 };
UINT32 batValueList = { 0 };
//SINT32 ret = FAIL;
//uiPara_t * puiPara = appUiParaGet();
for(readBatCnt = 0; readBatCnt < 10;) //get average value of 10 times.
{
if(sf_battery_adc_value_get_once() == SUCCESS)
{
dcValueList = _DcVoltageVal;
if(_LiPolymerVoltageVal)
{
batValueList = _LiPolymerVoltageVal;
}
else
{
batValueList = _BatVoltageVal;
}
dcTemp += dcValueList;
batTemp += batValueList;
readBatCnt++;
sf_sleep_ms(100);
if(readBatCnt >= SF_READ_BAT_MAX)
{
_DcVoltageVal = dcTemp / SF_READ_BAT_MAX;
if(_LiPolymerVoltageVal)
{
_LiPolymerVoltageVal = batTemp / SF_READ_BAT_MAX;
}
else if(_BatVoltageVal)
{
_BatVoltageVal = batTemp / SF_READ_BAT_MAX;
}
}
}
}
return SUCCESS;
}
/*************************************************
Function: sf_battery_level_polling
Description: polling battery level
@ -717,11 +779,11 @@ void sf_battery_level_polling(void)
static UINT32 battEmpty = 0;
for(readBatCnt = 0; readBatCnt < 100;) //get average value of 100 times.
for(readBatCnt = 0; readBatCnt < 10;) //get average value of 10 times.
{
if(sf_battery_adc_value_get_once() == SUCCESS)
if(sf_battery_adc_value_get() == SUCCESS)
{
sf_sleep_ms(100);
//sf_sleep_ms(100);
dcTemp += _DcVoltageVal;
temperValue += _TemperAdc;
@ -731,17 +793,17 @@ void sf_battery_level_polling(void)
LibatTemp += _LiPolymerVoltageVal;
batCnt++;
}
else
else if(_BatVoltageVal)
{
batTemp += _BatVoltageVal;
LibatCnt++;
}
readBatCnt++;
if(readBatCnt >= 100)
if(readBatCnt >= 10)
{
_DcVoltageVal = dcTemp / 100;
_TemperAdc = temperValue/100;
_DcVoltageVal = dcTemp / 10;
_TemperAdc = temperValue/10;
if(LibatCnt)
_LiPolymerVoltageVal = LibatTemp / LibatCnt;
@ -1221,8 +1283,10 @@ UINT8 sf_battery_type_get(void)
return SF_POWER_TYPE_DC;
else if(LiPolymerVoltageVal)
return SF_POWER_TYPE_LI_POLYER;
else
else if(BatVoltageVal)
return SF_POWER_TYPE_AA;
else
return SF_POWER_TYPE_DC;
}
/*************************************************