我正在编写代码来了解飞思卡尔Kinetis微控制器上的USB外设 . 我已经设法通过Linux主机上的枚举,我可以使用EP0上的供应商自定义代码发送和接收数据包,与libusb测试程序进行交互 .
看起来我可以在微控制器上配置额外的控制 endpoints (非零 endpoints 号),但我没有看到让libusb发送/接收控制传输到这些 endpoints 的方法 . ( libusb_control_transfer
不需要 endpoints 号,但 libusb_bulk_transfer
和 libusb_interrupt_transfer
确实如此 . )
非零控制 endpoints 是如此不常见或不必要,以至于不值得为它们烦恼吗?有没有办法让libusb执行控制事务到非零 endpoints ?
1 回答
您可以尝试修改异步I / O API的
libusb_transfer
结构中的endpoint
字段 .但如果您的微控制器实际上可以支持非零控制 endpoints ,那将会让我感到惊讶 - 不是那么多 .
实际上,您宁愿使用中断或批量 endpoints . 两者都具有较少的开销 - 允许通过批量传输获得更高的吞吐量(参见例如USB 2.0 SPEC表5-2与表5-9) .