更新272电池曲线 2711/1 2711/head 2712/target/1
authorpenglei <1624952103@qq.com>
Sat, 8 Nov 2025 10:23:55 +0000 (18:23 +0800)
committerpenglei <1624952103@qq.com>
Sat, 8 Nov 2025 10:23:55 +0000 (18:23 +0800)
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/zhihui/drivers/charge/CMakeLists.txt
code/sdk/zhihui/drivers/charge/hp4570/hp4570.c
code/sdk/zhihui/drivers/charge/hp4570/hp4570.h
code/sdk/zhihui/drivers/rotary_encoder/hx3508/hx3508.c
code/sdk/zhihui/services/battery/service/battery_driver.cpp
code/sdk/zhihui/services/battery/service/battery_service.cpp

index 0994dad..e4ecda8 100644 (file)
@@ -567,9 +567,6 @@ static void thread_main(const void *unused)
     \r
 #ifdef ENABLE_CUSTOM_I2C\r
     // custom_i2c_init(I2C_BUS_3);\r
-#ifdef BOARD_FD272\r
-    custom_i2c_init(I2C_BUS_0);\r
-#endif\r
     custom_i2c_init(I2C_BUS_2);\r
 \r
 #ifdef SUPPORT_CYWEE_SERVICE\r
index 6039880..be09e97 100644 (file)
@@ -26,6 +26,7 @@ set(PRIVATE_DEFINES
 
 set(PUBLIC_DEFINES
 SUPPORT_AT_CHARGE
+ENABLE_HP4570
 )
 
 # use this when you want to add ccflags like -include xxx
index f7120d8..b6289a3 100644 (file)
@@ -70,6 +70,8 @@ bool hp45xxx_read_reg(uint8_t reg, uint8_t *value)
 // Initialize HP4570 chip\r
 bool hp45xxx_init(uint8_t chip_ver)\r
 {\r
+  custom_i2c_init(HP4570_I2C_BUS);\r
+\r
   switch (chip_ver){\r
     case HP4570K:\r
       hp45xxx_i2c_addr = HP4570K_I2C_ADDR;\r
@@ -87,14 +89,26 @@ bool hp45xxx_init(uint8_t chip_ver)
   // hp45xxx_reg_rst();\r
   // Add initialization code here, such as configuring registers\r
   hp45xxx_set_ceb_en(true);\r
-  if( hp45xxx_set_chrg_vbat_mV(4012.5) \r
-      // &&\r
-      // hp45xxx_set_chrg_ipre_mA(34) &&\r
-      // hp45xxx_set_chrg_ichg_mA(200) &&\r
-      // hp45xxx_set_chrg_iterm_mA(34) &&\r
-      // hp45xxx_set_iindpm_mA(1000) &&\r
-      // hp45xxx_set_vin_min_mV(3800)\r
-      )\r
+  int ret = hp45xxx_set_chrg_vbat_mV(4374.0);\r
+  printf("hp45xxx_set_chrg_vbat_mV ret:%d\n",ret);\r
+\r
+  ret = hp45xxx_set_chrg_ichg_mA(400);\r
+  printf("hp45xxx_set_chrg_ichg_mA(400) ret:%d\n",ret);\r
+\r
+  ret = hp45xxx_set_chrg_iterm_mA(34);\r
+  printf("hp45xxx_set_chrg_iterm_mA(34) ret:%d\n",ret);\r
+\r
+  ret = hp45xxx_set_iindpm_mA(1000);\r
+  printf("hp45xxx_set_iindpm_mA(1000) ret:%d\n",ret);\r
+\r
+  // if( hp45xxx_set_chrg_vbat_mV(4374.0) \r
+  //     &&\r
+  //     hp45xxx_set_chrg_ipre_mA(34) &&\r
+  //     hp45xxx_set_chrg_ichg_mA(400) &&\r
+  //     hp45xxx_set_chrg_iterm_mA(34) &&\r
+  //     hp45xxx_set_iindpm_mA(1000)\r
+  //     // hp45xxx_set_vin_min_mV(3800)\r
+  //     )\r
     return SUCCESS;\r
   return FAIL;\r
 }\r
index 320625d..1dee104 100644 (file)
@@ -408,99 +408,354 @@ static const uint16_t hp45xxx_t_hiccup_time[HP45XXX_NUM_T_HICCUP_VAL] = {
 \r
 #define HP4570J_REG_SYS_CTRL0_DEF      0xAC\r
 \r
-// Function Declarations\r
+// 函数声明\r
+// 芯片初始化:初始化指定型号的HP45XXX芯片(如HP4570A),完成I2C通信配置及寄存器默认值设置\r
+// 返回值:true表示初始化成功,false表示失败\r
 bool hp45xxx_init(uint8_t chip_ver);\r
+\r
+// 芯片识别:验证I2C总线上是否存在目标型号的HP45XXX芯片,确认通信正常\r
+// 返回值:true表示识别成功(芯片存在),false表示识别失败\r
 bool hp45xxx_identify(uint8_t chip_ver);\r
 \r
-void hp45xxx_set_pwrkey_en(bool en);// PWRKEY function enable control \r
-bool hp45xxx_set_trst_dgl_mS(uint32_t time);// Pull INT low to disconnect the battery then auto on\r
 \r
-void hp45xxx_reg_rst(void);// Register reset\r
-void hp45xxx_wdt_rst(void);// Watchdog timer reset\r
-void hp45xxx_vsys_rst(void);// VSYS reset\r
-void hp45xxx_set_rst_vin_entry_en(bool en);// VIN 4 pulse Reset Enable\r
-void hp45xxx_set_rst_pwrkey_en(bool en);// VSYS reset enable PWRKEY operation Enable\r
-void hp45xxx_set_rst_vsys_wvbus_en(bool en);// VSYS reset operation when VBUS is present\r
+// 设置PWRKEY功能使能:开启或关闭PWRKEY引脚的唤醒、复位等功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_pwrkey_en(bool en);\r
+\r
+// 设置复位消抖时间:配置拉低INT引脚断开电池后自动开机的消抖时间(防止误触发)\r
+// 参数time:目标消抖时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_trst_dgl_mS(uint32_t time);\r
+\r
+\r
+// 寄存器复位:将所有配置寄存器恢复为默认值(软件复位)\r
+void hp45xxx_reg_rst(void);\r
+\r
+// 看门狗复位:重置看门狗定时器(避免因超时触发系统复位)\r
+void hp45xxx_wdt_rst(void);\r
+\r
+// VSYS复位:触发系统电压(VSYS)复位,重启整个供电系统\r
+void hp45xxx_vsys_rst(void);\r
+\r
+// 使能VIN输入脉冲复位:开启/关闭通过VIN引脚的4次脉冲信号触发复位的功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_rst_vin_entry_en(bool en);\r
+\r
+// 使能PWRKEY复位功能:开启/关闭通过PWRKEY引脚操作触发VSYS复位的功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_rst_pwrkey_en(bool en);\r
+\r
+// 使能VBUS存在时VSYS复位:开启/关闭当VBUS(外部电源)接入时允许VSYS复位的功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_rst_vsys_wvbus_en(bool en);\r
+\r
 \r
+// 进入船运模式:使芯片进入低功耗休眠状态(仅特定条件可唤醒,如VBUS插入、PWRKEY触发)\r
 void hp45xxx_entry_shipmode(void);\r
-bool hp45xxx_set_batfet_dis(bool en);// BATFET force off\r
-void hp45xxx_set_vbus_wk_en(bool en);// VBUS plug in to exit ship mode\r
-void hp45xxx_set_pwrkey_wk_en(bool en);// PWRKEY be low to exit ship mode\r
-bool hp45xxx_set_vin_exit_ship_tset_mS(uint16_t time);// IN Port Power Good Time Setting for Exit Shipmode\r
-bool hp45xxx_set_key_wk_time_mS(uint16_t time);// KEY wake up time set\r
-void hp45xxx_set_ship_dgl_en(bool en);// Enter ship mode deglitch enable control\r
-bool hp45xxx_set_ship_dgl_mS(uint16_t time);// Enter ship mode deglitch time \r
+\r
+// 强制关闭BATFET:断开电池与系统的连接(用于紧急断电或保护场景)\r
+// 参数en:true=强制关闭,false=正常工作(允许电池供电)\r
+// 返回值:true表示配置成功,false表示失败\r
+bool hp45xxx_set_batfet_dis(bool en);\r
+\r
+// 使能VBUS唤醒功能:开启/关闭通过插入VBUS(外部电源)唤醒船运模式的功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_vbus_wk_en(bool en);\r
+\r
+// 使能PWRKEY唤醒功能:开启/关闭通过拉低PWRKEY引脚唤醒船运模式的功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_pwrkey_wk_en(bool en);\r
+\r
+// 设置VIN唤醒船运模式的延时:配置VIN端口检测到有效电源后,延迟多久退出船运模式\r
+// 参数time:目标延时时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_vin_exit_ship_tset_mS(uint16_t time);\r
+\r
+// 设置PWRKEY唤醒时间:配置PWRKEY引脚需要保持低电平多久才能唤醒系统\r
+// 参数time:目标时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_key_wk_time_mS(uint16_t time);\r
+\r
+// 使能船运模式消抖:开启/关闭进入船运模式时的信号消抖功能(防止误触发)\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_ship_dgl_en(bool en);\r
+\r
+// 设置船运模式消抖时间:配置进入船运模式前的信号稳定时间(过滤毛刺)\r
+// 参数time:目标消抖时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_ship_dgl_mS(uint16_t time);\r
+\r
+\r
+// 使能VBUS高阻模式:开启/关闭VBUS电源路径的高阻状态(断开VBUS与系统的连接)\r
+// 参数en:true=使能高阻,false=正常导通\r
+void hp45xxx_set_hiz_en(bool en);\r
+\r
+// 使能充电功能:开启/关闭芯片的充电功能(控制是否对电池充电)\r
+// 参数en:true=允许充电,false=禁止充电\r
+void hp45xxx_set_ceb_en(bool en);\r
 \r
 \r
-void hp45xxx_set_hiz_en(bool en);// VBUS power path Hi-Z mode enable\r
-void hp45xxx_set_ceb_en(bool en);// Enable or disable charging function\r
+// 设置VSYS输出电压:配置系统电压(VSYS)的稳压值\r
+// 参数voltage:目标电压(单位:毫伏,如4200表示4.2V)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_vsys_reg_mV(float voltage);\r
 \r
-bool hp45xxx_set_vsys_reg_mV(float voltage);// VSYS regulation\r
-bool hp45xxx_set_trst_dur_mS(uint16_t time);// VSYS off time before auto on\r
+// 设置复位持续时间:配置VSYS关闭后,经过多久自动开机\r
+// 参数time:目标持续时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_trst_dur_mS(uint16_t time);\r
+\r
+// 使能输入电压DPM:开启/关闭输入电压动态功率管理(防止输入电压过低)\r
+// 参数en:true=使能,false=禁用\r
 void hp45xxx_set_vindpm_en(bool en);\r
+\r
+// 使能输入电流DPM:开启/关闭输入电流动态功率管理(防止输入电流过大)\r
+// 参数en:true=使能,false=禁用\r
 void hp45xxx_set_iindpm_en(bool en);\r
+\r
+// 设置输入电压DPM阈值:配置输入电压的保护阈值(低于此值触发功率限制)\r
+// 参数voltage:目标阈值(单位:毫伏)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_vindpm_mV(uint16_t voltage);\r
+\r
+// 设置输入电流DPM阈值:配置输入电流的保护阈值(超过此值触发功率限制)\r
+// 参数current:目标阈值(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_iindpm_mA(uint16_t current);\r
 \r
-bool hp45xxx_set_chrg_vpre_mV(uint8_t voltage);// Battery pre-charge voltage set\r
+\r
+// 设置预充电电压:配置电池预充电阶段的目标电压(适用于电池电压较低时)\r
+// 参数voltage:目标电压(单位:毫伏)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_chrg_vpre_mV(uint8_t voltage);\r
+\r
+// 设置电池满充电压:配置电池快充阶段的目标电压(电池充满时的电压)\r
+// 参数voltage:目标电压(单位:毫伏,如4350表示4.35V)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_chrg_vbat_mV(float voltage);\r
-bool hp45xxx_set_chrg_vre_mV(uint8_t voltage);// Battery re-charge voltage set\r
+\r
+// 设置复充电压:配置电池放电至该电压后,重新开始充电的阈值\r
+// 参数voltage:目标电压(单位:毫伏)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_chrg_vre_mV(uint8_t voltage);\r
+\r
+// 设置深度放电充电电流:配置电池深度放电(电压极低)时的充电电流\r
+// 参数current:目标电流(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_chrg_idead_mA(uint16_t current);\r
-bool hp45xxx_set_chrg_ipre_mA(uint16_t current);// Battery pre-charge current set\r
+\r
+// 设置预充电电流:配置电池预充电阶段的充电电流(适用于电池电压较低时)\r
+// 参数current:目标电流(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_chrg_ipre_mA(uint16_t current);\r
+\r
+// 设置快充电流:配置电池快充阶段的充电电流(主要充电阶段的电流)\r
+// 参数current:目标电流(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_chrg_ichg_mA(uint16_t current);\r
+\r
+// HP4570I型号专用快充电流设置:针对HP4570I型号的快充电流配置(该型号电流范围不同)\r
+// 参数current:目标电流(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp4570i_set_chrg_ichg_mA(uint16_t current);\r
+\r
+// 设置充电终止电流:当充电电流低于该值时,判定为电池充满(结束充电)\r
+// 参数current:目标电流(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_chrg_iterm_mA(uint8_t current);\r
-void hp45xxx_set_chrg_term_en(bool en);// Termination is allowed or not\r
-void hp45xxx_set_chrg_term_tmr(bool en);// Termination timer control\r
-void hp45xxx_set_chrg_timer_en(bool en);// Safety timer set during charging\r
-bool hp45xxx_set_chrg_timer_hour(uint8_t time);// Fast charging mode timer set \r
-void hp45xxx_set_chrg_tmr2x_en(bool en);// Safety timer double during DPM/Thermal\r
 \r
+// 使能充电终止功能:允许/禁止根据终止电流判断充电完成的功能\r
+// 参数en:true=允许终止,false=禁止终止(持续充电)\r
+void hp45xxx_set_chrg_term_en(bool en);\r
+\r
+// 使能终止定时器:开启/关闭充电终止阶段的定时器(确保终止判断稳定)\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_chrg_term_tmr(bool en);\r
+\r
+// 使能充电安全定时器:开启/关闭充电过程中的安全定时器(防止过充)\r
+// 参数en:true=使能(超时后停止充电),false=禁用\r
+void hp45xxx_set_chrg_timer_en(bool en);\r
+\r
+// 设置快充定时器时长:配置快充阶段的最大允许时间(超时后进入保护)\r
+// 参数time:目标时间(单位:小时,如3表示3小时)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_chrg_timer_hour(uint8_t time);\r
+\r
+// 使能安全定时器加倍:开启/关闭在DPM或 thermal模式下,安全定时器时长加倍的功能\r
+// 参数en:true=使能(延长保护时间),false=禁用\r
+void hp45xxx_set_chrg_tmr2x_en(bool en);\r
+\r
+\r
+// 设置电池FET过流保护阈值:配置BATFET(电池通路开关)的过流保护电流\r
+// 参数current:目标阈值(单位:毫安)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_ibatfet_ocp_mA(uint16_t current);\r
-bool hp45xxx_set_vbat_uvlo_mV(uint16_t voltage);// Battery UVLO falling threshold,hys is about =150mV\r
-bool hp45xxx_set_t_hiccup_mS(uint16_t time);// Hiccup timer set\r
 \r
-void hp45xxx_set_wdt_timer_en(bool en);// If watchdog timer already enable, function will do noting, otherwise will set as default \r
+// 设置电池欠压锁定阈值:配置电池电压低于该值时触发欠压保护(停止放电)\r
+// 注:回差约为150mV(电压回升至阈值+150mV时解除保护)\r
+// 参数voltage:目标阈值(单位:毫伏)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_vbat_uvlo_mV(uint16_t voltage);\r
+\r
+// 设置打嗝模式定时器:配置过流保护时的打嗝间隔时间(保护期间的重试间隔)\r
+// 参数time:目标时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_t_hiccup_mS(uint16_t time);\r
+\r
+\r
+// 使能看门狗定时器:开启/关闭看门狗功能(若已使能则不操作,否则按默认值配置)\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_wdt_timer_en(bool en);\r
+\r
+// 设置看门狗超时时间:配置看门狗定时器的超时阈值(超过此时长未喂狗则触发复位)\r
+// 参数time:目标时间(单位:毫秒)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
 bool hp45xxx_set_wdt_timer_mS(uint32_t time);\r
-void hp45xxx_set_wdt_chg_en(bool en);// Watchdog timer function enable control during charging\r
-void hp45xxx_set_wdt_dsg_en(bool en);// Watchdog timer function enable control during discharging\r
-void hp45xxx_set_wdt_vsys_rst_en(bool en);// Watch dog fault VSYS reset enable control \r
-\r
-void hp45xxx_set_ntc_en(bool en);// NTC enable during charging\r
-void hp45xxx_set_pcb_otp_en(bool en);// PCB_OTP enable\r
-bool hp45xxx_set_thermal_reg_degree(uint8_t degree);// Die temp control by Thermal loop\r
-\r
-void hp45xxx_set_int_pg_en(bool en);// Power good int enable control\r
-void hp45xxx_set_int_chrg_done_en(bool en);// Charge complete int enable control\r
-void hp45xxx_set_int_chrg_stat_en(bool en);// Charging status dynamic change int enable control\r
-void hp45xxx_set_int_ntc_transition_en(bool en);// Battery temp region change int enable control\r
-void hp45xxx_set_int_batovp_en(bool en);// Battery OVP int enable control\r
-void hp45xxx_set_int_wdt_en(bool en);// Watch dog time expire int enable control\r
-void hp45xxx_set_int_chg_safety_expired_en(bool en);// Charger enter safety int enable control\r
 \r
+// 使能充电阶段看门狗:开启/关闭充电过程中的看门狗功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_wdt_chg_en(bool en);\r
+\r
+// 使能放电阶段看门狗:开启/关闭放电过程中的看门狗功能\r
+// 参数en:true=使能,false=禁用\r
+void hp45xxx_set_wdt_dsg_en(bool en);\r
+\r
+// 使能看门狗VSYS复位:开启/关闭看门狗超时后触发VSYS复位的功能\r
+// 参数en:true=使能(超时复位),false=禁用(仅触发中断)\r
+void hp45xxx_set_wdt_vsys_rst_en(bool en);\r
+\r
+\r
+// 使能NTC温度检测:开启/关闭充电过程中对电池温度(通过NTC)的监测\r
+// 参数en:true=使能(温度异常时停止充电),false=禁用\r
+void hp45xxx_set_ntc_en(bool en);\r
+\r
+// 使能PCB过温保护:开启/关闭PCB板的过温保护功能\r
+// 参数en:true=使能(PCB过热时触发保护),false=禁用\r
+void hp45xxx_set_pcb_otp_en(bool en);\r
+\r
+// 设置芯片热调节温度:配置芯片内部温度达到该值时触发热调节(降低充电电流)\r
+// 参数degree:目标温度(单位:摄氏度,如80表示80℃)\r
+// 返回值:true表示配置成功,false表示参数超出范围\r
+bool hp45xxx_set_thermal_reg_degree(uint8_t degree);\r
+\r
+\r
+// 使能电源良好中断:开启/关闭VBUS电源良好状态变化的中断\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_pg_en(bool en);\r
+\r
+// 使能充电完成中断:开启/关闭电池充电完成的中断(充电状态变为“完成”时触发)\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_chrg_done_en(bool en);\r
+\r
+// 使能充电状态变化中断:开启/关闭充电状态动态切换的中断(如预充→快充)\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_chrg_stat_en(bool en);\r
+\r
+// 使能NTC温度区间变化中断:开启/关闭电池温度区间切换的中断(如正常→高温)\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_ntc_transition_en(bool en);\r
+\r
+// 使能电池过压中断:开启/关闭电池过压保护的中断(电池电压过高时触发)\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_batovp_en(bool en);\r
+\r
+// 使能看门狗超时中断:开启/关闭看门狗定时器超时的中断\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_wdt_en(bool en);\r
+\r
+// 使能充电安全超时中断:开启/关闭充电安全定时器超时(进入安全模式)的中断\r
+// 参数en:true=使能中断,false=禁用\r
+void hp45xxx_set_int_chg_safety_expired_en(bool en);\r
+\r
+\r
+// 读取充电状态:判断当前是否处于“未充电”状态\r
+// 返回值:true=未充电,false=正在充电或已完成\r
 bool hp45xxx_read_chrg_stat_not_chrg(void);\r
+\r
+// 读取充电状态:判断当前是否处于“深度放电充电”状态(电池电压极低时的小电流充电)\r
+// 返回值:true=深度放电充电,false=其他状态\r
 bool hp45xxx_read_chrg_stat_dead_chrg(void);\r
+\r
+// 读取充电状态:判断当前是否处于“预充电”状态(电池电压较低时的过渡充电阶段)\r
+// 返回值:true=预充电,false=其他状态\r
 bool hp45xxx_read_chrg_stat_pre_chrg(void);\r
+\r
+// 读取充电状态:判断当前是否处于“快速充电”状态(主要充电阶段)\r
+// 返回值:true=快充中,false=其他状态\r
 bool hp45xxx_read_chrg_stat_fast_chrg(void);\r
+\r
+// 读取充电状态:判断当前是否处于“充电完成”状态\r
+// 返回值:true=充电完成,false=未完成\r
 bool hp45xxx_read_chrg_stat_chrg_done(void);\r
 \r
-bool hp45xxx_read_status_wdt_fault(void);// Watchdog timer expired 1: Expired; 0: Not Expired\r
-bool hp45xxx_read_status_vindpm(void);// 1: In DPM; 0: Not DPM\r
-bool hp45xxx_read_status_vbus_pg(void);// 1: Power Good; 0: Not Good\r
-bool hp45xxx_read_status_thermal(void);// 1: In thermal; 0: Not thermal\r
-bool hp45xxx_read_status_vin_fault(void);// 1: Input fault ovp or bad source plug out; 0: normal \r
-bool hp45xxx_read_status_tshut(void);// 1: Thermal shutdown; 0: Normal\r
-bool hp45xxx_read_status_vbat_ovp(void);// 1: BAT_OVP; 0: Not BAT_OVP\r
-bool hp45xxx_read_status_safety_mode(void);// Charger safety timer expired  1: Expired; 0: Not Expired\r
-bool hp45xxx_read_status_ntc_hot(void);// 1: Hot; 0: Not hot\r
-bool hp45xxx_read_status_ntc_cold(void);// 1: Cold; 0: Not cold\r
-bool hp45xxx_read_status_iindpm(void);// 1: In DPM; 0: Not DPM\r
-bool hp45xxx_read_status_vin_entry_rst(void);// VIN_ENTRY_RST once happenned\r
-bool hp45xxx_read_status_pwrkey_rst(void);// PWRKEY reset once happened\r
-bool hp45xxx_read_status_hiccup_latch(void);// Hiccup once happened\r
-bool hp45xxx_read_status_pwrkey_wk(void);// PWRKEY 2S low time wake up from ship mode\r
-bool hp45xxx_read_status_vbus_wk(void);// VBUS plug in wake up from ship mode\r
-bool hp45xxx_read_status_watchdog_int(void);// Watch dog time expire IRQ\r
+\r
+// 读取看门狗故障状态:判断看门狗定时器是否已超时\r
+// 返回值:true=已超时(故障),false=未超时(正常)\r
+bool hp45xxx_read_status_wdt_fault(void);\r
+\r
+// 读取输入电压DPM状态:判断是否因输入电压过低进入DPM模式\r
+// 返回值:true=处于DPM模式,false=正常模式\r
+bool hp45xxx_read_status_vindpm(void);\r
+\r
+// 读取VBUS电源状态:判断VBUS(外部电源)是否处于“电源良好”状态\r
+// 返回值:true=电源良好(电压/电流正常),false=电源异常\r
+bool hp45xxx_read_status_vbus_pg(void);\r
+\r
+// 读取芯片热调节状态:判断芯片是否因过热进入热调节模式\r
+// 返回值:true=处于热调节(降低功率),false=正常散热\r
+bool hp45xxx_read_status_thermal(void);\r
+\r
+// 读取输入故障状态:判断VIN(输入电压)是否存在故障(过压或电源断开)\r
+// 返回值:true=存在故障,false=正常\r
+bool hp45xxx_read_status_vin_fault(void);\r
+\r
+// 读取芯片热关断状态:判断芯片是否因过热进入热关断模式\r
+// 返回值:true=已热关断(停止工作),false=正常工作\r
+bool hp45xxx_read_status_tshut(void);\r
+\r
+// 读取电池过压状态:判断电池是否处于过压保护状态\r
+// 返回值:true=电池过压,false=电压正常\r
+bool hp45xxx_read_status_vbat_ovp(void);\r
+\r
+// 读取充电安全模式状态:判断充电安全定时器是否已超时(进入安全模式)\r
+// 返回值:true=已超时(安全模式),false=未超时(正常充电)\r
+bool hp45xxx_read_status_safety_mode(void);\r
+\r
+// 读取NTC高温状态:判断电池是否处于NTC检测的“高温”区间\r
+// 返回值:true=电池过热,false=温度正常\r
+bool hp45xxx_read_status_ntc_hot(void);\r
+\r
+// 读取NTC低温状态:判断电池是否处于NTC检测的“低温”区间\r
+// 返回值:true=电池过冷,false=温度正常\r
+bool hp45xxx_read_status_ntc_cold(void);\r
+\r
+// 读取输入电流DPM状态:判断是否因输入电流过大进入DPM模式\r
+// 返回值:true=处于DPM模式,false=正常模式\r
+bool hp45xxx_read_status_iindpm(void);\r
+\r
+// 读取VIN输入复位状态:判断是否发生过VIN脉冲触发的复位\r
+// 返回值:true=发生过,false=未发生\r
+bool hp45xxx_read_status_vin_entry_rst(void);\r
+\r
+// 读取PWRKEY复位状态:判断是否发生过PWRKEY触发的复位\r
+// 返回值:true=发生过,false=未发生\r
+bool hp45xxx_read_status_pwrkey_rst(void);\r
+\r
+// 读取打嗝保护状态:判断是否发生过打嗝模式(过流保护重试)\r
+// 返回值:true=发生过,false=未发生\r
+bool hp45xxx_read_status_hiccup_latch(void);\r
+\r
+// 读取PWRKEY唤醒状态:判断是否通过PWRKEY引脚拉低2秒唤醒系统(从船运模式)\r
+// 返回值:true=已唤醒,false=未唤醒\r
+bool hp45xxx_read_status_pwrkey_wk(void);\r
+\r
+// 读取VBUS唤醒状态:判断是否通过插入VBUS唤醒系统(从船运模式)\r
+// 返回值:true=已唤醒,false=未唤醒\r
+bool hp45xxx_read_status_vbus_wk(void);\r
+\r
+// 读取看门狗中断状态:判断是否发生过看门狗超时中断\r
+// 返回值:true=发生过中断,false=未发生\r
+bool hp45xxx_read_status_watchdog_int(void);\r
 \r
 \r
 uint8_t hp4507_get_id(void);\r
index fd42218..490deaf 100644 (file)
@@ -69,6 +69,8 @@ static osTimerId_t g_hx3508_timer = NULL;
 
 extern encoder_callback g_encoder_callback;
 
+static uint8_t ost_init = 0;
+
 /*--------以下为定时函数相关定义 建立/启动/停止定时器//定时中断处理-----------*/
 
 
@@ -604,6 +606,10 @@ void crown_com_resync(void)
 */
 void ots_init(void)
 {
+    if(ost_init == 1)
+        return;
+
+    ost_init = 1;
     //此时要保证芯片已经正常上电
     // uapi_gpio_set_dir(PIN_TYHX_SDIO,GPIO_DIRECTION_OUTPUT);
 
index c11b77a..829b4a7 100644 (file)
@@ -255,6 +255,28 @@ float battery_percent_map[][2]={
     {3.380,10},
     {3.330,5},
     {3.3,0}
+#elif defined BOARD_FD272
+    {4.374, 100},
+    {4.186, 95}, 
+    {4.167, 90}, 
+    {4.148, 85}, 
+    {4.121, 80}, 
+    {4.092, 75}, 
+    {4.064, 70}, 
+    {4.023, 65}, 
+    {3.981, 60}, 
+    {3.939, 55}, 
+    {3.896, 50}, 
+    {3.846, 45}, 
+    {3.785, 40}, 
+    {3.715, 35}, 
+    {3.652, 30}, 
+    {3.583, 25}, 
+    {3.505, 20}, 
+    {3.441, 15}, 
+    {3.382, 10}, 
+    {3.335, 5},  
+    {3.3, 0}   
 #else
     {4.3,100},
     {4.264,95},
@@ -282,6 +304,8 @@ float battery_percent_map[][2]={
 
 #ifdef BOARD_LEINIAO
 #define batteryservice_VOLTAGE_MAX (4.2f)
+#elif defined BOARD_FD272
+#define batteryservice_VOLTAGE_MAX (4.374f)
 #else
 #define batteryservice_VOLTAGE_MAX (4.3f)
 #endif
index 331fccd..64348f2 100644 (file)
@@ -41,6 +41,10 @@ extern "C" {
 
 #include "debug_print.h"
 
+#ifdef ENABLE_HP4570
+#include "hp4570.h"
+#endif
+
 // #include "cat1_utils.h"
 
 // #include "cywee_service.h"
@@ -716,6 +720,11 @@ errcode_t uapi_battery_init(void)
     /**下面初始化电池基本数据,充电线基本状态*/
     uapi_register_charger_event_callback(battery_charger_plug_event_callback);
    
+#ifdef ENABLE_HP4570
+    
+    hp45xxx_init(HP4570C9);
+#endif
+
     //开始timer
     battery_timer_start_check_released(CHARGE_CHECK_TIMER_CYCLE_MS);
     // PRINT("uapi_battery_init end!\r\n");