视壮BBS

   登录   |   注册   |

VS-RK3XXX在uboot电量计驱动分析

8

主题

8

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2018-6-20 17:19:39     
1、uboot添加电量计fg驱动:
修改u-boot\drivers\power\fuel_gauge\fg_cw201x.c
#define COMPAT_ROCKCHIP_CW201X "cw2013"       
宏定义COMPAT_ROCKCHIP_CW201X 必须与内核的dts里面的节点一致,如下:
CW2015@62 {
                compatible = "cw2013";
                status = "okay";

2、uboot修改系统正常启动的电压门限宏定义,低于这个电压,禁止uboot启动内核,并关机。
u-boot\include\configs\rk32plat.h
#define CONFIG_SYSTEM_ON_VOL_THRESD        7500        //7500表示7.5V,如果不接外部电源,电池电压低于7.5V时,系统不能启动。

3、添加低电压图片:
1)拷贝u-boot\tools\resource_tool\resources\images\battery_fail.bmp到kernel根目录下。
2)修改kernel\arch\arm\Makefile,将battery_fail.bmp编译进固件
        LOGO := $(notdir $(wildcard $(srctree)/logo.bmp)) $(notdir $(wildcard $(srctree)/battery_fail.bmp))
3)修改uboot/board/rockchip/common/rkboot/fastboot.c
static void board_fbt_low_power_off(void)
{
        if (is_power_low()) {
                if (!is_charging()) {
                        FBTERR("low power, shutting down...\n");
#ifdef CONFIG_LCD
#ifdef CONFIG_RK_FB
                        //TODO: show warning logo.
        -              show_resource_image("image/battery_fail.bmp");
        +              show_resource_image("battery_fail.bmp");

4、uboot电压计算
uboot/drivers/power/fuel_gauge/fg_cw201x.c
cw_get_vol()
{
-        voltage = value16_1 * 305;
-        return voltage/1000;

//与内核fg驱动计算公式一致。
+        voltage_jason = (value16_1 * 312 / 1024)*2;
+        return voltage_jason;

}

uboot计算出来的电压要比kernel计算出来的电压高0.3V左右。板子一上电uboot就计算电压,所以电压值会偏高一点。
uboot电量百分比的计算公式依赖于电压,所以要注意电量百分比的计算。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 易百讯      粤ICP备14022046号-2
快速回复 返回顶部 返回列表