【问题标题】:Synopsys USB OTG Controller (2.65a) occasionally truncates isochronous IN in USB device modeSynopsys USB OTG 控制器 (2.65a) 在 USB 设备模式下偶尔会截断同步 IN
【发布时间】:2012-04-26 16:05:14
【问题描述】:

我在设备模式下使用 Synopsys OTG 内核。使用专用于该端点的周期性 FIFO 对等时 IN 高速端点 (USB 2.0) 进行编程,以实现每微帧的最大传输量(3 个 1024 字节的数据包)。它在 99+% 的时间里都有效。但有时传输会被截断。例如,前 1024 个字节将使用 DATA0 PID(而不是正确的 DATA2 PID)进入总线,其余 2048 个字节将不会被发送。由于我已经正确编程了数据包计数、多重计数、最大数据包大小和传输大小,我不确定是什么原因造成的。

显然,这是一个非常具体的问题,我不太希望得到答案,但我认为在黑暗中试一试值得一试。提前致谢。

【问题讨论】:

    标签: embedded usb usb-otg


    【解决方案1】:

    同步传输不保证数据包的传递。因此,如果主机控制器有其他活动传输,它将默默地丢弃同步数据包。如果您需要保证包装交付,您应该使用批量转移(但它不会保证交付时间)。

    等时同步非常适用于需要恒定传送时间但可以丢失一些帧的应用程序,例如声音或视频流。

    规范对总线进行了限制,允许为全速总线上的定期传输(中断和同步)分配不超过 90% 的任何帧。在高速总线上,这个限制减少到不超过 80% 的微帧可以分配给定期传输。 (c)http://www.beyondlogic.org/usbnutshell/usb4.shtml

    【讨论】:

      【解决方案2】:

      回答我自己的问题,以防它可能对其他人有所帮助。这个 OTG 控制器似乎有一个错误,即 TX FIFO 并不总是正确清空。我发现一个成功的解决方法是在每次 TX 之后刷新 FIFO。它很快,截断症状消失了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        • 2022-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多