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.cvoid 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的误差。

上一篇 下一篇

猜你喜欢

热点阅读