From e8c872744b4a0912de2fe25fda3a99ca7f4a9da7 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Mon, 8 Dec 2025 17:24:09 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E5=BC=80=E6=9C=BA=E6=A3=80?= =?utf8?q?=E6=B5=8B=E7=94=B5=E5=8E=8B=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6?= =?utf8?q?=E5=BC=80=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../brandy/brandy_standard/board_init.c | 72 +++++++++++++++++++ .../brandy/brandy_standard/chip_init.c | 32 --------- 2 files changed, 72 insertions(+), 32 deletions(-) diff --git a/code/sdk/application/brandy/brandy_standard/board_init.c b/code/sdk/application/brandy/brandy_standard/board_init.c index bcc551cce..cf46fe3bb 100644 --- a/code/sdk/application/brandy/brandy_standard/board_init.c +++ b/code/sdk/application/brandy/brandy_standard/board_init.c @@ -20,6 +20,12 @@ #include "button_porting.h" #include "non_os_reboot.h" #include "pm_control.h" + +#if defined(SUPPORT_BATTERY_SERVICE) +#include "battery_service.h" +#endif + + #define PM_SHIPMODE_DELAY_SLEEP_MS 100 static const lcd_bus_api g_display_api_qspi = { .bus_init = lcd_qspi_init, @@ -204,6 +210,69 @@ void check_pwrkey_3s(void) PRINT("bootup continue pressed %d pressed count %d"NEWLINE,g_pwrkey_press_state==PRESSED?1:0,pressed_count); } } + +static void check_power_on_voltage(void) +{ + #if defined(SUPPORT_BATTERY_SERVICE) && !defined(BOARD_FD272) + + extern uint8_t get_charge_stat(void); + extern bool batteryservice_get_voltage_by_channel(float *voltage, uint8_t channel); + #define ADC_CHANNEL_BAT_VOLTAGE 2 + + // if(!get_charge_stat()) + { + float batV = 0.0f; + disable_charge(); + uapi_tcxo_delay_ms(1000); + batteryservice_get_voltage_by_channel(&batV,ADC_CHANNEL_BAT_VOLTAGE); + enable_charge(); + PRINT("battery Voltage %.02f\n",batV); + + if(batV <= 3.3f) + { + if(get_charge_stat()) + { + for(int i = 0; i < 3;i++) + { + + + // while(batV <= 3.3) + // { + disable_charge(); + uapi_tcxo_delay_ms(1000); + batteryservice_get_voltage_by_channel(&batV,ADC_CHANNEL_BAT_VOLTAGE); + PRINT("battery Voltage %.02f\n",batV); + enable_charge(); + if(batV > 3.3f) + { + break; + } + uapi_tcxo_delay_ms(5000); + // } + } + if(batV <= 3.3f) + { + extern void mcu_reset(void); + mcu_reset(); + } + + } + else + { + PRINT("Warning: Battery voltage is too low. Device will power off"); + uapi_tcxo_delay_ms(10); + extern void mcu_poweroff(void); + mcu_poweroff(); + } + + } + + } + +#endif + +} + bool need_enter_safemode(void) { if (PRESSED == porting_button_get_state() && PRESSED == porting_function_button_get_state()) @@ -226,6 +295,9 @@ void board_init(uint32_t flash_id, uint32_t flash_unique_id) pio_func_init(); gpio_func_init(); check_pwrkey_3s(); + + check_power_on_voltage(); + if (need_enter_safemode() == true) { PRINT("entering SafeMode\r\n"); diff --git a/code/sdk/application/brandy/brandy_standard/chip_init.c b/code/sdk/application/brandy/brandy_standard/chip_init.c index 01ecf4e8f..c266dd885 100644 --- a/code/sdk/application/brandy/brandy_standard/chip_init.c +++ b/code/sdk/application/brandy/brandy_standard/chip_init.c @@ -141,38 +141,6 @@ void chip_init(void) uapi_timer_init(); uapi_timer_adapter(0, TIMER_0_IRQN, irq_prio(TIMER_0_IRQN)); -#if defined(SUPPORT_BATTERY_SERVICE) - - extern uint8_t get_charge_stat(void); - extern bool batteryservice_get_voltage_by_channel(float *voltage, uint8_t channel); - #define ADC_CHANNEL_BAT_VOLTAGE 2 - - if(!get_charge_stat()) - { - float batV = 0.0f; - batteryservice_get_voltage_by_channel(&batV,ADC_CHANNEL_BAT_VOLTAGE); - PRINT("battery Voltage %.02f\n",batV); - - if(batV <= 3.0f) - { - printf("Warning: Battery voltage is too low. Device will power off"); - uapi_tcxo_delay_ms(10); - extern void mcu_poweroff(void); - mcu_poweroff(); - } - // while( batV < MIN_BOOTUP_VOTAGE) - // { - // batteryservice_get_voltage_by_channel(&batV,ADC_CHANNEL_BAT_VOLTAGE); - // charge_stat = get_charge_stat(); - // PRINT("battery Voltage %.02f , charging %d\n",batV,charge_stat); - // uapi_tcxo_delay_ms(1000); - // enable_charge(); - // // disable_02c(); - - // } - } - -#endif chip_xip_init(); #if TCXO_CLK_DYN_ADJUST == YES -- 2.17.1