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) if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS)
{ {
dcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc); dcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc);
dcVoltageVal += 2; //dcVoltageVal += 2;
if(puiPara->BatteryLogSwitch) if(puiPara->BatteryLogSwitch)
printf("DC ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10); 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) if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS)
{ {
liPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc); liPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
liPolymerVoltageVal += 2; //liPolymerVoltageVal += 2;
if(puiPara->BatteryLogSwitch) if(puiPara->BatteryLogSwitch)
printf("Li ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,liPolymerVoltageVal,liPolymerVoltageVal/10,liPolymerVoltageVal%10); 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) if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
{ {
batVoltageVal = sf_battery_voltage_convert(15, 100, batAdc); batVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
batVoltageVal += 2; //batVoltageVal += 2;
if(puiPara->BatteryLogSwitch) if(puiPara->BatteryLogSwitch)
printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10); 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; 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 Function: sf_battery_level_polling
Description: polling battery level Description: polling battery level
@ -717,11 +779,11 @@ void sf_battery_level_polling(void)
static UINT32 battEmpty = 0; 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; dcTemp += _DcVoltageVal;
temperValue += _TemperAdc; temperValue += _TemperAdc;
@ -731,17 +793,17 @@ void sf_battery_level_polling(void)
LibatTemp += _LiPolymerVoltageVal; LibatTemp += _LiPolymerVoltageVal;
batCnt++; batCnt++;
} }
else else if(_BatVoltageVal)
{ {
batTemp += _BatVoltageVal; batTemp += _BatVoltageVal;
LibatCnt++; LibatCnt++;
} }
readBatCnt++; readBatCnt++;
if(readBatCnt >= 100) if(readBatCnt >= 10)
{ {
_DcVoltageVal = dcTemp / 100; _DcVoltageVal = dcTemp / 10;
_TemperAdc = temperValue/100; _TemperAdc = temperValue/10;
if(LibatCnt) if(LibatCnt)
_LiPolymerVoltageVal = LibatTemp / LibatCnt; _LiPolymerVoltageVal = LibatTemp / LibatCnt;
@ -1221,8 +1283,10 @@ UINT8 sf_battery_type_get(void)
return SF_POWER_TYPE_DC; return SF_POWER_TYPE_DC;
else if(LiPolymerVoltageVal) else if(LiPolymerVoltageVal)
return SF_POWER_TYPE_LI_POLYER; return SF_POWER_TYPE_LI_POLYER;
else else if(BatVoltageVal)
return SF_POWER_TYPE_AA; return SF_POWER_TYPE_AA;
else
return SF_POWER_TYPE_DC;
} }
/************************************************* /*************************************************