rfg阻值校准方法
Posted bobuddy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rfg阻值校准方法相关的知识,希望对你有一定的参考价值。
Fuel Gauge Unit(FGU)
手机通过计算流进或流出电池的电流,来计算电池电量。通过获取rfg的电压,然后除以rfg的电阻,得到电流值。
由于rfg的电阻(精度1%)受pcb layout和贴片一致性的影响,需要校准rfg的阻值。原理就是给rfg灌固定的电流,然后软件读取fgu两端的电流I,然后得到修正系数。
以展讯平台为例
1.接3.8V电源开机(AC两点),然后插入usb,先禁止充电(对电流有影响echo 1 >stop_charge) stop_charge节点的路径有差异,可以通过find -name stop_charge查找。
2.另一路电源设置电压1V,限流1000mA,电源正极接电池座子负极B,电源负极接主板地C(禁止焊线到EF两点),然后读取电流值(current_now)。
比如rfg软件设值100毫欧,I=1050mA,那么rfg的真实阻值就是100*(1050)/1000=105毫欧,然后修改dts里这个值sprd,calib-resistance-real = <10500>;为了保证一致性,拿几台手机
获取rfg的平均值,填写到软件中。
对于mtk平台,更好操作点,不需要插入usb,工程模式可以直接读取流过fpu的电流(Hardware Testing-->Power-->Charge Battery-->FG_Battery_CurrentConsumption)(要除以100)。第一步是一样的,第二步根据mtk参考文档,电源正极接C,电源负极接D,跟展讯的有差异,个人理解是一样的(只是电流方向不一样)。计算方法CAR_TUNE_VALUE=1000/b*100,假设b为1050mA,那么CAR_TUNE_VALUE=95,然后修改dts里这个值
/* The resistance of PCB */
CAR_TUNE_VALUE = <(95)>;
看下FG_Battery_CurrentConsumption的实现,工程模式apk直接cat内核的FG_Battery_CurrentConsumption节点
static DEVICE_ATTR_RW(FG_Battery_CurrentConsumption);
static ssize_t FG_Battery_CurrentConsumption_show(
struct device *dev, struct device_attribute *attr, char *buf)
int ret_value = 8888;
ret_value = gauge_get_int_property(GAUGE_PROP_BATTERY_CURRENT) * 100;
bm_err("%s[EM] FG_Battery_CurrentConsumption : %d .1mA\\n", __func__,
ret_value);
return sprintf(buf, "%d\\n", ret_value);
static struct mtk_gauge_sysfs_field_info mt6357_sysfs_field_tbl[] =
...
GAUGE_SYSFS_FIELD_RO(battery_current_get,GAUGE_PROP_BATTERY_CURRENT),
...
static int battery_current_get(struct mtk_gauge *gauge,
struct mtk_gauge_sysfs_field_info *attr, int *val)
*val = instant_current(gauge);
return 0;
static int instant_current(struct mtk_gauge *gauge)
...
dvalue =((dvalue * car_tune_value) / 1000);
return dvalue;
fg_read_dts_val(np, "CAR_TUNE_VALUE", &(fg_cust_data->car_tune_value),UNIT_TRANS_10);
static int fg_read_dts_val(const struct device_node *np,const char *node_srting,int *param, int unit)
if (!of_property_read_u32(np, node_srting, &val))
*param = (int)val * unit;
实际操作中,遇到2个坑,分享给大家
展讯平台没有stop charge,导致读出来的电流跳变,无法往下进行实验。其实也可以不通过插usb来读取电流,毕竟支持无线adb。
mtk平台也出现了电流跳变,由于偷懒,没有焊接10k电阻,直接接电池fpc来给系统供电,导致系统的地接到了电池座子的负极,导致流过rfg的电流不稳定。
参考
GM2.5_and_3.0_Customized_Setting_Flow_V1.4.pdf
FGU电压及电流检测测试及校准方法20160322.xlsx
以上是关于rfg阻值校准方法的主要内容,如果未能解决你的问题,请参考以下文章