规范中所规定的周转时-8路继电器模块原理图
由主机启动USB总线上的所有事务,之后,设备必须在USB 2.0规范中所规定的周转时间内响应来自主机的任一请求。 USB主机将以这样一种顺序向USB_DR发送请求,即不能将该顺序精确地预测为一个管道,所以不可能为设备控制器准备一个分组让其执行。但是,当考虑端点号和方向时,就可以预测分组的顺序。如果将端点3(发送方向)配置为批量管道,那么我们就能够预知主机将向该端点发送IN请求。该USB_DR按主机请求的预期为每个端点/方向准备分组。让设备控制器准备好发送或接收数据,以响应主机发起的事务的处理被称为“填装(priming)”端点。将在后续整个文档中使用这个术语,以说明USB_DR的操作,所以使用填装可以正确构造DCD。另外需要注意,术语“刷新(flushing)”用于描述清除排队执行的分组的操作。
为了更深入地理解USB设备控制器端点缓冲区的优化设计,可以参考《USB设备控制器端点缓冲区的优化设计》。其中详细讲解了如何在具体应用中进行优化,从而提高传输效率。
16.8.3.3.1填装发送端点将引起设备控制器去取由设备队列头(dQH)指向的事务的设备传输描述符(dTD)。取得dTD之后,将它存储在dQH中,直到设备控制器完成了由dTD描述的传输为止。将dTD存储在dQH中允许设备控制器在收到主机请求时,在dQH开始处取得处理主机请求所需要的运行上下文,而无须沿着链接表走。在设备装入了dTD之后,将分组中的前导数据保存在设备控制器的FIFO中。将这个FIFO分割成数个虚拟通道,这样就可以为任一端点,最多为在设备合成时所配置的最大数量的端。
想要进一步了解设备控制器设计的细节,可以查阅《内嵌8051的USB2.0设备控制器IP设计》,这份文档提供了更多关于设备控制器架构和实现的实际案例和详细说明。
这样,读者不仅能够了解基本的USB传输机制,还可以深入探索更具体的技术实现,获得更加全面的知识。这种互动性阅读体验使得技术文档不再枯燥,而是充满了探索的乐趣!