Skip to content

Latest commit

 

History

History
203 lines (182 loc) · 7.95 KB

README_zh-cn.md

File metadata and controls

203 lines (182 loc) · 7.95 KB

chargerd 概述

[ English | 简体中文 ]

充电管理主要用来对电池充电过程的监控和管理,保障电池安全快速的充电。目前很多 IoT 产品都带有电池,并且充电电路和芯片具有一定的复用性,所以实现一个通用充电管理框架,将不同充电电路和芯片特性进行融合,增强软件复用性和可维护。

chargerd 配置应用

NuttXchargerd 应用需要做如下配置。

chargerd 配置

使能 chargerd 服务,需要打开如下配置:

# 使能chargerd服务
CONFIG_CHARGERD=y

# 如果从电量计获取的电池数据需要b16转换,则打开该配置
CONFIG_CHARGERD_HWINTF_CONVERSION=y

# chargerd配置文件默认路径, 如有改变,填写正确值
CONFIG_CHARGERD_CONFIGURATION_FILE_PATH=/etc/chargerd_parameters.json

chargerd 启动

在启动脚本 rcS 中添加 chargerd 服务的启动流程,如下:

#ifdef CONFIG_CHARGERD
chargerd &
#endif

chargerd 打包

在romfs打包脚本中加入chargerd的配置文件

ifeq ($(CONFIG_CHARGERD),y)
RCRAWS += etc/charger_parameters.json
endif

chargerd 配置文件

chargerd 配置文件为 json 格式,chargerd 启动时会读取 chargerd 配置文件,并根据配置文件的配置,初始化chargerd 服务。

chargerd 配置文件参数

参数名 参数格式 备注说明
charger_supply 参数值 调节charger芯片供电电压设备节点
charger_adapter 参数值 检测充电器拔插事件以及充电类型的设备节点
charger 参数值 充电芯片的设备节点,多个芯片使用';'分割
fuel_gauge 参数值 电池电量计的设备节点
algo 参数值 充电芯片采用的充电算法,多个芯片使用';'分割
polling_interval_ms 参数值 自检定时器轮询间隔
fullbatt_capacity 参数值 满充电量条件(%)
fullbatt_current 参数值 满充电流条件(mA)
fullbatt_duration_ms 参数值 满充断充后恢复时间(ms)
fault_duration_ms 参数值 异常保护后恢复时间(ms)
temp_min 参数值 低温保护阈值(0.1 Celsius)
temp_min_r 参数值 低温保护恢复阈值(0.1 Celsius)
temp_max 参数值 高温保护阈值(0.1 Celsius)
temp_max_r 参数值 高温保护恢复阈值(0.1 Celsius)
temp_skin 参数值 thermal板壳温度超温阈值(0.1 Celsius)
temp_skin_r 参数值 thermal板壳温度超温恢复阈值(0.1 Celsius)
enable_delay_ms 参数值 adapter使能后正常访问delay时间(ms)
temp_rise_hys 参数值 温度上升迟滞值(0.1 Celsius)
temp_fall_hys 参数值 温度下降迟滞值(0.1 Celsius)
vol_rise_hys 参数值 电压上升迟滞值(mV)
vol_fall_hys 参数值 电压下降迟滞值(mV)
battery_default_param 电池默认参数值,参见模版 无法通过ioctl获取电池信息时,将此参数配置的信息作为电池
charger_fault_plot_table 充电错误采用值,参见模版 充电出现错误时采用,充电参数依次表示为:{温度范围开始(0.1 Celsius),温度范围结(0.1 Celsius)束,电压范围开始(mv),电压范围结束(mV),充电芯片索引(0开始,-1表示不充电),充电电流(mA), 充电电压(mV)}
充电曲线表 充电曲线表,参见模版 1. name:表示充电曲线表的名字;2. mask:表示支持的以1为基准的左移运算得到的值,例如1 << 3,则mask为8,表示充电protocol,对应内核数据结构battery_protocol_e; 3. element_num:表示该充电曲线表的元素数量。4. your_plot_name_xxx:自定义命名的充电曲线表的名字,需要注意的是,需要与上述name之后填充的name参数一致。5. 曲线表元素:都放在中括号之后,例如[-500,0,0,65535,-1,0,0],当有多个元素时,类似的写多行。
temperature_termination_voltage_table 根据温度动态调整电压表 截止电压值根据温度动态调整的表:1. temp_vterm_enable:是否使能该功能;2. temp_rise_hys:温度上升迟滞值;3. temp_fall_hys:温度下降迟滞值;4. relation_table:温度范围与截止电压对应关系,比如 [-100,0,3000],表示当温度在-10℃ ~ 0℃范围内,截止电压设置为3000mV。

chargerd 配置文件示例

charged配置案例:

{
    "charger_supply" : "/dev/charge/wireless_rx",
    "charger_adapter" : "/dev/charge/wireless_rx",
    "charger" : "/dev/charge/batt_charger;/dev/charge/charger_pump",
    "fuel_gauge" : "/dev/charge/batt_gauge",
    "algo" : "buck;pump",

    "polling_interval_ms" : 1000,
    "fullbatt_capacity" : 100,
    "fullbatt_current" : 0,
    "fullbatt_duration_ms" : 180000,
    "fault_duration_ms" : 60000,
    "temp_min" : 10,
    "temp_min_r" : 20,
    "temp_max" : 450,
    "temp_max_r" : 440,
    "temp_skin" : 400,
    "temp_skin_r" : 390,
    "temp_rise_hys" : 10,
    "temp_fall_hys" : 10,
    "vol_rise_hys" : 10,
    "vol_fall_hys" : 10,
    "enable_delay_ms" : 3000,
    "battery_default_param" : [
        {
            "capacity" : 0,
            "current" : 0,
            "temp" : 110,
            "vol" : 2100
        }
    ],

    "charger_fault_plot_table" : [
        {
            "temp_range_min" : 160,
            "temp_range_max" : 449,
            "vol_range_min" : 2100,
            "vol_range_max" : 65535,
            "charger_index" : 0,
            "work_current" : 145,
            "supply_vol" : 5500
        }
    ],

    "charger_plot_table_list" : [
        {
            "name" : "g_charger_plot_table",
            "mask" : 8,
            "element_num" : 15,
            "g_charger_plot_table" : [
                [-500,0,0,65535,-1,0,0],
                [1,119,2100,3000,0,20,5500],
                [1,119,3000,4435,0,145,5500],
                [1,119,4435,65535,0,145,5500],
                [120,159,2100,3000,0,20,5500],
                [120,159,3000,3600,0,145,5500],
                [120,159,3600,4140,0,486,5500],
                [120,159,4140,4435,0,340,5500],
                [120,159,4435,65535,0,340,5500],
                [160,449,2100,3000,0,20,5500],
                [160,449,3000,3650,0,145,5500],
                [160,449,3650,4140,1,920,0],
                [160,449,4140,4435,0,729,5500],
                [160,449,4435,65535,0,729,5500],
                [450,65535,0,65535,-1,0,0]
            ]
        },
        {
            "name" : "g_charger_plot_table_noStand_type3",
            "mask" : 4,
            "element_num" : 9,
            "g_charger_plot_table_noStand_type3" : [
                [-500,0,0,65535,-1,0,0],
                [1,159,2100,3000,0,20,5500],
                [1,159,3000,4435,0,145,5500],
                [1,159,4435,65535,0,145,5500],
                [160,449,2100,3000,0,20,5500],
                [160,449,3000,3600,0,145,5500],
                [160,449,3600,4435,0,486,5500],
                [160,449,4435,65535,0,486,5500],
                [450,65535,0,65535,-1,0,0]
            ]
        },
        {
            "name" : "g_charger_plot_table_noStand",
            "mask" : 3,
            "element_num" : 4,
            "g_charger_plot_table_noStand" : [
                [-500,0,0,65535,-1,0,0],
                [1,39,2100,65535,0,140,5500],
                [40,449,2100,65535,0,150,5500],
                [450,65535,0,65535,-1,0,0]
            ]
        }
    ]

    "temperature_termination_voltage_table" : [
        {
            "temp_vterm_enable" : 1,
            "temp_rise_hys" : 20,
            "temp_fall_hys" : 20,
            "relation_table" : [
                [-100,0,3000],
                [1,100,3000],
                [101,150,4000],
                [151,450,4400],
                [451,600,4000]
            ]
        }
    ]
}

代码位置

chargerd框架涉及相关代码。

# Driver
社区最新代码:nuttx/drivers/power/battery

# Healthd
frameworks/healthd/

# Chargerd
frameworks/charger

# uORB topic definition
frameworks/topics/include/system/state.h