前言
在设计锂离子电池充电器时,对于以前的根据系统状态进行判断,置标志位的方法,会显得程序臃肿,且架构混乱,变量交错复杂,移植困难。
所以结合实际项目,给出了一种基于状态机的编程方法。
有纰漏请指出,转载请说明。
学习交流请发邮件 1280253714@qq.com
方法论
对于电池包,一般会有几个端子与充电器进行通信识别,有BS(Battery Select)、NTC(负温度系数的电阻),正负极、通信口。
有些电池包内置NTC,通过通信将信息发给充电器,有些是直接接NTC给到充电器。
如果按照以往的编程方法,需要经常if else,而且各种标志位flag散乱于程序各处,代码臃肿,调试困难,bug不断,移植困难。
所以我提出了这种基于状态机的编程方法,对各个变量(电压、电流、温度、BS等),持续检测,同时各个状态可以随时转移。
最终任务级函数BatStateCheck判别参数状态,进行参数选择。
同时为了防止系统抖动,需要多次判断才能进行状态转移,demo如下。