MT2503获取充电状态及充电电流
2019-01-02 本文已影响0人
tianxiaoMCU
获取充电状态
充电状态由BMT.pmictrl_state
标识,在mcu\hal\peripheral\src\dcl_pwic_old_interface.c中有两个函数都可以返回这个状态,分别是kal_bool PW_Is_Charging_On(void)
和kal_bool bmt_is_charging_on(void)
。但是在自己添加的模块中调用这两个函数,编译时会报错。
解决方法是在mcu\hal\peripheral\src\bmt_utility.c中自己定义一个kal_bool bmt_is_charging_on(void)
,并在mcu\hal\peripheral\inc\bmt_utility.h中声明为外部函数extern kal_bool bmt_is_charging_on(void);
。再在自己的模块中调用就可以了。
获取充电电流
获取充电电流也比较麻烦,系统没有提供可以直接使用的API,但是在mcu\hal\peripheral\src\auxmain.c的void aux_task_main( task_entry_struct * task_entry_ptr )
函数里有获取电流的方法。所以依样画葫芦就好,自己定义一个获取电流的函数,如下:
DCL_INT32 read_charge_current(void)
{
DCL_HANDLE chr_usb_det_handle;
DCL_INT32 charge_current;
kal_uint32 vbat_off = 0, visense_off = 0;
double adcbat_value = 0, adcisense_off = 0;
BMT_CTRL_GET_CHARGING_CURRENT em_get_charging_current;
#if 1
BMT_Current_Voltage(DCL_VBAT_ADC_CHANNEL, &vbat_off, &adcbat_value);
BMT_Current_Voltage(DCL_VISENSE_ADC_CHANNEL, &visense_off, &adcisense_off);
#endif
em_get_charging_current.VBat = vbat_off;
em_get_charging_current.VSense = visense_off;
chr_usb_det_handle = DclBMT_Open(DCL_BMT, FLAGS_NONE);
charge_current = DclBMT_Control(chr_usb_det_handle, BMT_CMD_GET_CHARGING_CURRENT, (DCL_CTRL_DATA_T *)&em_get_charging_current);
DclBMT_Close(chr_usb_det_handle);
return charge_current;
}
调用这个函数就可以获取到电流值了,需要注意的是得到的值与实际测出来的值有十几mA的误差。