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

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驱动,持续更新

发布了12 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/oliverJ/article/details/104018558