1.Linux下电池检测调整

This commit is contained in:
payton 2023-12-11 15:56:34 +08:00
parent 279907d8f8
commit 2b7af14a19

View File

@ -212,7 +212,7 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
{ {
static UINT8 getAdcFlg = 0; static UINT8 getAdcFlg = 0;
//static UINT8 outputflag = 1; //static UINT8 outputflag = 1;
UINT32 adc_device_delay_time_ms = 100; UINT32 adc_device_delay_time_ms = 20;
*pval = 0; *pval = 0;
if(getAdcFlg) if(getAdcFlg)
@ -349,7 +349,7 @@ UINT32 sf_battery_adc_value_get_once(void)
UINT32 liPolymerVoltageVal = 0; UINT32 liPolymerVoltageVal = 0;
UINT32 batVoltageVal = 0; UINT32 batVoltageVal = 0;
static UINT8 getBatAdcFlg = 0; static UINT8 getBatAdcFlg = 0;
UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); // UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
if(getBatAdcFlg) if(getBatAdcFlg)
return SUCCESS; return SUCCESS;
@ -361,8 +361,8 @@ UINT32 sf_battery_adc_value_get_once(void)
{ {
dcVoltageVal = sf_battery_voltage_convert(24, 100, batAdc); dcVoltageVal = sf_battery_voltage_convert(24, 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);
} }
@ -370,8 +370,8 @@ UINT32 sf_battery_adc_value_get_once(void)
{ {
liPolymerVoltageVal = sf_battery_voltage_convert(24, 100, batAdc); liPolymerVoltageVal = sf_battery_voltage_convert(24, 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);
} }
@ -379,15 +379,15 @@ UINT32 sf_battery_adc_value_get_once(void)
{ {
batVoltageVal = sf_aa_battery_voltage_convert(24, 100, batAdc); batVoltageVal = sf_aa_battery_voltage_convert(24, 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);
} }
if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS) if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS)
{ {
_TemperAdc = batAdc; _TemperAdc = batAdc;
if(puiPara->BatteryLogSwitch) // if(puiPara->BatteryLogSwitch)
printf("_TemperAdc:%d \n",batAdc); // printf("_TemperAdc:%d \n",batAdc);
} }
_DcVoltageVal = dcVoltageVal; _DcVoltageVal = dcVoltageVal;
@ -768,45 +768,61 @@ SINT32 sf_battery_adc_value_get(void)
UINT32 dcTemp = 0; UINT32 dcTemp = 0;
UINT32 batTemp = 0; UINT32 batTemp = 0;
UINT32 dcValueList = { 0 }; UINT32 LibatTemp = 0;
UINT32 batValueList = { 0 }; UINT8 LibatCnt = 0;
UINT8 batCnt = 0;
UINT32 temperValue = 0;
//SINT32 ret = FAIL; //SINT32 ret = FAIL;
//uiPara_t * puiPara = appUiParaGet(); //uiPara_t * puiPara = appUiParaGet();
for(readBatCnt = 0; readBatCnt < 10;) //get average value of 10 times. for(readBatCnt = 0; readBatCnt < 5;) //get average value of 10 times.
{ {
if(sf_battery_adc_value_get_once() == SUCCESS) if(sf_battery_adc_value_get_once() == SUCCESS)
{ {
dcValueList = _DcVoltageVal; dcTemp += _DcVoltageVal;
temperValue += _TemperAdc;
if(_LiPolymerVoltageVal) if(_LiPolymerVoltageVal)
{ {
batValueList = _LiPolymerVoltageVal; LibatTemp += _LiPolymerVoltageVal;
LibatCnt++;
} }
else else
{ {
batValueList = _BatVoltageVal; batTemp += _BatVoltageVal;
batCnt++;
} }
dcTemp += dcValueList;
batTemp += batValueList;
readBatCnt++; readBatCnt++;
sf_sleep_ms(100); //sf_sleep_ms(10);
if(readBatCnt >= SF_READ_BAT_MAX) if(readBatCnt >= 5)
{ {
_DcVoltageVal = dcTemp / SF_READ_BAT_MAX; _DcVoltageVal = dcTemp / 5;
_TemperAdc = temperValue/ 5;
if(_LiPolymerVoltageVal) if(LibatCnt)
_LiPolymerVoltageVal = LibatTemp / LibatCnt;
if(batCnt)
_BatVoltageVal = batTemp / batCnt;
if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal) && (_DcVoltageVal >= SF_DC_IN_VOLATAGE))
{ {
_LiPolymerVoltageVal = batTemp / SF_READ_BAT_MAX; IsPowerDcIn = 1;
} }
else if(_BatVoltageVal) else
{ {
_BatVoltageVal = batTemp / SF_READ_BAT_MAX; IsPowerDcIn = 0;
}
if ((_LiPolymerVoltageVal > _BatVoltageVal))
{
_BatVoltageVal = 0;
}
else
{
_LiPolymerVoltageVal = 0;
} }
} }
} }
@ -842,7 +858,7 @@ void sf_battery_level_polling(void)
{ {
if(sf_battery_adc_value_get() == SUCCESS) if(sf_battery_adc_value_get() == SUCCESS)
{ {
//sf_sleep_ms(100); sf_sleep_ms(100);
dcTemp += _DcVoltageVal; dcTemp += _DcVoltageVal;
temperValue += _TemperAdc; temperValue += _TemperAdc;
@ -1097,7 +1113,7 @@ void sf_view_osd_battery_draw(UINT8 bShow)
UINT8 sf_battery_value_get(UINT8 nightMode) UINT8 sf_battery_value_get(UINT8 nightMode)
{ {
UINT8 value = 0; UINT8 value = 0;
UINT8 batteryVal = 0; UINT32 batteryVal = 0;
UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
if(IsPowerDcIn == 0) if(IsPowerDcIn == 0)