您好!
在阅读有关器件模式下 USB 控制器的数据表时、我注意到端点分配了4K 的 ram/fifo 以及单缓冲/双缓冲模式。 当总线不忙于数据传输时、我尝试使用批量传输来使用允许的最大可用带宽。 这提高了数据包的吞吐量、因为批量传输每帧可发送超过一个64字节的数据包。 因此、我想使用批量模式、以便在 USB 2.0器件模式下在 MCU 上获得最佳吞吐量。
尽管如此、我还是很担心、并有一些问题。
1.数据表/UG 指出为端点分配的 FIFO 空间为4K。 这是否意味着所有活动端点都将共享该 RAM、或者如果需要、每个端点都可以拥有自己的4K 缓冲器?
2.如18.3.1.2节及其后所述的双缓冲模式意味着只能将2个数据包(2个64字节的块)装载到端点缓冲区中。 这是否意味着带宽限制为每帧发送2个大容量数据包? 这似乎非常糟糕、因为如果帧中有足够的未使用带宽、批量传输的目的是发送(我认为)大约19个数据包? 我觉得我缺少了一些东西、因为这实际上只是2x HID 的吞吐量提高、这非常慢。
3.根据上面的问题#2,是否有办法将多个数据包加载到端点 FIFO 中,以便能够最大程度地利用批量数据包(当然取决于总线)? 我从主机方面的理解是、如果有空间、主机将继续为当前传输获取更多数据包、 并且器件必须确保这些数据包立即可用。 这很重要、因为(我认为)如果有可用空间、MCU 无法中断以获取该帧的额外数据-从我的研究中、似乎其他数据包必须位于 FIFO 中。
非常感谢您的帮助!
谢谢!