LAN9252 电源管理台 EtherCAT ESC · D1/D2/D3 休眠 · DCU_APP ≥1.6.23
连接中… IP --
🌙 进入低功耗档
D1 系统时钟关、晶振+PLL 保持(有自动唤醒路径)。
D2 PLL 请求关(两 PHY 已掉电才真关)。
D3 晶振/PLL 全关,最省电、只能手动唤醒(二次确认)。
休眠期间 EtherCAT 中断、主站 wkc 报错属预期;ESC 寄存器配置全保留,唤醒后自清睡眠位。 D3 进入前固件自动掉电两 PHY,唤醒后自动恢复(自协商需数秒)。
🛟 恢复链 —— 为什么睡不死
  • action 34 软唤醒(正常路径,≤2ms)
  • NRST 硬复位:PB10 拉低 60ms 释放,等效上电复位,覆盖 D3 睡死/HBI 假死等一切软件状态
  • GD32 断电重启:复位期间 PB10 浮空由 R44 上拉维持,重启后固件 hardwareReset() 自动重走受控复位
可靠性:ESP32↔GD32 的 SPI 链路与 LAN9252 完全解耦(独立外设/中断),芯片睡得再深 0xA2 照样送达 GD32——恢复失败的唯一前提是 ESP32 和 GD32 同时失能,那已不是休眠问题。
NRST 复位会清掉 SSC 已配置的芯片状态,EtherCAT 需主站重新走状态机。
📋 status 字节判读(recv 首字节)
位/值含义
bit0READY:1=D0 且 PLL 稳定
bit1PM_SLEEP_EN:1=低功耗档
bit3:2PM_MODE 寄存器位(仅 SLEEP_EN=1 时有效;未睡眠可能残留旧档)
0xEE无效 action
0xE1HBI 未就绪(勿操作电源)
唤醒 1/0成功 / 10ms 超时
🔋 芯片电源状态 仅手动读状态
🌙 芯片处于低功耗档 —— EtherCAT 通信已中断,点「手动唤醒」恢复
READY--
SLEEP_EN--
电源档--
原始字节--
唤醒轮询上限 10ms(手册标称 ≤2ms)。超时多半是芯片不在睡眠或 HBI 异常——以「读状态」为准。
📜 操作日志