PMU 功能簡(jiǎn)介
目前已支持的PMU 為:AXP2585。
該P(yáng)MU 主要用于電池管理以及充電管理,主要有以下功能:
- 讀取電池電量、電池溫度。
- 設(shè)置充電時(shí)的充電電流,截止充電電壓、充電超時(shí)等。
- 自動(dòng)根據(jù)連接PC 或者適配器設(shè)置USB 輸入的最大限流。
- 電池溫度過(guò)高時(shí)自動(dòng)觸發(fā)停充。
- 檢測(cè)USB 線的接入和拔出。
- PMU 芯片過(guò)溫保護(hù)。
PMU 配置介紹
sys_config.fex
配置說(shuō)明
[pmu]
pmu_irq_pin = port:PA14< 14 >< 0 >< default >< default >
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
配置含義:
pmu_irq_pin
AXP芯片IRQ引腳連接的IO,用于觸發(fā)中斷
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 >
電池內(nèi)阻,單位為mΩ
pmu_battery_cap < u32 >
電池容量,單位為mAh
pmu_runtime_chgcur < u32 >
運(yùn)行時(shí)constant充電電流限制,單位為mA
pmu_suspend_chgcur < u32 >
休眠時(shí)constant充電電流限制,單位為mA
pmu_shutdown_chgcur < u32 >
關(guān)機(jī)時(shí)constant充電電流限制,單位為mA
pmu_terminal_chgcur < u32 >
截止電流,停止充電的標(biāo)志位之一,單位為mA
pmu_init_chgvol < u32 >
電池滿充電壓,單位為mV
pmu_init_chg_pretime < u32 >
當(dāng)電池電壓低于REG 0x8C[1]時(shí),屬于pre charge階段。
如果此階段時(shí)間超過(guò)pmu_init_chg_pretime,視為超時(shí),停止充電。
pmu_init_chg_csttime < u32 >
當(dāng)電池電壓高于REG 0x8C[1]且低于截止電壓(REG 0X8C[7:2])時(shí),屬于恒流充電階段。
如果此階段時(shí)間超過(guò)pmu_init_chg_csttime,視為超時(shí),停止充電。
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 >
設(shè)置電池溫度檢測(cè)、ntc是否使能
pmu_bat_charge_ltf < u32 >
觸發(fā)電池低溫停充的TS pin電壓閾值,單位:mV
默認(rèn):1105mV
范圍:0?8160mV
pmu_bat_charge_htf < u32 >
觸發(fā)電池高溫停充的TS pin電壓閾值,單位:mV
默認(rèn):121mV
范圍:0?510mV
pmu_bat_shutdown_ltf < u32 >
非充電模式下,觸發(fā)電池低溫中斷的TS pin電壓閾值,單位:mV
默認(rèn):1381mV
pmu_bat_shutdown_htf < u32 >
默認(rèn):89mV
范圍:0?510mV
pmu_bat_para1 < u32 >
pmu_bat_para2 < u32 >
...
pmu_bat_para32 < u32 >
電池曲線參數(shù)
電池參數(shù)根據(jù)使用的電池不同,通過(guò)儀器測(cè)量出來(lái)
pmu_bat_temp_para1 < u32 >
電池包?25度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para2 < u32 >
電池包?15度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para3 < u32 >
電池包?10度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para4 < u32 >
電池包?5度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para5 < u32 >
電池包0度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para6 < u32 >
電池包5度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para7 < u32 >
電池包10度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para8 < u32 >
電池包20度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para9 < u32 >
電池包30度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para10 < u32 >
電池包40度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para11 < u32 >
電池包45度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para12 < u32 >
電池包50度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para13 < u32 >
電池包55度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para14 < u32 >
電池包60度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para15 < u32 >
電池包70度對(duì)應(yīng)的TS pin電壓,單位:mV
pmu_bat_temp_para16 < u32 >
電池包80度對(duì)應(yīng)的TS pin電壓,單位:mV
不同電池包的溫敏電阻特性不一樣,根據(jù)電池包的TS溫敏電阻手冊(cè),找到pmu_bat_temp_para[1?16]對(duì)應(yīng)溫度點(diǎn)的電阻阻值,將阻值除以20得到的電壓數(shù)值(單位:mV),將電壓數(shù)值填進(jìn)pmu_bat_temp_para[1?16]的節(jié)點(diǎn)中即可
rtos menuconfig 配置說(shuō)明
AXP 是依賴于I2C 進(jìn)行通過(guò)的,所以首先就需要確認(rèn)I2C 驅(qū)動(dòng)是已經(jīng)被選上的。
- 使能I2C 驅(qū)動(dòng)
? > Drivers Options
? > soc related device drivers
? > TWI Devices
[*] enable twi driver
- 使能PMU 驅(qū)動(dòng)
? > Drivers Options
? > soc related device drivers
[*] POWER Devices
- 選擇AXP2585
? > Drivers Options
? > soc related device drivers
? > POWER Devices
[*] enable power driver
PMU 源碼結(jié)構(gòu)
lichee/rtos?hal/hal/source/power/
├── axp2585.c
├── axp2585.h
├── axp.c
├── axp_twi.c
├── ffs.h
├── Kconfig
├── Makefile
├── sun20iw2p1
│ ├── core.c
└── type.h
- axp2585.c: AXP2585 驅(qū)動(dòng)。
- axp.c: AXP 框架API 接口。
- axp_twi.c: 初始化以及I2C 接口。
- sun20iw2p1: R128 配置以及總初始化接口。
PMU 常用功能
驅(qū)動(dòng)初始化
若 mrtos_menuconfig
中已經(jīng)選上了該設(shè)備,并且 sys_config.fex
中也配置完成,那么系統(tǒng)加載時(shí)就已經(jīng)自動(dòng)將 PMU 驅(qū)動(dòng)加載完成,無(wú)需軟件工程師再進(jìn)行初始化。
初始化成功的 log 可如下所示:
axp2585 chip version C !
axp2585 chip id detect 0x49 !
current limit not set: usb adapter type
axp2585 init finished !
若是沒(méi)有打印上述的打印 log 信息,可能是 PMU 驅(qū)動(dòng)加載失敗了,可以從 sys_config.fex
配置中確認(rèn)是否有配置漏配置了,或者是從 I2C 方向去排查,確認(rèn)I2C 通信是正常的。
AXP 接口使用
PMU 驅(qū)動(dòng)有一個(gè)統(tǒng)一的驅(qū)動(dòng)入口,初始化和一些功能接口,都是由AXP 驅(qū)動(dòng)統(tǒng)一管理的。具體請(qǐng)參照 [PMU]章節(jié)的說(shuō)明。
電源管理應(yīng)用healthd
healthd 是一個(gè)電源管理的應(yīng)用,主要功能為:檢測(cè)電池電量、設(shè)置充電電流、電量變低警報(bào)、電壓過(guò)低關(guān)機(jī)、電池溫度過(guò)高過(guò)度保護(hù)等等。
應(yīng)用配置方法:
? > System components
? > aw components
[*] healthd for axp
應(yīng)用源碼路徑為:
lichee/rtos/components/aw/healthd/healthd.c
healthd 用法
開(kāi)啟應(yīng)用
應(yīng)用在默認(rèn)SDK 中并不會(huì)啟動(dòng),在系統(tǒng)啟動(dòng)之后,需要手動(dòng)輸入:
healthd
然后就開(kāi)啟了電池管理應(yīng)用了。開(kāi)啟了之后,就會(huì)啟動(dòng)了電量變低警報(bào)、電壓過(guò)低關(guān)機(jī)、電池溫度過(guò)高過(guò)度保護(hù)的功能。
獲取電池電量
運(yùn)行命令:
healthd_get_capacity
設(shè)置充電電流
運(yùn)行命令:
healthd_set_chgcur 1500
命令的后綴為充電電流大小,單位為mA,范圍為0~3072mA。
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
17827瀏覽量
360247 -
電源管理
+關(guān)注
關(guān)注
117文章
6400瀏覽量
145785 -
PMU
+關(guān)注
關(guān)注
1文章
120瀏覽量
22084 -
R128
+關(guān)注
關(guān)注
0文章
41瀏覽量
238
發(fā)布評(píng)論請(qǐng)先 登錄
性能標(biāo)桿·可靠典范 | 金升陽(yáng)LM-R2S系列機(jī)殼電源煥新上市

金升陽(yáng)推出升級(jí)版LM-R2S系列機(jī)殼開(kāi)關(guān)電源

FD60-36S24B3R2 FD60-36S24B3R2

PFD50-36S24B3R2 PFD50-36S24B3R2

FD50-36S24B3(R)2 FD50-36S24B3(R)2

ADC128S102EVM評(píng)估模塊

芯片設(shè)計(jì)進(jìn)階之SOC電源管理系統(tǒng)介紹

pmu電源管理單元設(shè)計(jì)遇到的問(wèn)題
pmu電源管理芯片和DCDC區(qū)別
實(shí)現(xiàn)高效供電,PMU成便攜式儲(chǔ)能中的關(guān)鍵
【GD32 MCU 入門教程】GD32 MCU 常見(jiàn)外設(shè)介紹(11)PMU 模塊介紹

ADC128S052、ADC128S052-Q1模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

Si24R2E:2.4G有源智慧校園卡管理應(yīng)用方案推薦

評(píng)論