Files
lucky-cat/docs/新板充电检测.zh-CN.md
T

71 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 新板 TP4056 充电检测
2026-10-23:本实现替换旧单路充电检测与满电电压推断。
## 接线与状态
新板正式 TP4056 电路的 CHRG# 经 Q7 接 GPIO18,STDBY# 经 Q8 接 GPIO8。
两路默认低有效,3.3V上拉。配置位于 `TQ Cat Configuration -> Board Hardware
Configuration (GPIO)`;GPIO10马达没有接入。
| GPIO18 | GPIO8 | 确认后的领域状态 |
| --- | --- | --- |
| 低 | 高 | charging,充电中 |
| 高 | 低 | full,充满信号有效 |
| 高 | 高 | not_charging,未充电 |
| 低 | 低 | fault,异常组合 |
原理图只能支持接线推断,仍须实测未插电、充电、充满、无电池的实际电平。
两个状态脚不能可靠确定USB存在或电池存在;`full`表示芯片输出的稳定充满信号,
不等于检测到了电池。百分比仍按电压估算,不因满电信号强制改为100%。
## 检测与提示
- 平台只读取原始数字电平和ADC,不解释充电语义。数字输入初始化不依赖ADC校准。
- 领域每100ms检查一次两路组合;连续采样稳定1秒才发布状态。超过250ms未轮询,
丢弃旧稳定假设并重新确认;持续抖动2秒则置未知。读取失败立即置未知。
这是采样去抖,不能证明两个采样点之间没有短脉冲。
- 控制层不注册GPIO边沿中断,复用原有电池任务,无新增任务或定时器。
领域快照同时保留最近读取的有效性和两路有效信号,供状态转换日志诊断;
最近原始输入可能与尚未改变的去抖状态不同。
- 本次运行先确认充电,再确认满电才播放一次满电提示。启动已满、充电后拔线、
异常或读取失败均不播放;后两类还会取消本轮提示资格。重新确认充电可开启下一轮。
- 移除旧的最低满电电压、百分比及30秒推断时间配置;满电不再靠电压推断。
GPIO页新增 `TQ_BATTERY_FULL_GPIO=8`、`TQ_BATTERY_FULL_ACTIVE_LEVEL=0`。
## ADC、低电量和深睡
ADC正常10秒一次,轻待机300秒一次,失败或负载抑制1秒后重试;进入或退出轻待机
立即安排新样本。低压关机确认期间1秒一次。数字信号抖动不加速ADC采样,也不重复
消费旧样本推进关机计数。ADC失败会清空控制层低压确认计数。
原有电量曲线、滤波、负载抑制及阈值保持:低电量≤20%确认3次,≥25%退出;
未判定充电时,电量≤5%且滤波电压≤3.45V确认3次,或最新有效电压≤3.35V确认2次,
进入受控关机。未知/异常不冒充充电,不用来长期屏蔽原有低压保护。
GPIO18仍是低有效深睡唤醒源;GPIO8不作为唤醒源。唤醒保护提供约1.2秒有界轮询窗口,
确认充电或满电,或有效电压≥3.55V后允许继续启动。窗口内调度中断或输入抖动可能
导致状态仍未知,此时按电压判定,不无限等待。
## 验证与实机验收
主机回归入口:
```sh
python3 tools/test_battery_adc_init.py
python3 tools/test_battery_charge_detection.py
```
第一项提取实际平台C函数,验证GPIO18/8联合输入初始化、独立数字读取、ADC1/ADC2、
锁失败、校准失败释放和重试。第二项编译实际领域代码,用可控时钟和GPIO/ADC验证
四种输入组合、启动未知、连续抖动、稳定确认、长采样间隔、读取失败、ADC失败及
负载抑制独立性;并提取实际控制层电池任务,验证ADC节奏、待机切换、启动已满、
充电→满电提示、拔线取消及ADC失败不累计关机确认。
使用AddressSanitizer和UndefinedBehaviorSanitizer。
本次上述两个电池测试与五个显示回归脚本已通过;ESP-IDF 5.5.4新板配置构建通过。
未烧录,尚无本次逻辑的实机电平、提示或深睡验收结果。
实机仍需验证:不插电静置、插拔充电、充满、无电池、扬声器/电机/Wi-Fi并行、低电量
保护、深睡插电唤醒。对照GPIO18/8电平和万用表VBAT;主机测试或构建不能代替这些测量。