71 lines
4.0 KiB
Markdown
71 lines
4.0 KiB
Markdown
# 新板 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;主机测试或构建不能代替这些测量。
|