diff --git a/code/application/source/sf_app/code/source/battery/sf_battery.c b/code/application/source/sf_app/code/source/battery/sf_battery.c index 4f16020d1..e4b289a76 100755 --- a/code/application/source/sf_app/code/source/battery/sf_battery.c +++ b/code/application/source/sf_app/code/source/battery/sf_battery.c @@ -103,7 +103,30 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI */ //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; - volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; + //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; + volt = (27 * adcVal + 3097) / 531; + return volt; +} + +/************************************************* + Function: sf_aa_battery_voltage_convert + Description: battery voltage convert + Input: resistanceGnd:Grounding terminal resistance,resistanceVin:Input resistance,adcVal:adc val + Output: N/A + Return: Volt * 10 + Others: N/A +*************************************************/ +UINT32 sf_aa_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 adcVal) +{ + UINT32 volt = 0; + + /*511 * (detected voltage) / (SARADC reference voltage) + DC input voltage x resistanceGnd/(resistanceGnd + resistanceVin) = detected voltage, + SARADC reference voltage:1.8V + */ + + //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; + volt = (27 * adcVal + 554) / 539; return volt; } @@ -112,10 +135,20 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN UINT32 adcVal = 0; //adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin); - adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + adcVal = (volt * 531 - 3097) / 27; return adcVal; } +UINT32 sf_aa_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 volt) +{ + UINT32 adcVal = 0; + + //adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin); + //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + adcVal = (volt * 539 - 554) / 27; + return adcVal; +} UINT32 sf_get_max_value(UINT32 *_ValueList) { UINT8 readBatCnt = 0; @@ -320,7 +353,7 @@ UINT32 sf_battery_adc_value_get_once(void) if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS) { - batVoltageVal = sf_battery_voltage_convert(24, 100, batAdc); + 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); @@ -638,7 +671,7 @@ signed int sf_battery_value_fast_get(void) if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]), + printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_aa_battery_convert_to_adc(24, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); } } @@ -844,7 +877,7 @@ void sf_battery_level_polling(void) } else { - printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(24, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10); + printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_aa_battery_convert_to_adc(24, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10); } } } diff --git a/rtos/code/driver/na51089/source/mcu/sf_battery.c b/rtos/code/driver/na51089/source/mcu/sf_battery.c index d64dd0dbf..480819130 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_battery.c +++ b/rtos/code/driver/na51089/source/mcu/sf_battery.c @@ -107,7 +107,30 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI */ //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; - volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; + //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 2696; + volt = (27 * adcVal + 3097) / 531; + return volt; +} + +/************************************************* + Function: sf_aa_battery_voltage_convert + Description: battery voltage convert + Input: resistanceGnd:Grounding terminal resistance,resistanceVin:Input resistance,adcVal:adc val + Output: N/A + Return: Volt * 10 + Others: N/A +*************************************************/ +UINT32 sf_aa_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 adcVal) +{ + UINT32 volt = 0; + + /*511 * (detected voltage) / (SARADC reference voltage) + DC input voltage x resistanceGnd/(resistanceGnd + resistanceVin) = detected voltage, + SARADC reference voltage:1.8V + */ + + //volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; + volt = (27 * adcVal + 554) / 539; return volt; } @@ -116,10 +139,19 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN UINT32 adcVal = 0; //adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin); - adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + adcVal = (volt * 531 - 3097) / 27; return adcVal; } +UINT32 sf_aa_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UINT32 volt) +{ + UINT32 adcVal = 0; + //adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin); + //adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin); + adcVal = (volt * 539 - 554) / 27; + return adcVal; +} UINT32 sf_get_max_value(UINT32 *_ValueList) { UINT8 readBatCnt = 0; @@ -349,7 +381,7 @@ UINT32 sf_battery_adc_value_get_once(void) { if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS) { - batVoltageVal = sf_battery_voltage_convert(24, 100, batAdc); + batVoltageVal = sf_aa_battery_voltage_convert(24, 100, batAdc); //batVoltageVal += 4; if(puiPara->BatteryLogSwitch) printf("Bat ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10); @@ -663,7 +695,7 @@ signed int sf_battery_value_fast_get(void) if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]Other Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]), + printf("%s:%d [%d]Other Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_aa_battery_convert_to_adc(24, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); } } @@ -1692,7 +1724,7 @@ void sf_battery_print(void) } else { - printf("Other ADC Value=%lu V:(%lu.%luV)\n", sf_battery_convert_to_adc(24, 100, BatVoltageVal), BatVoltageVal / 10, BatVoltageVal % 10); + printf("Other ADC Value=%lu V:(%lu.%luV)\n", sf_aa_battery_convert_to_adc(24, 100, BatVoltageVal), BatVoltageVal / 10, BatVoltageVal % 10); } } #endif