This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28069M:28069批量 USB 示例使用双数据包缓冲? 如何使用 DMA 修改它?

Guru**** 2578945 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/649567/ccs-tms320f28069m-28069-bulk-usb-example-uses-double-packet-buffering-how-to-modify-it-using-dma

器件型号:TMS320F28069M

工具/软件:Code Composer Studio

我已修改28069 USB_DEVICE_BULK 示例代码以适合我的应用。 我使用它将周期性 ADC 数据(以1MHz 的频率采样)传输到 PC 主机。

但我发现吞吐量大约为5Mbps (在 USB 数据线路上使用示波器测量)、小于全速12Mbps 的一半。

我不确定 USB_DEVICE_BULK 是否正在使用双包缓存? 如果没有,如何修改它?

我认为最大数据包大小固定为64B、因此至少我需要更改此值  

#define DATA_IN_EP_FIFO_SIZE  USB_FIFO_SZ_64

更改为

#define DATA_IN_EP_FIFO_SIZE  USB_FIFO_SZ_128

我需要更改任何其他配置吗?

另一个问题:中断也会影响 USB 吞吐量、因此我认为使用 DMA 可以提高 USB 速度。 有人知道如何做到这一点吗?

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    有关 DMA 的支持、请参阅 USB 库用户指南。

    我担心双数据包缓冲不会有太大帮助。 我们能够在以200MHz 运行的 F2837xD 器件上实现7-8Mbps。 您似乎无法获得更高的吞吐量。 也许 DMA 会有所帮助。

    吞吐量的瓶颈是 C28x 和 USB 库的 MIPS。 USB 库具有许多函数调用、这些函数调用会限制 C28x 进行 USB 通信的性能。 但是、DMA 可能仍然能够提高吞吐量。

    SAL