【发布时间】:2011-02-13 21:42:54
【问题描述】:
我正在使用通用 HID 接口在 PIC 18F2550 上实现 USB。我已将 HID 配置文件配置设置为输入和输出都有一个 64 字节的消息。
现在它基本上可以工作了。设备向 Windows 注册 OK。我可以在 PC 上的程序中找到它,并且可以向它发送和接收数据。但问题是——从 PC 到 PIC 的消息被截断为 EP0 端点缓冲区的大小。
在我进一步调试之前,我想在这里澄清一下我对 USB 协议的理解,并检查我是否正确。
假设 EP0 输入缓冲区为 8 个字节。我的理解是PC端会发送一个8字节的控制包。其中有要遵循的数据的字节长度。然后它会发送一个 8 字节的数据包序列,PIC 端必须对每个数据包进行确认。
据我了解,PC端通过查看设备描述符中的最大数据包大小字段知道每个数据包的大小,并将相应的消息分成多个数据包。
在我寻找更多时间查看代码之前,任何人都可以确认这基本上是正确的吗?如果 EP0 缓冲区大小为 8 字节,那么 PC 应该因为我上面提到的配置字段而知道这一点并发送多个数据包?
如果我在 PIC 上设置 64 字节的接收缓冲区,那么我会得到 64 字节的消息,这足以满足我的需要,但我不喜欢不理解为什么它不适用于小缓冲区,并且有一天反正我可能会需要它们。
欢迎任何建议或信息。
【问题讨论】: