From a605ffb76caf838006bcd8434b38d31df93fc946 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 17 Aug 2023 15:08:54 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=BA=AB=E5=BA=A6=E8=A1=A8=E3=80=81=E9=9B=BB?= =?UTF-8?q?=E6=B1=A0=E5=84=AA=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sf_app/code/source/battery/sf_battery.c | 39 +++++----- .../source/cardv/SrcCode/System/rtos-main.c | 24 +++++-- rtos/code/driver/na51089/include/sf_battery.h | 1 + rtos/code/driver/na51089/include/sf_mcu.h | 1 + .../driver/na51089/source/mcu/sf_battery.c | 71 ++++++++++++------- 5 files changed, 88 insertions(+), 48 deletions(-) mode change 100644 => 100755 rtos/code/application/source/cardv/SrcCode/System/rtos-main.c mode change 100644 => 100755 rtos/code/driver/na51089/include/sf_battery.h 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 261993248..29b7be3c2 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 @@ -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); } } } diff --git a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c old mode 100644 new mode 100755 index aa277862e..20c26c462 --- a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c +++ b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c @@ -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) diff --git a/rtos/code/driver/na51089/include/sf_battery.h b/rtos/code/driver/na51089/include/sf_battery.h old mode 100644 new mode 100755 index 0987f04a1..42024d1f7 --- a/rtos/code/driver/na51089/include/sf_battery.h +++ b/rtos/code/driver/na51089/include/sf_battery.h @@ -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 diff --git a/rtos/code/driver/na51089/include/sf_mcu.h b/rtos/code/driver/na51089/include/sf_mcu.h index 1bc900c35..3e67556e2 100755 --- a/rtos/code/driver/na51089/include/sf_mcu.h +++ b/rtos/code/driver/na51089/include/sf_mcu.h @@ -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 diff --git a/rtos/code/driver/na51089/source/mcu/sf_battery.c b/rtos/code/driver/na51089/source/mcu/sf_battery.c index 3d6699928..9243c385c 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_battery.c +++ b/rtos/code/driver/na51089/source/mcu/sf_battery.c @@ -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,13 +324,13 @@ 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); } - + if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS) { _TemperAdc = batAdc; @@ -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