当前位置: 代码迷 >> 综合 >> [RK3399][Android8.1] 调试记录 --- CW2015电量计+GPIO DC检测
  详细解决方案

[RK3399][Android8.1] 调试记录 --- CW2015电量计+GPIO DC检测

热度:14   发布时间:2024-01-25 14:58:44.0

Platform: RK3399
OS: Android 8.1

 

硬件环境:

使用3串3并锂电池供电

充电IC:BQ24610RGER

电量计IC:CW2015

问题1

1.CW2015  i2c通信失败

解决方法:

1.确定CW2015 i2c地址为0X62

2.使用示波器查看I2C上确实存在数据

3.怀疑硬件问题,查看PCB图发现管脚顺序错误,下图高亮管脚应为PIN5

问题2

1.cw2015可以获取电量,但是无法获取充电状态

解决方法:

1.cw2015驱动中直接上报充电状态为正在充电,显示依然为未充电

2.深度分析android power supply系统,下文介绍的比较详细

https://blog.csdn.net/u012830148/article/details/80227903

3.如果要进入充电状态,必须有battery设备,所以将CW2015注册为battery设备,需要再添加charger设备.

static const struct power_supply_desc cw2015_bat_desc = {.name		= "rk-bat",.type		= POWER_SUPPLY_TYPE_BATTERY,.properties	= cw_battery_properties,.num_properties	= ARRAY_SIZE(cw_battery_properties),.get_property	= cw_battery_get_property,
};

4.因为我们的充电芯片没有I2C接口,只是在硬件上增加了一个充电器检测的GPIO

5.在 /kernel/drivers/power#目录下刚好存在一个gpio-charger.c文件,完全符合项目的需求

6.在kenel下make menuconfig,使能gpio-charger.c

7.将gpio注册为POWER_SUPPLY_TYPE_MAINS

8.dts中增加节点

   gpio-charger{status = "okay";compatible = "gpio-charger";gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;charger-type = "mains";};

总结

目前功能基本实现,但是电量不够准确,需要继续修改CW2015驱动,持续更新

  相关解决方案