|
我正在使用 STM32F407 调试 USB 通信。设备可以被电脑正常枚举识别,批量收发数据基础功能可用。 我编写了一段测试逻辑: 单片机收到 5 字节字符串后,向上位机回复 60 字节数据。 发送端核心寄存器操作代码: dieptsiz1.d32 = USB.INEP_REGS[1]->DIEPTSIZ; dieptsiz1.b.xfrsiz = 60; dieptsiz1.b.pktcnt = 1; USB.INEP_REGS[1]->DIEPTSIZ = dieptsiz1.d32; USB.INEP_REGS[1]->DIEPCTL |= DIEPCTLx_EPENA|DIEPCTLx_CNAK; for (uint32_t i = 0; i < 15; i++){ USB.DFIFO[1] = USB_buffer[i]; } IN 端点 1 传输完成中断触发时,我会执行: USB.INEP_REGS[1]->DIEPCTL |= DIEPCTLx_SNAK; 目的是关闭 NAK、规避 TXFIFO 为空时主机发来 IN 令牌触发异常中断。 程序可以稳定收发 5~10 轮之后就会异常: 单片机不再正常发送 60 字节数据,转而向主机回复STALL PID; 电脑端捕获状态码:0xc0000004。 |
USB_WritePacket 陷入无限循环
STM32F405RG VCP 报错This device cannot start (code 10)
STM32F401RBT6 USB 大容量存储设备问题
USB OTG 主机枚举问题
STM32F042 在启动文件内跳转至 USB DFU Bootloader
B-L475E-IOT01A 无法枚举为 USB DFU 设备
USBX Audio Class frame done 不触发回调
STM3210C-EVAL USB 官方例程调试报错
STM32F103 全速 USB 大容量存储方案咨询
STM32H573ZI 全速 USB
微信公众号
手机版