你好,
我正在使用DA14681芯片使用SDK_BTLE_V1.0.8.1050.1的项目。
我们使用在未使用产品时断开电池的系统。电池连接在按钮上,或连接USB电缆时。
当我们首先通过连接USB电缆启动时,我们有一个问题,因为在激活电池开关之前,对话框开始。
因此,当它初始化时,SOC值设置为0.然后不会更新。电池正正确充电,但SOC值不会以正确的值更新。
我试图通过使用init函数中的读取来添加SoC值的更新:
INT16_T SOCF_RESET_SOC(void)
{
Int64_t active_count;
UINT64_T Active_Period;
INT32_T电流;
Int16_t now_voltage;
active_period = socf_get_duration(socf_pre_sample_time,
socf_start_count_time);
if(active_period <10){
hw_cpm_delay_usec((10 - Active_Period)* 1000);
socf_pre_sample_time = rtc_get_fromisr();
active_period = socf_get_duration(socf_pre_sample_time,
socf_start_count_time);
}
active_count = socf_get_count(true);
current = socf_get_avg_current(active_count,active_period);
now_voltage =(socf_vbat_via_adapter()+ socf_vbat_via_adapter()
+ socf_vbat_via_adapter())/ 3;
socf_soc = socf_get_soc_vbat_ibat(now_voltage,current,vol_dis_low,vol_dis_high);
socf_accum_charge_count = socf_soc_to_count(socf_soc);
}
我仍然存在问题,因为当我称之为这个功能时,电池已经充电。因此,随着充电器处于活动状态,估计的百分比不正确。
如果在系统初始化后电池连接,是否有其他方法可以更新SOC值?
是否有可能使用SDK停止并启动充电过程?(我们可以直接使用hw_charger_stop_charging和hw_charger_start_chnabring吗?)
joffrey.
嗨Joffrey Coffineau,
只是为了检查我是否正确达到这种情况,当您的USB中的插头进行电池开始充电时,电池尚未实际附加在设备上(电池实际附加前需要一定的时间在插入USB时,在电路板上),所以充电器正在启动充电过程,实际上没有电池,这是损坏SoC结果的原因?我的理解是否正确?
谢谢mt_dialog.
你好,
是的,这是这种情况。SOC结果从0%开始,而不是稍后连接的电池电量。
目前,目前正在评论的替代方法
USB_ATTACH()
打电话USB_CHARGER_TASK.
为了无法启动充电器。然后在我的应用程序中,我执行我提取以重置SOC值的函数。而且在我打电话之后
hw_charger_vbus_cb(true)
触发USB附件。这是临时路径,同时等待您建议的更详细的答案。
嗨Joffrey Coffineau,
您已经实施的解决方法是可以接受的,并且其一种方法向前移动,其他方法是在连接电池或系统初始化任务中将系统重置系统,直到电池连接。这取决于您的设计。到目前为止,我们还没有在我们的SDK中实现这样的解决方案,因为没有电池不是正常用例。
谢谢mt_dialog.