Files
STM32F4-Base/Drivers/BSP/CH395F
wandering1 4c0a0af9f8 fix(net): N34 阶段0 零风险清理 9 条(注释债/死码/三处小逻辑门)
纯注释/死码(零行为变更):
- 0-1 pump 注释 50ms→100ms(宏真值源 100U,net_socket.c)
- 0-2 D10 give-up 文案改"retry budget exhausted, pump takes over"
  (旧文案夸大永久失效语义,pump 100ms 仍周期认领重建)
- 0-7 IP 字节序注释更正:set_ip/gw/mask 实为点分十进制序(调用方
  parse_ip_string 数组直传、芯片按首段接受、台架多年实证);
  set_des_ip 补"与 get_remot_ipp 输出同序"往返注(ch395f.h/.c)
- 0-8 Trap 13 注释降级为"未证实历史观察"(对齐 2026-10-11 Trap 13
  复核注,与手册 §5.34 相左):DMA 定容理由改"接收缓冲 2KB 整缓冲
  单读=Trap 25 排空契约形态";net_socket.c 四处引用改写
- 0-9 删死声明:GET_GLOB_INT_STATUS(0x29)/ENTER_SLEEP/EEPROM×3/
  GPIO×2/SPI_BEGIN_DELAY_MS/GINT_STAT_SOCK0..3(全仓零引用核实)

小逻辑(台架冒烟实证):
- 0-3 U12 对称:TCP_LISTEN 失败补 close 两处(net_relisten_locked /
  net_listen_locked)——防芯片 Socket 卡"OPEN 无监听"、下轮 open
  恒返 USE(U12 同源事故形态)
- 0-4 retry_tick 状态门:仅 LISTENING/CLOSED 才重试;已转 ESTABLISHED
  (新会话抢先)清陈旧登记,防 open→close 摧毁活连接(认领口径同 pump)
- 0-5 FUN_PARA 裸 0x08 → CH395F_FUN_PARA_SOCKET_CLOSE(复用既有宏
  (1UL<<3),注释补 §5.52/版本/红线口径;曾重复定义触发 9 警告,
  已并入原宏块)
- 0-6 版本门控:ver<0x46 拒置 bit3 并 [ERR] 留痕(防芯片批次漂移;
  本台架 ≥0x46 行为不变,fun_para 日志改打实际值)

验证:@build 全量重编 0 错 0 警(Code=209580,RW/ZI 不变);@test
PASS(回读无差异);冒烟 n30 0/20、:21 @0ms 20/20、:7003 20/20、
ftp_regression 11/11。

门禁说明:doc-links 工作树 junction 伪影按既定口径 SKIP;mem-budget
分支 .map 漂移同前;cppcheck/coding-standard 手跑 Passed。
2026-10-13 05:54:42 +08:00
..

Drivers/BSP/CH395F/ — CH395F 以太网控制器驱动

CH395F 是 SPI 接口的 10/100M 以太网 MAC+PHY 控制器。本目录是其底层寄存器级驱动, 上层的 BSD Socket 抽象见 ../NET/。

文件一览

文件 作用
ch395f.c/h SPI 命令收发、寄存器读写、芯片初始化、通道/中断管理

关键点

  • SPI 接口:SPI2(PB12 CS / PB13 SCK / PB14 MISO / PB15 MOSI)
  • 每次 SPI 事务必须 ch395f_spi_begin() / ch395f_spi_end() 包裹
  • SPI 分频系数必须为 8(PCB 信号完整性约束,勿"优化"改快)
  • 芯片最多 8 个 socket,本层用事件中断 + 周期轮询驱动
  • PHY 强制 100M 全双工(net_task 中配置)

⚠️ 改本驱动前必读陷阱(Trap Records)

Trap 问题 状态
Trap 21 TC-NET-604 "RX 窗口冻结" 判定为非缺陷(原报告系测试程序自吞数据 + 判读工具误判) ✅ 结案
Trap 22 快速复连丢 CONNECT/DISCONNECT 中断 → 监听静默死亡;修复 = net_reconcile_tick() 周期对账自愈 ✅ 已修
Trap 23 上传中止后首笔复连被静默截断(≤2048B)并误报成功;修复 = 异常释放后复监听隔离排空 ✅ 已修

完整台账与复现配方见 docs/问题记录/CH395F_Trap_Records.md(改驱动前必读)。

相关文档

  • 测试指南:docs/测试说明/CH395F_Test_Guide.md
  • 上层抽象:../NET/README.md
  • 台架探针:MDK-ARM/tcp_reconnect_probe.py、MDK-ARM/ftp_abort_probe.py