platform:RK3399
OS:Android 7.1
1. 概述
本文档简要介绍基于RK3399实现充电管理相关部分,主要包括Typec充电和uboot关机充电两大部分。主要实现普通充电、PD充电、关机充电、电量上报、过放及低电保护等功能。
2. Typec正常充电
typec充电需要fusb302+bq25700+cw2015配合使用才可以正常使用各项功能.驱动已经调试和验证过,所以调试难度不大,只要保证硬件正常,供电和通信正常,一般都能跑起来。这一部分所要做的是按照需求或问题进行适当的调整驱动即可。
2.1 fusb302 驱动移植
Fusb302是可编程的USB Type-C控制器,支持识别各种USB 设备和对应的状态;且支持最高100W的PD协议。
驱动目录:kernel/drivers/mfd/fusb302.c
驱动不需要修改,主要是 配置dts。
fusb0: fusb30x@22 {
compatible = "fairchild,fusb302";
reg = <0x22>;
pinctrl-names = "default";
pinctrl-0 = <&fusb0_int>;
int-n-gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>; //中断引脚
vbus-5v-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; //vbus引脚
charge-dev = <&bq25700>; //使用的充电IC
//discharge-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
support-uboot-charge = <1>; //支持uboot关机充电
port-num = <0>; //使用的usb控制器,关机充电时需要
status = "okay";
};
添加dts之后一般驱动就可以正常工作了。如果驱动无法正常工作,主要从硬件方面来分析:
-
参考原理图和数据手册,检查fusb302各个电源是否供电正常。
-
重点检查中断引脚INT_N和两个CC脚插入和拔出Tpyec时电压状态是否正常
a) 插入Type-C 两个CC脚电压分别为0.4V/0V,哪个CC脚电压为0.4V和插入方向有关。
b) 插入充电器 两个CC脚电压分别为1.6V/0V,哪个CC脚电压为1.6V和插入方向有关。
c) 未插入Typec时 CC脚在0.8V~1.1V之间跳变
-
主板到充电板的连接线问题,导致信号质量差
-
Fusb302物料问题
2.2 bq25700 驱动移植
Bq25700是升降压充电管理IC,支持3.5V~24V的输入电压,4.48V~20.8V的输出电压。还支持PD充电和OTG功能。
驱动目录:kernel/drivers/power/bq25700_charger.c
Bq25700的驱动也几乎不