1.电压测试软件并更新电压计算
This commit is contained in:
parent
be89f163b9
commit
5c6d89d3b6
|
@ -85,7 +85,7 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI
|
||||||
SARADC reference voltage:1.8V
|
SARADC reference voltage:1.8V
|
||||||
*/
|
*/
|
||||||
|
|
||||||
volt = 25 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 512;
|
volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
|
|
||||||
return volt;
|
return volt;
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN
|
||||||
{
|
{
|
||||||
UINT32 adcVal = 0;
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
adcVal = volt * resistanceGnd * 512 / 25 / (resistanceGnd + resistanceVin);
|
adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
|
||||||
return adcVal;
|
return adcVal;
|
||||||
}
|
}
|
||||||
|
@ -288,17 +288,19 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 += 3;
|
batVoltageVal += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
_DcVoltageVal = dcVoltageVal;
|
_DcVoltageVal = dcVoltageVal;
|
||||||
|
@ -729,15 +731,15 @@ void sf_battery_level_polling(void)
|
||||||
|
|
||||||
if(puiPara->BatteryLogSwitch)
|
if(puiPara->BatteryLogSwitch)
|
||||||
{
|
{
|
||||||
printf("\n[average]DC,After Convert:(%d.%dV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No");
|
printf("\n[average]DC Adc:%d After Convert:(%d.%dV),Is Dc In=%s\n", sf_battery_convert_to_adc(10, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No");
|
||||||
|
|
||||||
if(LiPolymerVoltageVal)
|
if(LiPolymerVoltageVal)
|
||||||
{
|
{
|
||||||
printf("[average]Li Battery,After Convert:(%d.%dV)\n\n", LiPolymerVoltageVal / 10, LiPolymerVoltageVal % 10);
|
printf("[average]Li Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(15, 100, LiPolymerVoltageVal), LiPolymerVoltageVal / 10, LiPolymerVoltageVal % 10);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("[average]Other Battery,After Convert:(%d.%dV)\n\n", BatVoltageVal / 10, BatVoltageVal % 10);
|
printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(15, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,4 +33,5 @@ BOOL sf_battery_check_init(void);
|
||||||
void sf_set_need_check_first(void);
|
void sf_set_need_check_first(void);
|
||||||
BOOL sf_is_enough_power_to_update(void);
|
BOOL sf_is_enough_power_to_update(void);
|
||||||
BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode);
|
BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode);
|
||||||
|
void sf_BatteryInfoSave(char *name);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -69,6 +69,10 @@ ID FLG_ID_SF_BSTTERY = 0;
|
||||||
#define SF_DC_IN_VOLATAGE 70
|
#define SF_DC_IN_VOLATAGE 70
|
||||||
#define SF_LI_IN_VOLATAGE 99
|
#define SF_LI_IN_VOLATAGE 99
|
||||||
|
|
||||||
|
#if SF_BATTERY_TEST == ENABLE
|
||||||
|
UINT32 LiPolymerVoltageValTest = 0;
|
||||||
|
UINT32 BatVoltageValTest = 0;
|
||||||
|
#endif
|
||||||
/*************************************************
|
/*************************************************
|
||||||
Function: sf_battery_voltage_convert
|
Function: sf_battery_voltage_convert
|
||||||
Description: battery voltage convert
|
Description: battery voltage convert
|
||||||
|
@ -86,7 +90,7 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI
|
||||||
SARADC reference voltage:1.8V
|
SARADC reference voltage:1.8V
|
||||||
*/
|
*/
|
||||||
|
|
||||||
volt = 25 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 512;
|
volt = 27 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511;
|
||||||
|
|
||||||
return volt;
|
return volt;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +99,7 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN
|
||||||
{
|
{
|
||||||
UINT32 adcVal = 0;
|
UINT32 adcVal = 0;
|
||||||
|
|
||||||
adcVal = volt * resistanceGnd * 512 / 25 / (resistanceGnd + resistanceVin);
|
adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
|
||||||
|
|
||||||
return adcVal;
|
return adcVal;
|
||||||
}
|
}
|
||||||
|
@ -132,6 +136,8 @@ void sf_adc_init(void)
|
||||||
// Enable adc control logic
|
// Enable adc control logic
|
||||||
adc_setEnable(TRUE);
|
adc_setEnable(TRUE);
|
||||||
|
|
||||||
|
gpio_direction_output(P_GPIO_0,0);
|
||||||
|
gpio_direction_output(P_GPIO_1,0);
|
||||||
}
|
}
|
||||||
/*************************************************
|
/*************************************************
|
||||||
Function: sf_adc_value_get
|
Function: sf_adc_value_get
|
||||||
|
@ -144,7 +150,7 @@ void sf_adc_init(void)
|
||||||
UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
|
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;
|
||||||
*pval = 0;
|
*pval = 0;
|
||||||
|
|
||||||
if(getAdcFlg)
|
if(getAdcFlg)
|
||||||
|
@ -153,13 +159,6 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
|
||||||
}
|
}
|
||||||
getAdcFlg = 1;
|
getAdcFlg = 1;
|
||||||
|
|
||||||
if(outputflag)
|
|
||||||
{
|
|
||||||
outputflag = 0;
|
|
||||||
gpio_direction_output(P_GPIO_0,0);
|
|
||||||
gpio_direction_output(P_GPIO_1,0);
|
|
||||||
vos_util_delay_ms(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(SF_ADC_BATT == mux)//bat_det
|
if(SF_ADC_BATT == mux)//bat_det
|
||||||
{
|
{
|
||||||
|
@ -187,7 +186,7 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
|
||||||
gpio_set_value(P_GPIO_1, 1);//adc_muxb
|
gpio_set_value(P_GPIO_1, 1);//adc_muxb
|
||||||
}
|
}
|
||||||
|
|
||||||
//vos_util_delay_us(500);
|
//vos_util_delay_us(400);
|
||||||
vos_util_delay_ms(1);
|
vos_util_delay_ms(1);
|
||||||
|
|
||||||
*pval = adc_readData(0);
|
*pval = adc_readData(0);
|
||||||
|
@ -291,17 +290,19 @@ 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 += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 += 3;
|
batVoltageVal += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
_DcVoltageVal = dcVoltageVal;
|
_DcVoltageVal = dcVoltageVal;
|
||||||
|
@ -640,7 +641,10 @@ signed int sf_battery_value_fast_get(void)
|
||||||
|
|
||||||
ret = SUCCESS;
|
ret = SUCCESS;
|
||||||
}
|
}
|
||||||
|
#if SF_BATTERY_TEST == ENABLE
|
||||||
|
LiPolymerVoltageValTest = LiPolymerVoltageVal;
|
||||||
|
BatVoltageValTest = BatVoltageVal;
|
||||||
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -827,7 +831,7 @@ void sf_battery_thread_init(void)
|
||||||
if(!dofirst)
|
if(!dofirst)
|
||||||
return;
|
return;
|
||||||
dofirst = 0;
|
dofirst = 0;
|
||||||
sf_adc_init();
|
|
||||||
VK_TASK_HANDLE s_handle_batt = 0;
|
VK_TASK_HANDLE s_handle_batt = 0;
|
||||||
|
|
||||||
vos_flag_create(&FLG_ID_SF_BSTTERY, NULL, "FLG_ID_SF_BSTTERY");
|
vos_flag_create(&FLG_ID_SF_BSTTERY, NULL, "FLG_ID_SF_BSTTERY");
|
||||||
|
@ -1228,24 +1232,16 @@ BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode)
|
||||||
*************************************************/
|
*************************************************/
|
||||||
BOOL sf_battery_check_init(void)
|
BOOL sf_battery_check_init(void)
|
||||||
{
|
{
|
||||||
if(sf_battery_value_fast_get() == SUCCESS)
|
sf_adc_init();
|
||||||
{
|
if(sf_is_battery_low(1, 0) == TRUE)
|
||||||
if(sf_is_battery_low(0, 0) == TRUE)
|
{
|
||||||
{
|
printf("[%s:%d]power off because low battery\n", __FUNCTION__, __LINE__);
|
||||||
printf("[%s:%d]power off because low battery\n", __FUNCTION__, __LINE__);
|
//Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start
|
||||||
//Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start
|
#if SF_IQ_TEST != ENABLE
|
||||||
sf_set_power_off_flag(1);
|
sf_set_power_off_flag(1);
|
||||||
flow_preview_set_stop_flag(TRUE);
|
flow_preview_set_stop_flag(TRUE);
|
||||||
return FALSE;
|
#endif
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#if HW_S530
|
|
||||||
sf_view_osd_battery_draw(TRUE);
|
|
||||||
#endif
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
void sf_set_need_check_first(void)
|
void sf_set_need_check_first(void)
|
||||||
|
@ -1276,5 +1272,55 @@ BOOL sf_is_enough_power_to_update(void)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SF_BATTERY_TEST == ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
void sf_BatteryInfoSave(char *name)
|
||||||
|
{
|
||||||
|
char *tmpBuf = NULL;
|
||||||
|
UINT32 LibatAdc = 0;
|
||||||
|
UINT32 batAdc = 0;
|
||||||
|
|
||||||
|
//char fileName[64] = {0};
|
||||||
|
int fd = 0;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
tmpBuf = malloc(512);
|
||||||
|
|
||||||
|
if (tmpBuf == NULL) {
|
||||||
|
printf("%s:%d tmpBuf malloc err\n", __FUNCTION__, __LINE__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//snprintf(fileName, sizeof(fileName), "%s", SF_BATTERY_TEST_FILE);
|
||||||
|
|
||||||
|
if(access(SF_BATTERY_TEST_FILE, F_OK) == 0)
|
||||||
|
{
|
||||||
|
printf("fileName:%s\n",SF_BATTERY_TEST_FILE);
|
||||||
|
fd = open(SF_BATTERY_TEST_FILE, O_APPEND | O_WRONLY);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fd = open(SF_BATTERY_TEST_FILE, O_APPEND | O_WRONLY | O_CREAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
LibatAdc = sf_battery_convert_to_adc(15, 100, LiPolymerVoltageValTest);
|
||||||
|
batAdc = sf_battery_convert_to_adc(15, 100, BatVoltageValTest);
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(tmpBuf, "%s BatAdc=%lu BatVal=%lu LiBatAdc=%lu LiBatVal=%lu\r\n", name, batAdc, BatVoltageValTest, LibatAdc, LiPolymerVoltageValTest);
|
||||||
|
printf("%s\r", tmpBuf);
|
||||||
|
|
||||||
|
if(fd)
|
||||||
|
{
|
||||||
|
fstat(fd, &st);
|
||||||
|
lseek(fd, 0, SEEK_END);
|
||||||
|
write(fd, tmpBuf, strlen(tmpBuf));
|
||||||
|
close(fd);
|
||||||
|
printf("Add Success st_size:%ld\n", st.st_size);
|
||||||
|
}
|
||||||
|
free(tmpBuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sf_i2c_driver.h>
|
#include <sf_i2c_driver.h>
|
||||||
#include "PrjCfg.h"
|
#include "PrjCfg.h"
|
||||||
|
#include "sf_battery.h"
|
||||||
|
|
||||||
static UINT8 McuSubVersion = 0;
|
static UINT8 McuSubVersion = 0;
|
||||||
static UINT16 McuVersion = 0;
|
static UINT16 McuVersion = 0;
|
||||||
|
@ -1375,7 +1376,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val)
|
||||||
printf("Firmware compile time:%s %s VER:%s\n", __DATE__, __TIME__,SF_BASE_VERSION);
|
printf("Firmware compile time:%s %s VER:%s\n", __DATE__, __TIME__,SF_BASE_VERSION);
|
||||||
printf("%s:%d DailyReportSwitch=%d %02d:%02d\n",__FUNCTION__,__LINE__, puiPara->DailyReportSwitch, puiPara->DailyReportTime2.Hour, puiPara->DailyReportTime2.Min);
|
printf("%s:%d DailyReportSwitch=%d %02d:%02d\n",__FUNCTION__,__LINE__, puiPara->DailyReportSwitch, puiPara->DailyReportTime2.Hour, puiPara->DailyReportTime2.Min);
|
||||||
printf("%s:%d isUsb = %d isCard = %d isCardFull = %d val = %d simCardInsert = %ld start mode = %d\n",__FUNCTION__,__LINE__, isUsb, isCard, isCardFull, val, simCardInsert, PowerOnMode);
|
printf("%s:%d isUsb = %d isCard = %d isCardFull = %d val = %d simCardInsert = %ld start mode = %d\n",__FUNCTION__,__LINE__, isUsb, isCard, isCardFull, val, simCardInsert, PowerOnMode);
|
||||||
|
sf_mcu_get_irshtter();
|
||||||
if (attrId > SF_MCU_PARAM_MAX)
|
if (attrId > SF_MCU_PARAM_MAX)
|
||||||
{
|
{
|
||||||
printf("attrId ERROR!\n");
|
printf("attrId ERROR!\n");
|
||||||
|
@ -2193,6 +2194,11 @@ void sf_add_file_name_to_send_list(char *sendfname)
|
||||||
close(fd);
|
close(fd);
|
||||||
printf("Add Success st_size:%ld\n", st.st_size);
|
printf("Add Success st_size:%ld\n", st.st_size);
|
||||||
}
|
}
|
||||||
|
#if SF_BATTERY_TEST == ENABLE
|
||||||
|
char str1[5] = { 0 };
|
||||||
|
memcpy(str1, sendfname + 4, 4);
|
||||||
|
sf_BatteryInfoSave(str1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined __FREERTOS
|
#if defined __FREERTOS
|
||||||
|
|
Loading…
Reference in New Issue
Block a user