1.溫度表、電池優化

This commit is contained in:
payton 2023-08-17 15:08:54 +08:00
parent de142f968f
commit a605ffb76c
5 changed files with 88 additions and 48 deletions

View File

@ -59,7 +59,7 @@ UINT32 _BatVoltageVal = 45;
UINT32 _TemperAdc = 0;
UINT32 IsPowerDcIn = 1;
UINT32 BatVoltageVal = 45;
SF_BatteryLevel_e sf_LatestBattLevel = SF_BATT_LEVEL_0;
SF_BatteryLevel_e sf_LatestBattLevel = SF_BATT_LEVEL_TOTAL;
UINT8 needCheckFirst = TRUE;
UINT32 DcVoltageVal = 0;
UINT32 LiPolymerVoltageVal = 0; /*4.0P no use*/
@ -73,15 +73,16 @@ static INT16 cTemper = 0;
const UINT16 Adc2TempTable[]=
{
0,225,230,235,240,245,250,256,260,265,269,274,276,278,279,280,285,290,295,301,
306,308,317,327,348,359,369,380,390,412,422,438,449,454,464,470,491,507,517,523,
528,544,575,586,591,612,623,634,655,665,676,692,723,734,755,766,771,781,797,818,
850,882,887,898,919,961,982,1009,1019,1035,1040,1056,1067,1109,1114,1120,1136,1151,1183,1231,
1246,1258,1268,1294,1320,1336,1368,1386,1405,1420,1474,1484,1516,1537,1553,1569,1585,1611,1622,1632,
1643,1659,1685,1717,1738,1759,1791,1801,1812,1822,1844,1865,1902,1918,1923,1960,1979,1986,1997,2013,
2023,2034,2050,2081,2102,2139,2150,2192,2213,2219,2224,2229,2240,2261,2272,2277,2282,2287,2303,2314,
2340,2372,2388,2414,2425,2435,2462,2472,2483,2488,2508,2530,2552,2557,2578,2589,2599,2610,2615,2625,
2631,2652,2663,2689,2696,2704,2710,2724,2735,2746,2755,2766,2776,2790,2800,2815
0,180,185,190,195,200,205,210,215,220,225,230,240,245,250,255,265,275,290,295,
300,310,320,330,340,350,371,380,385,400,410,425,435,450,465,470,490,500,510,520,
530,545,560,586,590,605,610,625,650,680,690,710,725,735,750,765,780,795,825,840,
865,883,890,910,930,950,970,990,1010,1030,1053,1070,1090,1110,1130,1150,1170,1190,1210,1230,
1250,1270,1290,1310,1330,1350,1370,1390,1410,1432,1450,1470,1490,1510,1530,1550,1570,1590,1620,1640,
1660,1680,1700,1720,1745,1770,1790,1810,1830,1850,1870,1890,1910,1930,1950,1965,1980,2000,2020,2040,
2060,2080,2100,2115,2125,2140,2150,2170,2190,2210,2225,2240,2255,2275,2290,2310,2325,2340,2355,2370,
2385,2400,2410,2425,2440,2455,2470,2485,2500,2510,2525,2535,2545,2550,2560,2570,2580,2600,2610,2620,
2635,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780
};
/*************************************************
@ -301,7 +302,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS)
{
dcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc);
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);
@ -310,7 +311,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS)
{
liPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
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);
@ -319,7 +320,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
{
batVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
batVoltageVal = sf_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);
@ -617,7 +618,7 @@ signed int sf_battery_value_fast_get(void)
if(puiPara->BatteryLogSwitch)
{
printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]),
printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, dcValueList[readBatCnt]),
dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10);
}
@ -627,7 +628,7 @@ signed int sf_battery_value_fast_get(void)
if(puiPara->BatteryLogSwitch)
{
printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]),
printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
}
}
@ -637,7 +638,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(15, 100, batValueList[readBatCnt]),
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]),
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
}
}
@ -835,15 +836,15 @@ void sf_battery_level_polling(void)
if(puiPara->BatteryLogSwitch)
{
printf("\n[average]DC Adc:%d After Convert:(%d.%dV),Is Dc In=%s, TemperAdc:%d \n", sf_battery_convert_to_adc(10, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No", TemperAdc);
printf("\n[average]DC Adc:%d After Convert:(%d.%dV),Is Dc In=%s, TemperAdc:%d \n", sf_battery_convert_to_adc(24, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No", TemperAdc);
if(LiPolymerVoltageVal)
{
printf("[average]Li Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(15, 100, LiPolymerVoltageVal), LiPolymerVoltageVal / 10, LiPolymerVoltageVal % 10);
printf("[average]Li Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(24, 100, LiPolymerVoltageVal), LiPolymerVoltageVal / 10, LiPolymerVoltageVal % 10);
}
else
{
printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(15, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10);
printf("[average]Other Battery Adc:%d After Convert:(%d.%dV)\n\n", sf_battery_convert_to_adc(24, 100, BatVoltageVal),BatVoltageVal / 10, BatVoltageVal % 10);
}
}
}

View File

@ -168,8 +168,20 @@ static void insmod_system(void)
#if defined(_EMBMEM_EMMC_) || defined(_EMBMEM_COMBO_)
sdio_platform_init(); // sdio for emmc storage object
#endif
#if HUNTING_CAMERA_MCU == ENABLE
VOS_TICK t1, t2;
vos_perf_mark(&t1);
sf_battery_check_init();
vos_perf_mark(&t2);
DBG_DUMP("sf_mod_init: %lu\n", vos_perf_duration(t1, t2));
#endif
storage_partition_init(); // storage partition for partial load
#if HUNTING_CAMERA_MCU == ENABLE
//VOS_TICK t1, t2;
//vos_perf_mark(&t1);
//sf_battery_check_init();
//vos_perf_mark(&t2);
//DBG_DUMP("sf_mod_init: %lu\n", vos_perf_duration(t1, t2));
sf_mcu_flag_init();
UIMenuStoreInfo *puiPara = sf_ui_para_get();
if(puiPara->DebugMode)
@ -391,12 +403,14 @@ static void mcu_task(void)
sf_mcu_power_on_para_get(SF_MCU_POWERON);
sf_mcu_wdg_set(5);
sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1);
sf_battery_check_init();
//sf_led_init();
//sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT);
//sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL);
//sf_battery_check_init();
sf_led_init();
sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT);
sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL);
#if HW_S530
sf_view_osd_battery_draw(TRUE);
#endif
//vos_util_delay_ms(15);
//if(sf_is_night_mode(1) !=TRUE)

1
rtos/code/driver/na51089/include/sf_battery.h Normal file → Executable file
View File

@ -41,4 +41,5 @@ INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper);
void sf_BatteryInfoSave(char *name);
UINT32 sf_get_temper_adc(void);
UINT8 sf_solar_to_Lunar(UINT16 Year,UINT8 Month, UINT8 Day);
void sf_battery_print(void);
#endif

View File

@ -526,5 +526,6 @@ void sf_para_print(void);
UINT8 sf_convert_power_on_mode(void);
void sf_hw_info_save(char *name);
void sf_set_iso_exp_lv(UINT32 adj, UINT32 iso, UINT32 exp, UINT32 lv);
UINT32 sf_in_update(void);
#endif

View File

@ -74,16 +74,16 @@ ID FLG_ID_SF_BSTTERY = 0;
const UINT16 Adc2TempTable[]=
{
0,225,230,235,240,245,250,256,260,265,269,274,276,278,279,280,285,290,295,301,
306,308,317,327,348,359,369,380,390,412,422,438,449,454,464,470,491,507,517,523,
528,544,575,586,591,612,623,634,655,665,676,692,723,734,755,766,771,781,797,818,
850,882,887,898,919,961,982,1009,1019,1035,1040,1056,1067,1109,1114,1120,1136,1151,1183,1231,
1246,1258,1268,1294,1320,1336,1368,1386,1405,1420,1474,1484,1516,1537,1553,1569,1585,1611,1622,1632,
1643,1659,1685,1717,1738,1759,1791,1801,1812,1822,1844,1865,1902,1918,1923,1960,1979,1986,1997,2013,
2023,2034,2050,2081,2102,2139,2150,2192,2213,2219,2224,2229,2240,2261,2272,2277,2282,2287,2303,2314,
2340,2372,2388,2414,2425,2435,2462,2472,2483,2488,2508,2530,2552,2557,2578,2589,2599,2610,2615,2625,
2631,2652,2663,2689,2696,2704,2710,2724,2735,2746,2755,2766,2776,2790,2800,2815
};
0,180,185,190,195,200,205,210,215,220,225,230,240,245,250,255,265,275,290,295,
300,310,320,330,340,350,371,380,385,400,410,425,435,450,465,470,490,500,510,520,
530,545,560,586,590,605,610,625,650,680,690,710,725,735,750,765,780,795,825,840,
865,883,890,910,930,950,970,990,1010,1030,1053,1070,1090,1110,1130,1150,1170,1190,1210,1230,
1250,1270,1290,1310,1330,1350,1370,1390,1410,1432,1450,1470,1490,1510,1530,1550,1570,1590,1620,1640,
1660,1680,1700,1720,1745,1770,1790,1810,1830,1850,1870,1890,1910,1930,1950,1965,1980,2000,2020,2040,
2060,2080,2100,2115,2125,2140,2150,2170,2190,2210,2225,2240,2255,2275,2290,2310,2325,2340,2355,2370,
2385,2400,2410,2425,2440,2455,2470,2485,2500,2510,2525,2535,2545,2550,2560,2570,2580,2600,2610,2620,
2635,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780
};
#if SF_BATTERY_TEST == ENABLE
UINT32 LiPolymerVoltageValTest = 0;
@ -203,8 +203,8 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
gpio_set_value(P_GPIO_1, 1);//adc_muxb
}
vos_util_delay_ms(1);
//vos_util_delay_ms(1);
vos_util_delay_us(100);
*pval = adc_readVoltage(0);
//*pval = adc_readData(0);
@ -308,7 +308,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS)
{
dcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc);
dcVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
//dcVoltageVal += 4;
if(puiPara->BatteryLogSwitch)
printf("DC ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10);
@ -316,7 +316,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS)
{
liPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
liPolymerVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
//liPolymerVoltageVal += 4;
if(puiPara->BatteryLogSwitch)
printf("Li ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,liPolymerVoltageVal,liPolymerVoltageVal/10,liPolymerVoltageVal%10);
@ -324,7 +324,7 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS)
{
batVoltageVal = sf_battery_voltage_convert(15, 100, batAdc);
batVoltageVal = sf_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);
@ -609,7 +609,7 @@ signed int sf_battery_value_fast_get(void)
if(puiPara->BatteryLogSwitch)
{
printf("%s:%d [%d]DC ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]),
printf("%s:%d [%d]DC ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, dcValueList[readBatCnt]),
dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10);
}
@ -619,7 +619,7 @@ signed int sf_battery_value_fast_get(void)
if(puiPara->BatteryLogSwitch)
{
printf("%s:%d [%d]Li Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]),
printf("%s:%d [%d]Li Battery ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(24, 100, batValueList[readBatCnt]),
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
}
}
@ -629,7 +629,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(15, 100, batValueList[readBatCnt]),
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]),
batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10);
}
}
@ -1278,14 +1278,13 @@ BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode)
*************************************************/
BOOL sf_battery_check_init(void)
{
if(sf_is_usb_flag()){
printf("[%s:%d]usb power\n", __FUNCTION__, __LINE__);
return TRUE;
}
sf_adc_init();
if(sf_is_battery_low(1, 0) == TRUE)
{
if(sf_is_usb_flag()){
printf("[%s:%d]usb power\n", __FUNCTION__, __LINE__);
return TRUE;
}
printf("[%s:%d]power off because low battery\n", __FUNCTION__, __LINE__);
//Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start
#if SF_IQ_TEST != ENABLE
@ -1619,4 +1618,28 @@ UINT32 sf_get_temper_adc(void)
return TemperAdc;
}
/*************************************************
Function: sf_battery_print
Description: printf battery
Input: N/A
Output: N/A
Return: N/A
Others: N/A
*************************************************/
void sf_battery_print(void)
{
if(DcVoltageVal)
{
printf("\n[max]DC ADC Value=%lu,After Convert:(%lu.%luV),Is Dc In=%s\n", sf_battery_convert_to_adc(24, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No");
}
if(LiPolymerVoltageVal)
{
printf("[max]Li ADC Value=%lu,After Convert:(%lu.%luV)\n\n", sf_battery_convert_to_adc(24, 100, LiPolymerVoltageVal), LiPolymerVoltageVal / 10, LiPolymerVoltageVal % 10);
}
else
{
printf("[max]Other ADC Value=%lu V:(%lu.%luV)\n\n", sf_battery_convert_to_adc(24, 100, LiPolymerVoltageVal), BatVoltageVal / 10, BatVoltageVal % 10);
}
}
#endif