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.

TMS320C5517: USB support problem.

Part Number: TMS320C5517


Hello everyone,

At our location we are developing a board supporting C5517 DSP, making part of a biomedical device for the neurology market..

DSP Software development is through CCS5, including CSL support c55_csl_3.04, which is the latest version compatible with CCS5.

We found a problem related to USB support of virtual serial COM, which can be observed directly from the CCS example ..\usb\CSL_USB_CdcExample.
We simply modified the project source:

1)coding the PLL setup in the application, and setting it to 100 MHz, instead of setting it by means of the associated GEL file.

2)changing the original call to CSL function “status = CDC_Open(&CDC_AppHandle, &usbConfig);” with the CSL function “status = CDC_OpenFullSpeed(&CDC_AppHandle, &usbConfig);”

Infact our board supports USB Full speed only, as DSP USB controller lines are isolated from USB cable connector by means of the Full/Low Speed USB Digital Isolator ADuM3160: isolation is a MUST issue for biomedical device..

Of course we compiled the CSL library for C5517 support.

This is the problem:

the same board running the same software performs USB enumeration and following virtual COM management regularly on some PC (Hyperterminal test is OK),

on others PC the USB enumeration fails:

  

returning code:

Please note that all PC are identically configured with regard to *.inf files.

 

Example of PC regularly working with our board:

Example of PC NOT regularly working with our board:

Please note that the same WIN 7 version/bit number is working regularly on some PC and is NOT working on others PC, but all working PCs we found have an USB 3 controller.

Through JTAG emulator we could find these results:

CSL USB management is supported by means of a single USB IRQ source, handled by the usb_isr() handler in the csl_usb_cdc_example.c source: as soon the USB host issues a command to the USB such handler at first counts the overall number of IRQ received, and then specific host call type triggering the IRQ.

Some time after USB cable connection we found:

On a working PC

                                      @25 MHz            @50 MHz            @ 100 MHz         @150 MHz

Usb_int_total                    41                           40                           41                           41
Usb_int_reset                   3                              3                              3                              3
Usb_int_resume              0                              0                              0                              0
Usb_int_ep0                      36                           36                           36                           36
Usb_int_ep1in_ count   0                              0                              0                              0
Usb_int_ep2in_ count   0                              0                              0                              0
Usb_int_ep3in_ count   0                              0                              0                              0
Usb_int_suspend             2                              2                              2                              2
Usb_int_disconn              0                              0                              0                              0
Usb_int_conn                   0                              0                              0                              0

On a NOT working PC

                                  @25 MHz            @50 MHz            @ 100 MHz         @150 MHz
Usb_int_total                    34                           39                           40                           40
Usb_int_reset                   2                              3                              3                              3
Usb_int_resume              0                              0                              0                              0
Usb_int_ep0                      32                           34                           34                           34
Usb_int_ep1in_ count   0                              0                              0                              0
Usb_int_ep2in_ count   0                              0                              0                              0
Usb_int_ep3in_ count   0                              0                              0                              0
Usb_int_suspend             2                              2                              2                              2
Usb_int_disconn              0                              0                              0                              0
Usb_int_conn                   0                              0                              0                              0


Moreover we found that even removing the optical isolator, and requesting the original FAST SPEED mode by means of the original fast CDC_Open,

(as for design of an C5515 EVM we have) “wrong” PC will continue to behave badly with our board.

Please note that C5515 EVM we have supports USB (albeit if Fast Speed) works regularly with any sort of PC.

Conclusion:

Please help us to solve/address this problem, or our overall project will come to an end.

Thanks you for your attention.