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.

TMS320F28386D: USB CDC setting

Part Number: TMS320F28386D
Other Parts Discussed in Thread: C2000WARE

Hi,

We want to implement the USB CDC device reference to the C2000Ware example C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f2838x\examples\c28x\usb\usb_ex1_serial_structs.

Some question:

1. What it the real transmit bit rate in the hardware? 60Hz by AuxPull?  but TRM said full-speed(12Mbps) or low-speed(1.5Mbps)? how to decide?

2. Does USB interrup triggered fix every 1ms? Is it adjustable?

3. Some USB library call Interrupt_disableMaster() to pause all the interrups(in usbddfu_rt.c and usbringbuf.c ). It may pause our higher priority interrupts(such as motion control). Can we not to call Interrupt_disableMaster()? below is our USB interrupt  function.

4. Continue above, why CM not necessary to pause interrupts like CPU( Interrupt_disableMaster() in usbddfu_rt.c and usbringbuf.c )?

Thank you.

  • Hi Frederick,

    I'll request a USB SW expert on our team to comment on most of your questions.

    1. What it the real transmit bit rate in the hardware? 60Hz by AuxPull?  but TRM said full-speed(12Mbps) or low-speed(1.5Mbps)? how to decide?

    In Device mode the F2838x USB operates in full-speed (12 Mbps). In Host mode it can interface with either full-speed (12 Mbps) or low-speed (1.5 Mbps) devices. It'll depend on the what the USB is interfacing with.

    Best,

    Kevin

  • Hi Frederick

    1.  The usb_dev_serial example uses bulk endpoints. Using usb_dev_serial example, the maximum is 128 bytes / ms. 

    We have been able to achieve throughput between 7 and 8 Mbps (875 KB/s - 1 MB/s) using bulk transfers. This is slightly under the full speed maximum of 12Mbps. You can refer the usb_ex9_dev_bulk_throughput for this.

    2.  USB stack is interrupt driven,  Interrupt are fired when data is received and when data is transmitted. 

    3. Interrupt_disableMaster is called in usbddfu_rt.c file since it enters into the DFU mode and control is transferred to the boot loader in preparation for a firmware upgrade from the host. In the usbringbuf.c, it disables and enables the interrupts. This is done to prevent the possibility of corruption of the read index. 

    4. I could not understand your question, can you provide some more details.

    Best Regards

    Siddharth

  • Hi,

    for the 4th question, it called Interrupt_disableMaster only in __TMS320C28XX__, for example below picture.

    why it's not needed in CM?

    Thank you

  • Hi Frederick,

    Will take a look and get back to you 

    Best Regards

    Siddharth