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.

TMS320F28379D: USB Full Speed Operation and Throughput

Part Number: TMS320F28379D

Customer  been experimenting with the Delfino USB interface on the TMS320F28379D control card.

 

They slightly modified the usb_dev_bulk_cpu01 example to just send 256 bytes per a single request.

They wrote a Python program to send/receive data etc., and have achieved only about 60 kBps throughput which is only about 500kbps.

This would seem inappropriate to a 2.0 full-speed device.  

 

Further, the descriptor dump from their host program shows this as a 1.1 interface and not a 2.0:

 

DEVICE ID 1cbe:0003 on Bus 001 Address 037 =================

bLength                :   0x12 (18 bytes)

bDescriptorType        :    0x1 Device

bcdUSB                 :  0x110 USB 1.1

bDeviceClass           :   0xff Vendor-specific

bDeviceSubClass        :    0x0

bDeviceProtocol        :    0x0

bMaxPacketSize0        :   0x40 (64 bytes)

idVendor               : 0x1cbe

idProduct              : 0x0003

bcdDevice              :  0x100 Device 1.0

iManufacturer          :    0x1 Texas Instruments

iProduct               :    0x2 Generic Bulk Device

iSerialNumber          :    0x3 12345678

bNumConfigurations     :    0x1

 

It seems the library is responsible for this information, and cannot find any reference to actually building the tDeviceDescriptor descriptor in the example code and support files, whereas the usblib.lib does contain “tDeviceDescriptor“ within the binary image.

 

They are not sure whether this is or is not a problem, but it’s the only clue they have so far.

  • Hi Lawrence,

    You will find the descriptors in the usb_bulk_structs.c file.

    The example does support USB 2.0 as a Full Speed device.

    We have been able to achieve 7-8 Mbps using a Visual Studio project on a Windows PC. The limiting factor in that case was not the CPU utilization or USB module on the device, but rather the DATA IN requests from the PC.

    If you have a USB analyzer you can see if the host is requesting the data fast enough to get the throughput you need. The throughput issue is likely a symptom of the Python program and USB host.

    Regards,
    sal
  • You can see this thread for the examples which we used as a throughput test.

    e2e.ti.com/.../2413813

    Regards,
    sal