从CE认证失败到修复:MT6357 PMIC与MT6371充电IC的NTC保护链路深度拆解

张开发
2026/4/18 4:53:12 15 分钟阅读

分享文章

从CE认证失败到修复:MT6357 PMIC与MT6371充电IC的NTC保护链路深度拆解
从CE认证失败到修复MT6357 PMIC与MT6371充电IC的NTC保护链路深度拆解在智能硬件产品开发中电池安全保护机制的设计往往决定了产品能否通过严格的国际认证。CE认证作为进入欧洲市场的强制性要求对电池高低温保护测试有着明确规范当NTC传感器检测到异常温度时系统必须立即停止充电。本文将深入剖析基于MT8766平台搭配MT6357 PMIC和MT6371充电IC的完整NTC保护链路揭示原始设计缺陷的根源并分享我们最终采用的LK层解决方案。1. NTC保护机制与CE认证的核心要求电池温度监测是硬件安全设计的基石。NTC负温度系数热敏电阻作为最常用的温度传感器其阻值随温度升高而降低。在CE认证测试中工程师需要模拟两种极端场景NTC开路模拟电池低温环境阻值无限大NTC短路模拟电池高温环境阻值接近零认证要求系统在这两种情况下都必须立即停止充电。但在MT8766平台的初始设计中我们发现当NTC短路时系统会陷入关机-充电-过热-再关机的死循环完全不符合认证要求。典型故障现象插入适配器后系统开始充电NTC短路导致检测温度60℃系统触发关机流程关机后由于适配器存在再次进入充电模式温度仍超标重复关机...形成死循环关键问题充电使能信号在LK阶段就已激活而温度保护却在Kernel层实现这种时序错位导致了保护失效。2. 硬件信号链的深度解析完整的NTC保护链路涉及多个硬件模块的协同工作。让我们拆解MT8766平台的信号传递路径2.1 传感器输入电路电池NTC电路 VBAT --------[R3(NTC)]--------[R_pullup]---- VREF | | ADC_IN GNDR3为NTC热敏电阻典型值10kΩ25℃上拉电阻R_pullup通常选择100kΩ精度1%MT6357内置12位ADC用于电压采样2.2 MT6357 PMIC的采样流程PMIC通过以下寄存器完成温度检测寄存器组地址功能描述AUXADC_CON00x0100ADC控制寄存器AUXADC_DAT110x014C电池温度ADC结果FGADC_CON10x0D04电流检测控制温度计算流程读取AUXADC_DAT11获取原始ADC值通过公式转换为电压V_ntc (ADC_CODE * VREF) / 4096计算NTC阻值R_ntc R_pullup * (VREF - V_ntc) / V_ntc查表获取对应温度值2.3 MT6371充电控制逻辑充电IC的关键配置寄存器寄存器地址默认值功能CHG_CTRL10x110x1A充电使能控制CHG_CTRL20x120x02充电电流设置致命缺陷硬件设计中CHG_EN引脚默认上拉而MT8766的GPIO_CHG_EN_0上电时为低电平导致充电电路在LK阶段就已激活。3. 原始方案的问题诊断分析kernel中的温度保护代码mtk_power_misc.cstatic int mtk_power_misc_psy_event(struct notifier_block *nb, unsigned long event, void *v) { union power_supply_propval val; psy-get_property(psy, POWER_SUPPLY_PROP_TEMP, val); if (val.intval 600) { // 60℃阈值 sdd-overheat true; wake_up_interruptible(sdd-wait_que); } return NOTIFY_OK; }问题本质响应延迟保护动作需等待Kernel启动完成状态冲突关机充电模式会绕过温度检测默认配置充电使能信号未被安全初始化通过逻辑分析仪捕获的信号时序显示LK阶段 |--GPIO_CHG_EN_0低--|--MT6371充电使能--| Kernel阶段 |--温度检测--|--保护动作(太晚)--|4. LK层解决方案的实现基于安全机制应尽可能靠近硬件层的原则我们选择在LKLittle Kernel阶段实现保护4.1 关键修改点充电使能控制void set_chg_enable(bool enable) { mt_set_gpio_mode(GPIO_CHG_EN_0, GPIO_MODE_00); mt_set_gpio_dir(GPIO_CHG_EN_0, GPIO_DIR_OUT); mt_set_gpio_out(GPIO_CHG_EN_0, enable ? 1 : 0); }温度检测循环void check_tbat_init(void) { int temp; set_chg_enable(false); // 先禁止充电 do { temp force_get_tbat(true); // 强制刷新温度 watchdog_feed(); // 防止看门狗复位 mdelay(500); } while (temp 600); // 60℃阈值 set_chg_enable(true); // 温度正常后恢复充电 }4.2 温度获取优化改进后的ADC采样算法int get_accurate_temp(void) { int adc_val pmic_get_auxadc_value(AUXADC_LIST_BATTEMP); int vbif pmic_get_auxadc_value(AUXADC_LIST_VBIF); int r_ntc (RBAT_PULL_UP_R * adc_val) / max(vbif - adc_val, 1); return BattThermistorConverTemp(r_ntc - BIF_NTC_R); }4.3 方案对比指标Kernel方案LK方案响应速度500-800ms100ms代码复杂度高低认证符合性不确定明确系统影响需修改多个模块仅LK适配功耗控制依赖PMIC状态机直接硬件控制5. 工程实践中的经验总结在批量生产验证中我们还发现了几个需要特别注意的问题NTC选型匹配确保温度-阻值曲线与PMIC的查找表匹配建议公差不超过±3%PCB布局要点- NTC走线远离电源路径至少5mm间距 - 使用guard ring包围ADC输入线路 - 上拉电阻靠近PMIC放置温度补偿参数[battery] temp_comp_offset 3 # 温度补偿偏移量 temp_comp_slope -0.2 # 补偿斜率产测验证流程强制NTC引脚接地模拟短路测量充电电流应10mA恢复开路后充电应自动恢复重复测试100次验证稳定性这个案例充分说明硬件安全设计需要从系统层面考虑信号链的完整性和保护机制的时序关系。将关键保护功能下移到LK层实现不仅解决了CE认证问题还提高了系统的整体可靠性。

更多文章