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

free-jdx 2020-10-21 16:08:13 6079
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=4200000
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3300
POWER_SUPPLY_VOLTAGE_NOW=3713000
POWER_SUPPLY_CURRENT_NOW=214000
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
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 1189 9 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区