主题中讨论的其他器件:EK-TM4C1294XL、 TMS320VC5506
我正在使用仅主机模式(eUSBModeForceHost)下的 USB 库来开发 EK-TM4C1294XL Connected LaunchPad。 我有两个相同的端点、#1和#2、但我看到 E#1上的数据每45到49 ms 损坏一次、并且始终在386字节数据包的256字节附近。 我使用的是 SW-TM4C-2.1.0.12573、因为这是我多年前开始的。
我的 USB 连接的另一端是 TMS320VC5506、它具有一个具有非默认配置的自定义类、其中包含两个端点、#1和#2。 这两个端点都标记了388字节的长度、并且始终准确传输386字节(在976.5625Hz 数据更新速率低于1000Hz USB 帧速率的罕见情况下为0字节)。 TMS320固件已经过验证、我还连接了 Total Phase Beagle USB 480功率分析器、以确认数据在线路上没有损坏。 等时数据包具有384字节的数据、后跟16位序列号、这使我能够将 Beagle USB 分析器上看到的数据包与 ARM 芯片上看到的数据包进行匹配。 器件为全速、定制类协议至少使用75%的可用带宽。
我的 TM4C1294代码首先调度两个端点、然后在每个数据包到达时调度回调中的持续流式传输。 这似乎对端点2来说是完美的、但可能存在时间问题。 查看我的序列号、坏数据包的序列号是45个、有时是49个。 我有一对用于两个端点流的循环缓冲器、它们是4个数据包的深度、因此同一存储器每4个数据包重复使用一次。 如果我的固件中存在任何内存损坏错误、似乎应该比每45个或每45个缓冲对(即2个端点各45个数据包)发生一次更频繁。
TM4C USB 外设在等时流模式下的验证效果如何? 有多少人使用多个端点? 有多少人的数据包大小超过256字节? 我不确定去哪里看、但这些细节似乎都是我所处的独特情况。 我相信大家都使用这个芯片来进行音频流处理、但几个大型等时端点会消耗几乎所有的全速带宽吗?
我已经查看了勘误表、没有发现会影响这一点的 USB 问题。 USB 库中是否有记录的错误修复?
USB 库或 USB 外设是否可能未正确报告0字节数据包? 当回调中返回的大小为0时、我始终跳过提前循环队列指针。 如果我的数学是正确的、976.5625Hz 的更新速率应该会每41或42帧出现一次空数据包、这似乎与45到49个序列数字的错误速率非常接近。
Brian Willoughby
Madrona Labs