mtk fule gauge算法过程


void BAT_thread(viod)
{
	static int battery_meter_initilized = KAL_FALSE;
	if(battery_meter_initilized == KAL_FALSE)
	{
		battery_meter_init();
		battery_meter_initilized = KAL_TURE;
	}
	
	mt_battery_GetBatteryData();
	
	mt_battery_update_status();
}

void battery_meter_init(void)		
{
	fgauge_initialization();	//ZCV加载与重构,得到fule gauge基本参数
	fgauge_algo_run_init();		//电池by_v1,ocv by_v2,rtc -> by_v -> DOD0
}

/*开机DOD0计算*/
void fgauge_algo_run_init(void)
{
	//关机查重构ZCV表,计算电池电压by_v
	
	dod_init();
}

void dod_init(void)
{
	采集OCV电压,查表得到by_v2
	
	读取rtc_soc
	
	处理by_v1、by_v2、rtc_soc得到by_v
	
	得到DOD0,作为库伦积分的参数
}

/*运行时库伦积分计算实际电量*/
void mt_battery_GetBatteryData(void)
{
	SOC = battery_meter_get_battery_percentage();
}

int battery_meter_get_battery_percentage(void)
{
	fgauge_algo_run();
	return gFG_capacity_by_c;
}

void fgauge_algo_run(void)
{
	//重构ZCV表
	
	//电池电压处理
	
	//硬件gFG_columb获取
	
	gFG_capacity_by_v = fgauge_read_capacity_by_v(gFG_voltage);
	gFG_capacity_by_c = fgauge_read_capacity(1);
}

/*数据处理与上报*/
void battery_update(void)
{
	//Percent_Check()
	
	//UI_Sync
	
	//rtc存储电量
	
	//唤醒工作队列上报
}


猜你喜欢

转载自blog.csdn.net/zhanghao864442969/article/details/54646260
MTK