|
CH32FS IP 的 SETUP 中断触发时,INT_ST 端点字段不总为 0(在 CH32L103 和
CH32V203 上实测约 50% 为 4,来自上一次批量事务的残留)。原代码
USB_SET_RX_CTRL(ep_idx, NAK) 会写错 UEP{ep_idx} 寄存器,导致 EP0
停留在 ACK 状态,Windows 存储栈挂载设备前会卡约 20 秒。
(可能影响所有使用 CH32FS IP 的 MCU,但仅在 CH32L103/CH32V203 上验证)
改为固定 NAK EP0(索引 0),并同时 NAK TX 和 RX。其中 TX NAK 一行对
CH32L103 是必需的,缺少会导致设备枚举失败(Windows 设备管理器 Code 10);
WCH CH32FS IP 的 MCU 官方 EVM 代码也都是同时两行 NAK,且官方 SETUP
处理代码同样固定使用 EP0(索引 0)。
同时在支持列表中加入 CH32L103(使用 USBFS)。CH32V20X 有两个 USB IP:
USBD(用 fsdev,与 F103 相同)和 USBFS(用 ch32fs),已在
port/ch32/README.md 中说明。
|