全志axp驱动功能分析 & 调试说明

全志axp驱动功能分析 & 调试说明全志技术社区 1 axp 芯片功能说明 Power 按键 外部电源检测 插入 移除 过压 欠压保存 过流保护 过温保护 电量计算 芯片温度检测 电池温度检测 需要电池自带 NTC 过温警告 2 驱动源码说明 1 drivers power axp power axp22 board ca 读取 sys config fex 初始化一些参数包括 axp221 设备地址 axp221 是通过 i2c 连接到 soc 上的 电池容量电池充电电流电池充电电压预充电时间持续充电时间 全志 axp 驱动功能分析

全志 技术社区

1. axp芯片功能说明

  • Power按键
  • 外部电源检测(插入/移除)
  • 过压/欠压保存
  • 过流保护
  • 过温保护
  • 电量计算
  • 芯片温度检测
  • 电池温度检测(需要电池自带NTC)
  • 过温警告

2.驱动源码说明

(1)drivers/power/axp_power/axp22-board.c

a. 读取sys_config.fex,初始化一些参数 包括: axp221设备地址(axp221是通过i2c连接到soc上的) 电池容量 电池充电电流 电池充电电压 预充电时间 持续充电时间

自动关机电压 -- "pmu_pwroff_vol" 自动开机电压 -- "pmu_pwron_vol"

各路regulator的电压

电源键短按时间门限 电源键长按时间门限

b.初始化regulator_init_data数据结构 c.向i2c_core注册axp板卡信息

(2)drivers/power/axp_power/axp-mfd.c

a. 注册axp驱动:i2c_add_driver(&axp_mfd_driver) b. axp_mfd_probe函数 初始化中断、队列、子设备、属性节点

(3)drivers/power/axp_power/axp22-regu.c

注册regulator驱动,主要工作在axp_regulator_probe

(4)drivers/power/axp_power/axp22-gpio.c

axp是由电源按键输入,和其他一些通用的GPIO,将这些GPIO注册到linux设备树下,并提供了这些GPIO的操作方法: __axp_gpio_input :设置为输入IO

__axp_gpio_output :设置为输出IO

__axp_gpio_set :设置输出(0或1)

__axp_gpio_get :获取输入

(5)drivers/power/axp_power/axp22-sply.c

锂电池充放电管理、电源按键、

在axp_battery_probe函数里,完成了大量工作:电源按键注册,参数设置、创建用户空间的访问节点。

3. 充电监测

由axp_charging_monitor函数完成充电信息的采集与上报,每隔10ms更新一次信息;电池信息更新后,通过判断电池电量和电流方向决定是否向上层上报(换句话说,向上上报的时间间隔不是固定的10ms,只有当电池电量变化才会上报通知的)。

axp_charger_update_state:更新充电信息 is_on :是否正在充电 bat_det :是否存在电池 ac_det :是否连接火牛 usb_det :是否连接USB usb_valid :USB是否可用 ac_vali :火牛是否可用 ext_valid :外部输入是否可用 bat_current_direction :电池电流方向(充电 / 放电) batery_active :是否进入电池激活模式 int_over_temp :axp221是否过温 charge_on :是否正在充电 axp_charger_update:电池信息更新 vbat :电池电压 ocv :电池电量 ic_temp :内部温度 rest_vol :电池电量(百分比) 

在用户空间查看充电信息: 通过:cat /sys/class/power_supply/battery/uevent POWER_SUPPLY_NAME=battery POWER_SUPPLY_MODEL_NAME=battery POWER_SUPPLY_STATUS=Charging POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_ONLINE=0 POWER_SUPPLY_HEALTH=Good POWER_SUPPLY_TECHNOLOGY=LiFe POWER_SUPPLY_VOLTAGE_MAX_DESIGN= POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3300 POWER_SUPPLY_VOLTAGE_NOW= POWER_SUPPLY_CURRENT_NOW= POWER_SUPPLY_ENERGY_FULL_DESIGN=0 POWER_SUPPLY_CAPACITY=24 POWER_SUPPLY_TEMP=300

4. 中断

电池接入或者移除 USB插入/拔出 USB输入过压 充电完成 充电开始 电池过温 电池低温

电源键长按 电源键短按

5. 调试

/sys/class/power_supply/battery/ cat current_now :可以得到电池的电流 cat voltage_now :可以得到电池电压 注意:如果在充电的情况下,获取得到的电流是不准确的, current_now此时的值 = |充电电流 - 放电电流| /sys/bus/i2c/devices/1-0034/ axp芯片是通过i2x接入的,在该文件夹下的axp22_reg节点可用于与axp通信,读取axp寄存器的值。 1、写入要读取的地址: echo 0 > axp22_reg 2、读取寄存器的值: cat axp22_reg

 智云稳定器

今天的文章 全志axp驱动功能分析 & 调试说明分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-04 18:46
下一篇 2025-01-04 18:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/101449.html