我仍在努力使 USB 主机应用程序正常运行。 我正在尝试将大量数据传输到我的全速器件。
我正在设置一个管道、并以512字节的工作单元对其进行写入。
//用于发送数据的输出管道。 info.ui32BulkOutPipe = USBHCPipeAlloc (0、 USBHCD_PIPLE_BULK_OUT_DMA、psDevice、PipeCallback); //配置管道以与端点4一起使用。 if (Info.ui32BulkOutPipe!= 0){ int ret = USBHCPDPipeConfig (Info.ui32BulkOutPipe、 64、// uint32_t ui32MaxPayload -在描述符中观察到。 0、// uint32_t ui32Interval 4 // uint32_t ui32TargetEndpoint ); //确保它正常工作... if (ret!= 0){ USBHCPepeFree (Info.ui32BulkOutPipe); Info.ui32BulkOutPipe =-1; }
我看到的是、在随机传输数之后、控制器会发送一个空帧。 这看起来像是到我的器件的传输结束、然后重置链路。
我知道控制器正在将单个帧放到地板上、因为我使用的是包含数据包编号的示例数据文件:
前6个字节是帧编号(ASCII)。 最后一次成功的传输是帧000165。 帧000166未发送。 下一个要输出的帧是000167。
以下是我目前为止能够演示的内容:
- 如果没有 DMA、就不会发生此故障。 如果我没有配置管道、我可以进行一次大传输、而不会出现错误。
- 我可以进行大量64k 的传输、而不会出现错误。
- 故障与整个逻辑传输(512字节)不一致。
-
USBSpeedGet ()返回 USB_undef_speed
- 我的器件的 A0版本上有 USB 勘误表。 我在 A2上运行。
这是发生故障后 USB 控制器的寄存器转储。
端点1配置看起来正确-全速、批量模式(寄存器0x110-0x11F)
4005:0000 00 60 00 00 FF 00 FE 00 FF E1 01 00 00 .`… ~………………
4005:0010 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 06…
4005:0020 01 00 00 D1 00 00 00 2C 00 00 2C 00 00 00 00 00 00 00 00 ........ 一.一.
4005:0030 2C 00 00 2C 00 00 00 00 2C 00 00 00 2C 00 00 00 00 I..I...
4005:0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(笑声)
4005:0060 19 00 00 00 00 00 00 00 00 00 00 00 00 05 0C 00 00…
4005:0070 00 00 00 00 00 00 00 00 77 8A 5C 3C 80 77 72 00… w\<.w.
4005:0080 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(笑声)
4005:0100 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 06…
4005:0110 40 00 03 80 40 00 00 E8 E0 1F A4 00 A1 00 00 77 @……@…h`…$…………
4005:0120 00 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 77… `… W
4005:0130 00 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 77… `… W
4005:0140 00 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 77… `… W
4005:0150 00 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 77… `… W
4005:0160 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 77… `… W
4005:0170 00 00 00 00 00 00 00 00 E0 1F 00 00 00 00 00 00 00 AA ........ `… *
4005:0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(笑声)
4005:0330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4005:0340 00 00 00 74 40 E6 05 00 00 00 00 00 00 00 00 00 00 00 00 00……@f…
4005:0350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(笑声)
4005:0410 01 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00
4005:0420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4005:0430 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00