4.0 KiB
4.0 KiB
CH390 最终结论报告
结论
本轮循环调试的最终结论是:
- 当前工程中的主要软件问题已经完成收敛和清理。
- CH390D 驱动、lwIP
netif、ARP 与 ICMP 基本链路已经在实机上打通。 - 本轮最终根因已确认不是普通软件逻辑错误,而是 CH390D 相关供电滤波电容虚焊,导致供电不稳定。
已完成的软件侧工作
本轮已完成并验证的事项包括:
- 修复 PHY 访问无超时导致的永久卡死风险。
- 修复未初始化 IWDG 句柄刷新导致的 HardFault。
- 清理 CH390 运行时中断屏蔽范围,消除阻塞式 SPI 访问造成的运行时假死。
- 重构 CH390 运行时所有权,避免多层并发触达底层 SPI 路径。
- 在
main()中移除重复 CH390 复位,避免启动阶段额外复位噪声。 - 清理已确认 warning 来源,避免无效变量继续污染构建结果。
- 增加 CH390 identity gate,避免在无效寄存器读回前继续执行默认配置和 PHY 初始化。
- 曾增加 bit-bang 诊断读用于快速隔离问题,该临时调试路径已在当前代码中移除。
实机关键证据
1. MCU 自身正常工作
已验证:
- RTT 正常输出。
- 主循环正常运行。
TIM4心跳正常。- 运行期不再出现此前已修复的 HardFault 和“长时间假死”症状。
2. 最终硬件根因已定位
最终实板排查结果:
- 板载一颗 CH390D 供电相关滤波电容存在虚焊。
- 该问题导致 CH390D 供电不稳定,表现为寄存器读写、链路状态和报文收发在调试过程中不一致。
- 修复硬件后,实机已观察到:
VID=0x1C00、PID=0x9151、REV=0x2B- PHY 寄存器稳定可读
lwIP netif能进入LINK_UP- 设备可接收 ARP request 并发出 ARP reply
- 设备可接收 ICMP Echo Request 并发出 Echo Reply
3. 历史 bit-bang 对照结果(已归档)
在早期调试中,曾绕过 STM32 硬件 SPI 外设、直接用 GPIO 软件时序读取 VIDL/VIDH/PIDL/PIDH/CHIPR,RTT 输出为:
CH390 bitbang VIDL=0xFF VIDH=0xFF PIDL=0xFF PIDH=0xFF CHIPR=0xFF
该历史证据用于定位阶段,当前仅保留结论,不再保留对应代码路径。它说明:
- 在硬件未修复前,单看软件现象会误导排查方向。
- 电源完整性问题会放大为看似“SPI/IRQ/RX/TX 都可疑”的复合症状。
外部参考对结论的支撑
对公开 CH390 / DM9051 实现的对照结果表明:
- CH390 SPI 访问时序、模式选择和 RX SRAM 连续事务仍然值得严格对照参考实现。
- 但本项目最终问题并非“参考实现缺失”,而是硬件供电缺陷放大了调试噪声。
- 外部参考对软件排查有帮助,但不能替代板级供电与焊接检查。
当前最可信判断
最终确认的板级问题为:
- CH390D 供电滤波电容虚焊。
- 该虚焊导致供电稳定性不足,从而引出不稳定的寄存器读写、链路与收发行为。
版本库状态
本轮已创建一个阶段性 checkpoint commit:
1808f99fix: harden CH390 bring-up diagnostics
该提交记录了:
- warning 清理
- 移除重复复位
- CH390 早期 identity gate
- 链路变化稳定等待
推荐的下一步
后续更高价值的工作不再是继续怀疑 CH390 是否“完全不通”,而是:
- 在硬件问题修复后补充长时间稳定性测试。
- 验证 TCP Server / TCP Client 业务流量与桥接逻辑在修复硬件后的行为。
- 保持驱动层日志最小化,仅在重新排障时按需开启详细 RTT。
收尾说明
本轮循环的退出条件已经满足:软件主路径已验证,且硬件根因已定位。
因此当前最合理的结论是:
- CH390D 驱动、lwIP
netif、ARP 和 ICMP 基本链路已在实机打通。 - 本轮真正拦路的不是普通软件逻辑,而是板级供电滤波电容虚焊。
- 后续应在硬件修复后的稳定板卡上继续推进应用层联调与文档收口。