fcc full-charge capacity 滿電荷電量
uc remaining capacity rc 剩餘電量
cc coulumb counter 電量計
uuc unusable capacity 不可用電量
pc percentage charge 剩餘電荷佔fcc百分比
soc state of charge 電量百分比
ocv open circuit voltage 開路電壓,電池在開路狀態下的端電壓稱為開路電壓
ruc remaining usable capacity ruc=rc-cc-uuc,剩餘可用電量
電池dts節點資訊 (kernel\documentation\devicetree\bindings\batterydata)
qcom,battery-type:指明電池型別的字串; 如qrd-skua-4v35-6500mah
qcom,batt-id-kohm:電池id電阻:當一些電池模型的id電阻在一定範圍內浮動時,電池id電阻可以作為單電池模型陣列以支援多id;
qcom,chg-term-ua= <100000>;:電池的結束充電電流,這裡為100ma;就是電池滿電的時候的電流;
qcom,default-rbatt-mohm:標稱電池電阻值;正常溫度下的電池電阻值(取中值)
qcom,fcc-mah=<3200>;電池完全充滿的電池容量3200mah;能放電多少的電流
qcom,max-voltage-uv =<4200000>; 電池最大的額定電壓;
qcom,rbatt-capacitive-mohm=<50>;電池的電容電阻; 跟著修改;
qcom,v-cutoff-uv = <3400000>;電池的截止電壓,當電池電壓低於此值時裝置會自動關機;
qcom,flat-ocv-threshold-uv = <3800000>;可以被認為處於平坦放電後的開始下降的閾值;在**中查詢那個電流下降的很快的那個值;
qcom,palladium-batterydata ;
//乙個包含溫度和百分比的開路電壓2維查詢表,查詢表的單位是百分比和電壓的關係
qcom,pc-temp-ocv-lut ;
//乙個二維查詢表對應於電池充電的內部溫度和內部電阻
qcom,rbatt-sf-lut ;
static int qpnp_vm_bms_probe(struct spmi_device *spmi)
/* set the battery profile */
rc = config_battery_data(chip->batt_data);
if (rc)
...........
}
static int set_battery_data(struct qpnp_bms_chip *chip)
node = of_find_node_by_name(chip->spmi->dev.of_node,
"qcom,battery-data");
if (!node)
batt_data = devm_kzalloc(chip->dev,
sizeof(struct bms_battery_data), gfp_kernel);
if (!batt_data)
batt_data->fcc_temp_lut = devm_kzalloc(chip->dev,
sizeof(struct single_row_lut), gfp_kernel);
batt_data->pc_temp_ocv_lut = devm_kzalloc(chip->dev,
sizeof(struct pc_temp_ocv_lut), gfp_kernel);
batt_data->rbatt_sf_lut = devm_kzalloc(chip->dev,
sizeof(struct sf_lut), gfp_kernel);
batt_data->ibat_acc_lut = devm_kzalloc(chip->dev,
sizeof(struct ibat_temp_acc_lut), gfp_kernel);
batt_data->max_voltage_uv = -1;
batt_data->cutoff_uv = -1;
batt_data->iterm_ua = -1;
/* * if the alloced luts are 0s, of_batterydata_read_data ignores
* them.
*/rc = of_batterydata_read_data(node, batt_data, battery_id);
if (rc || !batt_data->pc_temp_ocv_lut
|| !batt_data->fcc_temp_lut
|| !batt_data->rbatt_sf_lut
|| !batt_data->ibat_acc_lut)
if (batt_data->pc_temp_ocv_lut == null)
/* check if ibat_acc_lut is valid */
if (!batt_data->ibat_acc_lut->rows)
/* override battery properties if specified in the battery profile */
if (batt_data->max_voltage_uv >= 0)
chip->dt.cfg_max_voltage_uv = batt_data->max_voltage_uv;
if (batt_data->cutoff_uv >= 0)
chip->dt.cfg_v_cutoff_uv = batt_data->cutoff_uv;
chip->batt_data = batt_data;
return 0;
}
linux\android\kernel\drivers\power\batterydata-inte***ce.c
int config_battery_data(struct bms_battery_data *profile)
the_battery->profile = profile;
pr_debug("battery profile set - %s\n",
the_battery->profile->battery_type);
return 0;
}
MTK平台 電池驅動相關
mtk平台 電池驅動 一 相關 路徑 mt6755 android6.0 alps kernel 3.18 drivers misc mediatek include mt plat mt6755 include mach mt battery meter.h alps kernel 3.18 dr...
高通平台Bring up
3.2.amss 部分編譯 主要由以下部分構成 adsp,boot,debug,modem,rpm,trustzone,wcnss,分別根據高通的說明編譯這些模組,不過其中有些模組我們不會改,直接用release的binary檔案就行,比如 debug,rpm,trustzone,wcnss。3.3...
高通平台mipi panel kernel讀包方法
熟悉高通平台mipi panel kernel讀包方法,我想我們可以是的同一客戶要是使用2塊mipi panel的話我想我們可以通過讀取id來下不同序列而不用更換boot.img,還有能否讀id可以說明mipi通訊是否正常。還有我們只需在lk下面讀一次id再對全域性變數賦值通過lk傳遞到kernel...