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 bulk usb example uses double-packet buffering? how to modify it using DMA?

Part Number: TMS320F28069M

Tool/software: Code Composer Studio

I have modified the 28069 usb_device_bulk example code to fit into my application. I use it to transfer periodic ADC data (sampling at 1MHz) to PC host.

But I found that the throughput is about 5Mbps (measured with a scope on usb data line), which is less than half the full speed 12Mbps.

I am not sure if the usb_device_bulk is using double-packet buffering? If not, how to modify it?

I think the max packet size is fixed at 64B, so at least I need to change this 

#define DATA_IN_EP_FIFO_SIZE    USB_FIFO_SZ_64

to

#define DATA_IN_EP_FIFO_SIZE    USB_FIFO_SZ_128

Any other configure I need to change?

Another question: Interrupts also affects the USB throughput, so I think using DMA would improve the USB speed. Does anyone know how to do this?

Thanks in advance

Ning

  • Hi Wang,

    Please see the USB Library User Guide for support with the DMA.

    I am afraid the double packet buffering will not help much. We have been able to achieve 7-8Mbps on our F2837xD devices which run at 200MHz. It does not seem like you will be able to get much more throughput. Perhaps the DMA will help.

    The bottleneck for throughput is the MIPS of the C28x and the USBlibrary. The USBlibrary has many function calls which limits the performance of the C28x to do USB communication. DMA may still be able to increase your throughput, however.

    sal