mtk charger GM3架构简介

news/2024/11/19 6:43:30/

在这里插入图片描述

1、高低温停充配置:
关于电池60度的时候,有2个地方:
1.重启:thermal机制。一会给贵司修改方法文档
2.关机:kernel的代码。位置在:
kernel-/drivers/power/supply/mediatek/battery/mtk_power_misc.c
mtk_power_misc_psy_event(
{
if (tmp >= BATTERY_SHUTDOWN_TEMPERATURE) {
bm_err(
“battery temperature >= %d,shutdown”,
tmp);
kernel_power_off();
}
}
修改:mtk_battery_internal.h中的:
#define BATTERY_SHUTDOWN_TEMPERATURE 60
即可。

另外,平台代码上默认检测最高温度为60度(软件上),60度以上都判断为60度。
若是贵司要修改的话,也请修改相应的温度获取方式。
修改方法如下:
贵司先看自己用的是哪个table,软件上使用哪个版本,是定义在:
/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6763/include/mach/mtk_battery_table.h
#define BAT_NTC_10 1 //0表示不使用,1为使用。注意2选1,一个是1另一个要改为0
#define BAT_NTC_47 0
看定义是使用47K还是10K热敏电阻:10/47表示的是,在25℃的时候,电阻的阻值,即47KΩ或者10kΩ
对于table表:
/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6763/include/mach/mtk_battery_table.h:
#if (BAT_NTC_47 == 1)
struct FUELGAUGE_TEMPERATURE Fg_Temperature_Table[21] = {
{-40, 1747920},// 左边是温度(摄氏度),右边是阻值(单位:10^-3 kΩ)
修改NTC对应温度的方法有2种(2选1):
1.将table表,还是保持21个,将内容修改,让其覆盖范围达到自己的温度范围。但是会影响精度。
2.增加table长度,排序仍旧是0对应最低温度,然后每个1度排序。
修改最大长度对应:
1)
FUELGAUGE_TEMPERATURE Fg_Temperature_Table[A] ={} //这个A是定义,从1开始计数数,但是使用的时候是用0开始计数。这里记为
2)
/kernel-4.4/drivers/power/mediatek/battery/mtk_battery.c
int BattThermistorConverTemp(int Res)
{

if (Res >= Fg_Temperature_Table[0].TemperatureR) {
TBatt_Value = -40; //修改为最低温度
} else if (Res <= Fg_Temperature_Table[20].TemperatureR) {// 20改为:A-1
TBatt_Value = 60; //修改为最高温度

}
(不论是否使用bif,最后都用这个函数,若用Bif,则在之前做了处理。)

2、充电超时保护机制:
mtk_switch_charging.c
在软件发现充电时间超过12h还没充满的话,就会判断超时进而停止充电。由于USB充电电流一般不会设置太大,在跑CTS的情况下是有可能发生这种问题的

3、低温停充 :
define BAT_LOW_TEMP_PROTECT_ENABLE 需要打开

4、电池充满百分比:
1.若是贵司想报battery full的时候,UISOC要达到100%的话,修改如下值:
1)方法1:
g_FG_PSEUDO100_T0 ,修改到98或者97,即报full最小SOC之下 。
这个参数的意思是, 当SOC为该值时,对应UISOC的100%。
这样会导致UISOC100%的时候,充电还未报full。
2)方法2:
或者修改该值:CHARGE_TRACKING_TIME (单位s)
意思是说,当报full的时候,每个这个值的时间,会去涨 1%UISOC。
2.低电的时候%时间持续过短: DISCHARGE_TRACKING_TIME (单位s)
这个的值,意思是过这个时间才会去减1%UISOC。
贵司这种低电掉电情况是,电量过低触发low track,直接将UISOC降到1%然后触发关机。而这个值就是每次减UISOC 1%的时间间隔。
这种修改会导致一个问题,就是可能会让电量下降很低才触发关机。这样下次开机的充电时间可能会很久。

5、power_path是否支持:
ISENSE/BATSNS硬件连接是否和对应平台参考设计相同
使用的charger IC support power path则使用ISENSE测量VBAT,反之使用BATSNS;
如下图原理图所示:VBAT----ISENSE ,VSYS----BATSNS,说明支持power_path_support

在这里插入图片描述

abcct限流:
modem/mcu/pcore/custom/driver/drv/misc_drv/_Default_BB/
Adaptive Battery Charger Current Throttle(PID算法控制)
abcct默认是绑在tsAp上的,并非是默认绑在battery上的。
根据当前温度与目标温度的差值计算下一时刻要调节的充电电流,直到当前温度=目标温度
限流手段:
1.先限制Charging current limit(进电池电流)
主要控制手段(max chr current limit ==> min chr current limit)
2.Input current limit(充电线cable 的电流)
需要以下两个条件满足
1.Input_current_limit_on 有開啟 (設為1)
2.min chr current limit 需設置0 (可以限制到0) 且已經限制到0

老平台:
vendor/mediatek/proprietary/bootable/bootloader/lk/target/U115AA/include/target/cust_battery.h 平台电压电流部分配置
在这里插入图片描述

vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6739/src/drivers/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

drivers/power/supply/mediatek/battery/mtk_power_misc.c

在这里插入图片描述


http://www.ppmy.cn/news/404554.html

相关文章

AM335x 通过GPMC 与 FPGA 之间通信

AM335x 是一款A8的CPU &#xff0c;其片上的资源是有限的&#xff0c;有时候我们需要外扩的功能有很多&#xff0c;比如 16个串口&#xff0c;4个LAN&#xff0c;IRIG&#xff0c;IO设备等。但是CPU 直接出来的 UART 和 LAN口不够用呀&#xff0c;这时候我们可以直接通过 am335…

STM32驱动AD7366-5/AD7367-5芯片

目录 芯片介绍 芯片引脚定义 芯片电路图 根据时序写驱动代码 运行环境 时序与代码讲解 完整的代码 在实验室项目上&#xff0c;根据需求最终选用到了这款AD7367-5&#xff0c;在此记录一下这款AD芯片的驱动调试过程。目前仅用到了AD7367-5的第一组通道&#xff08;A1和B1…

一、正确安装 Keras TensorFlow 并调用 TensorBoard 绘制训练曲线

本博客主要内容为使用Keras实例化深度学习模型&#xff0c;并对在这个过程中遇到的问题进行总结&#xff0c;主要参考《Keras中文文档》&#xff0c;在配置环境、安装软件以及调试的过程中遇到的各种问题主要参考各个网页&#xff0c;这些网页会在必要时给出参考。 如本篇博客没…

ac3165无线网卡驱动linux,英特尔ac3165驱动下载

ac3165网卡驱动是支持英特尔双频带Wireless-AC3165无线网卡的安装程序&#xff0c;让用户的台式电脑也可以接受wifi&#xff0c;并且不卡顿的玩游戏和浏览网页&#xff0c;低延迟、高速率&#xff0c;同插网线一样的网速效果&#xff0c;有该产品的可以试试&#xff0c;安装傻瓜…

关于GTPU

GTP协议 GTP&#xff08;GPRS隧道协议(GPRS Tunneling Protocol)&#xff09;&#xff0c;可以分解成三种独立的协议&#xff0c;GTP-C、GTP-U及GTP。GTP-U用于在GPRS核心网内&#xff0c;无线接入网与核心网之间传送用户数据。 GTP可以用在UDP或TCP上&#xff0c;GTP v1仅用于…

python-文件操作指针

文件操作指针 文章目录 文件操作指针1. 文件指针的概念和作用&#xff1a;2. 移动文件指针的位置&#xff1a;3. 获取当前文件指针的位置&#xff1a;4. 文件指针的影响&#xff1a; 文件操作指针是在进行文件读写操作时用于标识当前位置的一个概念。它记录了文件中读写操作将要…

【OpenMMLab AI实战营二期笔记】第十天 底层视觉与MMEditing

1.图像超分辨率 1.1 什么是图像超分辨率&#xff1f; 根据从低分辨率图像重构高分辨率图像 1.2 目标&#xff1a; 提高图像的分辨率高分图像符合低分图像的内容恢复图像的细节、产生真实的内容 1.3 应用&#xff1a; 经典游戏高清重制动画高清重制照片修复节约传输高清图…

LuaJIT Bytecode结构布局

一、Bytecode的存储结构 LuaJIT的Bytecode位宽为32位&#xff0c;在parse阶段用结构体BCInsLine表示&#xff0c;ins表示32位长的字字节码指令&#xff0c;line表示字节码的行号&#xff1a; typedef struct BCInsLine {BCIns ins; /* Bytecode instruction. */BC…