1.Linux下电池检测调整
This commit is contained in:
		
							parent
							
								
									279907d8f8
								
							
						
					
					
						commit
						2b7af14a19
					
				| 
						 | 
				
			
			@ -212,7 +212,7 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
 | 
			
		|||
{
 | 
			
		||||
	static UINT8 getAdcFlg = 0;
 | 
			
		||||
	//static UINT8 outputflag = 1;
 | 
			
		||||
	UINT32 adc_device_delay_time_ms = 100;
 | 
			
		||||
	UINT32 adc_device_delay_time_ms = 20;
 | 
			
		||||
    *pval = 0;
 | 
			
		||||
 | 
			
		||||
	if(getAdcFlg)
 | 
			
		||||
| 
						 | 
				
			
			@ -349,7 +349,7 @@ UINT32 sf_battery_adc_value_get_once(void)
 | 
			
		|||
	UINT32 liPolymerVoltageVal = 0;
 | 
			
		||||
	UINT32 batVoltageVal = 0;
 | 
			
		||||
	static UINT8 getBatAdcFlg = 0;
 | 
			
		||||
	UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
 | 
			
		||||
	// UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
 | 
			
		||||
 | 
			
		||||
	if(getBatAdcFlg)
 | 
			
		||||
		return SUCCESS;
 | 
			
		||||
| 
						 | 
				
			
			@ -361,8 +361,8 @@ UINT32 sf_battery_adc_value_get_once(void)
 | 
			
		|||
	{
 | 
			
		||||
        dcVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
 | 
			
		||||
        //dcVoltageVal += 2;
 | 
			
		||||
        if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		    printf("DC ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10);
 | 
			
		||||
        // if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		//     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 += 2;
 | 
			
		||||
        if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		    printf("Li ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,liPolymerVoltageVal,liPolymerVoltageVal/10,liPolymerVoltageVal%10);
 | 
			
		||||
        // if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		//     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 += 2;
 | 
			
		||||
        if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		    printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
 | 
			
		||||
        // if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		//     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)
 | 
			
		||||
    {
 | 
			
		||||
        _TemperAdc = batAdc;
 | 
			
		||||
        if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		    printf("_TemperAdc:%d \n",batAdc);
 | 
			
		||||
        // if(puiPara->BatteryLogSwitch)
 | 
			
		||||
		//     printf("_TemperAdc:%d \n",batAdc);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
	_DcVoltageVal = dcVoltageVal;
 | 
			
		||||
| 
						 | 
				
			
			@ -768,45 +768,61 @@ SINT32 sf_battery_adc_value_get(void)
 | 
			
		|||
 | 
			
		||||
	UINT32 dcTemp = 0;
 | 
			
		||||
	UINT32 batTemp = 0;
 | 
			
		||||
	UINT32 dcValueList = { 0 };
 | 
			
		||||
	UINT32 batValueList = { 0 };
 | 
			
		||||
    UINT32 LibatTemp = 0;
 | 
			
		||||
    UINT8 LibatCnt = 0;
 | 
			
		||||
    UINT8 batCnt = 0;
 | 
			
		||||
    UINT32 temperValue = 0;
 | 
			
		||||
 | 
			
		||||
	//SINT32 ret = FAIL;
 | 
			
		||||
 | 
			
		||||
	//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)
 | 
			
		||||
        {
 | 
			
		||||
            dcValueList = _DcVoltageVal;
 | 
			
		||||
 | 
			
		||||
            dcTemp += _DcVoltageVal;
 | 
			
		||||
            temperValue += _TemperAdc;
 | 
			
		||||
            if(_LiPolymerVoltageVal)
 | 
			
		||||
            {
 | 
			
		||||
                batValueList = _LiPolymerVoltageVal;
 | 
			
		||||
                LibatTemp += _LiPolymerVoltageVal;
 | 
			
		||||
                LibatCnt++;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                batValueList = _BatVoltageVal;
 | 
			
		||||
                batTemp += _BatVoltageVal;
 | 
			
		||||
                batCnt++;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            dcTemp += dcValueList;
 | 
			
		||||
            batTemp += batValueList;
 | 
			
		||||
 | 
			
		||||
            readBatCnt++;
 | 
			
		||||
 | 
			
		||||
            sf_sleep_ms(100);
 | 
			
		||||
            if(readBatCnt >= SF_READ_BAT_MAX)
 | 
			
		||||
            //sf_sleep_ms(10);
 | 
			
		||||
            if(readBatCnt >= 5)
 | 
			
		||||
            {
 | 
			
		||||
                _DcVoltageVal = dcTemp / SF_READ_BAT_MAX;
 | 
			
		||||
                _DcVoltageVal = dcTemp / 5;
 | 
			
		||||
                _TemperAdc = temperValue/ 5;
 | 
			
		||||
                
 | 
			
		||||
                if(LibatCnt)
 | 
			
		||||
                    _LiPolymerVoltageVal = LibatTemp / LibatCnt;
 | 
			
		||||
                if(batCnt)
 | 
			
		||||
                    _BatVoltageVal = batTemp / batCnt;
 | 
			
		||||
 | 
			
		||||
                if(_LiPolymerVoltageVal)
 | 
			
		||||
                {
 | 
			
		||||
                    _LiPolymerVoltageVal = batTemp / SF_READ_BAT_MAX;
 | 
			
		||||
                if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal) && (_DcVoltageVal >= SF_DC_IN_VOLATAGE))
 | 
			
		||||
                {	
 | 
			
		||||
                    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)
 | 
			
		||||
		{
 | 
			
		||||
            //sf_sleep_ms(100);
 | 
			
		||||
            sf_sleep_ms(100);
 | 
			
		||||
 | 
			
		||||
			dcTemp += _DcVoltageVal;
 | 
			
		||||
            temperValue += _TemperAdc;
 | 
			
		||||
| 
						 | 
				
			
			@ -1097,7 +1113,7 @@ void sf_view_osd_battery_draw(UINT8 bShow)
 | 
			
		|||
UINT8 sf_battery_value_get(UINT8 nightMode)
 | 
			
		||||
{
 | 
			
		||||
	UINT8 value = 0;
 | 
			
		||||
	UINT8 batteryVal = 0;
 | 
			
		||||
	UINT32 batteryVal = 0;
 | 
			
		||||
	
 | 
			
		||||
    UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
 | 
			
		||||
	if(IsPowerDcIn == 0)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user