• 全志R128外设模块配置——PMU电源管理


    PMU 电源管理

    PMU 功能简介

    目前已支持的PMU 为:AXP2585。

    该PMU 主要用于电池管理以及充电管理,主要有以下功能:

    • 读取电池电量、电池温度。

    • 设置充电时的充电电流,截止充电电压、充电超时等。

    • 自动根据连接PC 或者适配器设置USB 输入的最大限流。

    • 电池温度过高时自动触发停充。

    • 检测USB 线的接入和拔出。

    • PMU 芯片过温保护。

    PMU 配置介绍

    sys_config.fex 配置说明

    [pmu]
    pmu_irq_pin      = port:PA14<14><0>
    pmu_irq_wakeup   = 2
    pmu_hot_shutdown = 1
    pmu_bat_unused = 0
    pmu_usbad_vol = 4600
    pmu_usbad_cur = 1500
    pmu_usbpc_vol = 4600
    pmu_usbpc_cur = 500
    pmu_chg_ic_temp = 0
    pmu_battery_rdc = 100
    pmu_battery_cap = 3568
    pmu_runtime_chgcur = 900
    pmu_suspend_chgcur = 1200
    pmu_shutdown_chgcur = 1200
    pmu_init_chgvol = 4200
    pmu_init_chg_pretime = 50
    pmu_init_chg_csttime = 1200
    pmu_chgled_type = 0
    pmu_init_bc_en = 1
    pmu_bat_temp_enable = 0
    pmu_bat_charge_ltf = 2261
    pmu_bat_charge_htf = 388
    pmu_bat_shutdown_ltf = 3200
    pmu_bat_shutdown_htf = 237
    pmu_bat_para[0] = 0
    pmu_bat_para[1] = 0
    pmu_bat_para[2] = 0
    pmu_bat_para[3] = 0
    pmu_bat_para[4] = 0
    pmu_bat_para[5] = 0
    pmu_bat_para[6] = 1
    pmu_bat_para[7] = 1
    pmu_bat_para[8] = 2
    pmu_bat_para[9] = 4
    pmu_bat_para[10] = 5
    pmu_bat_para[11] = 12
    pmu_bat_para[12] = 19
    pmu_bat_para[13] = 32
    pmu_bat_para[14] = 41
    pmu_bat_para[15] = 45
    pmu_bat_para[16] = 48
    pmu_bat_para[17] = 51
    pmu_bat_para[18] = 54
    pmu_bat_para[19] = 59
    pmu_bat_para[20] = 63
    pmu_bat_para[21] = 68
    pmu_bat_para[22] = 71
    pmu_bat_para[23] = 74
    pmu_bat_para[24] = 78
    pmu_bat_para[25] = 81
    pmu_bat_para[26] = 82
    pmu_bat_para[27] = 84
    pmu_bat_para[28] = 88
    pmu_bat_para[29] = 92
    pmu_bat_para[30] = 96
    pmu_bat_para[31] = 100
    pmu_bat_temp_para[0] = 7466
    pmu_bat_temp_para[1] = 4480
    pmu_bat_temp_para[2] = 3518
    pmu_bat_temp_para[3] = 2786
    pmu_bat_temp_para[4] = 2223
    pmu_bat_temp_para[5] = 1788
    pmu_bat_temp_para[6] = 1448
    pmu_bat_temp_para[7] = 969
    pmu_bat_temp_para[8] = 664
    pmu_bat_temp_para[9] = 466
    pmu_bat_temp_para[10] = 393
    pmu_bat_temp_para[11] = 333
    pmu_bat_temp_para[12] = 283
    pmu_bat_temp_para[13] = 242
    pmu_bat_temp_para[14] = 179
    pmu_bat_temp_para[15] = 134
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    配置含义:

    pmu_irq_pin
    	AXP芯片IRQ引脚连接的IO,用于触发中断
    
    pmu_irq_wakeup
    	Press irq wakeup or not when sleep or power down.
        0: not wakeup
        1: wakeup
        
    pmu_hot_shutdown
        when PMU over temperature protect or not.
        0: disable
        1: enable
    
    pmu_bat_unused
        unused bat
        0: disable
        1: enable
    
    pmu_usbpc_vol <u32>
    	usb pc输入电压限制值,单位为mV
    	
    pmu_usbpc_cur <u32>
    	usb pc输入电流限制值,单位为mA
    	
    pmu_usbad_vol <u32>
    	usb adaptor输入电压限制值(vimdpm),单位为mV
    	
    pmu_usbad_cur <u32>
    	usb adaptor输入电流限制值,单位为mA
    	
    pmu_chg_ic_temp <u32>
        1: TS current source always on
        0: TS current source off
        
    pmu_battery_rdc <u32>
    	电池内阻,单位为mΩ
    	
    pmu_battery_cap <u32>
    	电池容量,单位为mAh
    	
    pmu_runtime_chgcur <u32>
    	运行时constant充电电流限制,单位为mA
    	
    pmu_suspend_chgcur <u32>
    	休眠时constant充电电流限制,单位为mA
    	
    pmu_shutdown_chgcur <u32>
    	关机时constant充电电流限制,单位为mA
    	
    pmu_terminal_chgcur <u32>
    	截止电流,停止充电的标志位之一,单位为mA
    	
    pmu_init_chgvol <u32>
    	电池满充电压,单位为mV
    	
    pmu_init_chg_pretime <u32>
    	当电池电压低于REG 0x8C[1]时,属于pre charge阶段。
    	如果此阶段时间超过pmu_init_chg_pretime,视为超时,停止充电。
    	
    pmu_init_chg_csttime <u32>
    	当电池电压高于REG 0x8C[1]且低于截止电压(REG 0X8C[7:2])时,属于恒流充电阶段。
    	如果此阶段时间超过pmu_init_chg_csttime,视为超时,停止充电。
    	
    pmu_chgled_type <bool>
        0: Enable CHGLED pin funciton
        1: Disable CHGLED pin funciton
        
    pmu_init_bc_en <bool>
        0: Enable BC1.2
        1: Disable BC1.2
            
    pmu_bat_temp_enable <u32>
    	设置电池温度检测、ntc是否使能
            
    pmu_bat_charge_ltf <u32>
        触发电池低温停充的TS pin电压阈值,单位:mV
        默认:1105mV
        范围:08160mV
            
    pmu_bat_charge_htf <u32>
        触发电池高温停充的TS pin电压阈值,单位:mV
        默认:121mV
        范围:0510mV
            
    pmu_bat_shutdown_ltf <u32>
    	非充电模式下,触发电池低温中断的TS pin电压阈值,单位:mV
    	默认:1381mV
            
    pmu_bat_shutdown_htf <u32>
    	默认:89mV
    	范围:0510mV
            
    pmu_bat_para1 <u32>
    pmu_bat_para2 <u32>
    ...
    pmu_bat_para32 <u32>
    	电池曲线参数
    	电池参数根据使用的电池不同,通过仪器测量出来
            
    pmu_bat_temp_para1 <u32>
    	电池包‑25度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para2 <u32>
    	电池包‑15度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para3 <u32>
    	电池包‑10度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para4 <u32>
    	电池包‑5度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para5 <u32>
    	电池包0度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para6 <u32>
    	电池包5度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para7 <u32>
    	电池包10度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para8 <u32>
    	电池包20度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para9 <u32>
    	电池包30度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para10 <u32>
    	电池包40度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para11 <u32>
    	电池包45度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para12 <u32>
    	电池包50度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para13 <u32>
    	电池包55度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para14 <u32>
    	电池包60度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para15 <u32>
    	电池包70度对应的TS pin电压,单位:mV
            
    pmu_bat_temp_para16 <u32>
    	电池包80度对应的TS pin电压,单位:mV
    
    不同电池包的温敏电阻特性不一样,根据电池包的TS温敏电阻手册,找到pmu_bat_temp_para[116]对应温度点的电阻阻值,将阻值除以20得到的电压数值(单位:mV),将电压数值填进pmu_bat_temp_para[116]的节点中即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148

    rtos menuconfig 配置说明

    AXP 是依赖于I2C 进行通过的,所以首先就需要确认I2C 驱动是已经被选上的。

    • 使能I2C 驱动
    ‑> Drivers Options
        ‑> soc related device drivers
            ‑> TWI Devices
                [*] enable twi driver
    
    • 1
    • 2
    • 3
    • 4
    • 使能PMU 驱动
    ‑> Drivers Options
    	‑> soc related device drivers
    		[*] POWER Devices
    
    • 1
    • 2
    • 3
    • 选择AXP2585
    ‑> Drivers Options
    	‑> soc related device drivers
    		‑> POWER Devices
    			[*] enable power driver
    
    • 1
    • 2
    • 3
    • 4

    PMU 源码结构

    lichee/rtos‑hal/hal/source/power/
    ├── axp2585.c
    ├── axp2585.h
    ├── axp.c
    ├── axp_twi.c
    ├── ffs.h
    ├── Kconfig
    ├── Makefile
    ├── sun20iw2p1
    │ ├── core.c
    └── type.h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • axp2585.c: AXP2585 驱动。
    • axp.c: AXP 框架API 接口。
    • axp_twi.c: 初始化以及I2C 接口。
    • sun20iw2p1: R128 配置以及总初始化接口。

    PMU 常用功能

    驱动初始化

    mrtos_menuconfig 中已经选上了该设备,并且 sys_config.fex 中也配置完成,那么系统加载时就已经自动将 PMU 驱动加载完成,无需软件工程师再进行初始化。

    初始化成功的 log 可如下所示:

    axp2585 chip version C !
    axp2585 chip id detect 0x49 !
    current limit not set: usb adapter type
    axp2585 init finished !
    
    • 1
    • 2
    • 3
    • 4

    若是没有打印上述的打印 log 信息,可能是 PMU 驱动加载失败了,可以从 sys_config.fex 配置中确认是否有配置漏配置了,或者是从 I2C 方向去排查,确认I2C 通信是正常的。

    AXP 接口使用

    PMU 驱动有一个统一的驱动入口,初始化和一些功能接口,都是由AXP 驱动统一管理的。具体请参照 PMU章节的说明。

    电源管理应用healthd

    healthd 是一个电源管理的应用,主要功能为:检测电池电量、设置充电电流、电量变低警报、电压过低关机、电池温度过高过度保护等等。

    应用配置方法:

    ‑> System components
    	‑> aw components
    		[*] healthd for axp
    
    • 1
    • 2
    • 3

    应用源码路径为:

    lichee/rtos/components/aw/healthd/healthd.c
    
    • 1
    healthd 用法
    开启应用

    应用在默认SDK 中并不会启动,在系统启动之后,需要手动输入:

    healthd
    
    • 1

    然后就开启了电池管理应用了。开启了之后,就会启动了电量变低警报、电压过低关机、电池温度过高过度保护的功能。

    获取电池电量

    运行命令:

    healthd_get_capacity
    
    • 1
    设置充电电流

    运行命令:

    healthd_set_chgcur 1500
    
    • 1

    命令的后缀为充电电流大小,单位为mA,范围为0~3072mA。

    原贴链接:https://bbs.aw-ol.com/topic/4401/
    资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com
    全志及开发者最新动态可以关注全志在线微信公众号

  • 相关阅读:
    三个线程顺序打印ABC?我有十二种做法,彻底掌握多线程同步通信机制
    7. RabbitMQ之延时队列
    强大的音频制作软件 Logic Pro X 最新中文 for mac
    在hyper-v虚拟机中安装并配置linux
    电脑重装系统蓝屏是什么原因
    Vue界面跳转传递参数
    PV操作经典问题通解
    springboot在线银行贷款系统
    08.23类属性和实例属性
    代码随想录算法训练营第五十九天丨 单调栈02
  • 原文地址:https://blog.csdn.net/weixin_43094346/article/details/133809163