TI E2E Community
Digital Signal Processors (DSP)
C5000 Ultra Low Power DSP
C5000 Ultra Low Power DSP Forum
TMDX5515EZDSP, CSL_USB_CdcExample_Out - can't open COM port
Hello. I use 5515 EZDSP with Code Composer Studio Ver. 4.1.02002 from the disk from the box and TMS320C55XXCSL-LOWPWR-2.50.00.00. I built and started CSL_USB_CdcExample_Out in Release configuration. I got C5515 CDC ACM device (COM11), but HyperTerminal says that it can't open this COM port. Can anybody help me to solve this problem?
This connection issue is on the Windows side. Have you verified that COM11 is the correct Port within your Windows Device Manager?
HyperTerminal cannot open this COM port because it either does not exist or it is being used by another application.
Thank You,Michael RisleyTexas Instruments
No, everything is ok on the Windows side, COM port exists and not used by another application.
I can print something from CSL_CDC_REQUEST_SET_LINE_CODING and CSL_CDC_REQUEST_GET_LINE_CODING cases of "csl_cdc.c" when HyperTerminal try to open COM port. I see that Windows makes 4 CSL_CDC_REQUEST_GET_LINE_CODING requests, then 1 CSL_CDC_REQUEST_SET_LINE_CODING request and then 2 CSL_CDC_REQUEST_GET_LINE_CODING requests. But Windows gets wrong information from DSP in answer on CSL_CDC_REQUEST_GET_LINE_CODING requests so it tells to HyperTerminal that it can't open COM port.
I can also see that DSP gets line coding information from wrong fields in CSL_CDC_REQUEST_SET_LINE_CODING case.
Were you able to install the C5515_CDC_ACM.inf file successfully?
Yes, I installed C5515_CDC_ACM.inf file successfully.
The problem is in getting SET LINE CODING request and answering on it. Sometimes, but hardly ever, DSP gets this request properly and answers to Windows properly.
Handling of this request is in case CSL_CDC_REQUEST_SET_LINE_CODING in file "csl_cdc.c".
I added printf of usbSetup.bmRequestType, usbSetup.bRequest, usbSetup.wValue, usbSetup.wIndex, usbSetup.wLength into this case in DSP program. Then I try to open this port on Windows as 9600, 8N1. Usually DSP prints 0xa1, 0x21, 0x0, 0x0, 0x7, but it is next request GET LINE CODING, it is not data from SET LINE CODING request. Sometimes I can see 0x80, 0x25, 0x0, 0x0, 0x6308. It is right data, 9600, 8N1, which must be after SET LINE CODING request. But it happens hardly ever so Windows can't set line coding.
I was able to get this test echoing on my system. Below are the steps I took:
I verified this with both HyperTerminal and TeraTerm. Hopefully these steps will help you pinpoint the issue. Let me know if this works.
I tried to do these steps. In my sourses "#define C5515_EVM" is on line 159, not 157, so maybe you have different files.
One more problem: it works only if I build Release configuration of library and CDC test. If I build Debug configuration and run it, I get unknown USB device with PID 0 and VID 0 on Windows instead of "C5515 CDC ACM device".
I still can't open C5515 CDC ACM device (COM11) on my desktop computer, but if I connect J1 to laptop, I can open C5515 CDC ACM device COM port there with HyperTerminal and get echo back on typing.
My desktop computer and laptop have the same OSs - Win XP SP3, but laptop is much slower. I think it is the reason why it works. Laptop built on Celeron M 1500MHz CPU, desktop on Core 2 Duo E8400 @ 3.00GHz. So I think if you try to connect J1 to faster computer you will have the same problems.
It also started to work on my desktop after I disabled USB2.0 in BIOS. So something wrong happens in CSL_CDC_REQUEST_SET_LINE_CODING case in file "csl_cdc.c" when Windows computer works fast.
It may be possible that we are using different versions. I am running v2.10 of the C55XCSL_LOWPOWER library. http://focus.ti.com/docs/toolsw/folders/print/sprc133.html
Interesting that it works fine on your laptop. I did the test on a laptop, XPsp3 Core2. Its a long shot, but have you tried another terminal program, such as TeraTerm?
I wanted to try Teraterm, but it suppotrs only COM1-COM4, I can't assign such numbers to "C5515 CDC ACM device". Maybe my Teraterm is too old.
But I don't think another terminal program will work with this COM port because terminal program doesn't know anything about USB. Also I wrote that HyperTerm works on my desktop when USB works slowly, in USB 1.1 mode.
TeraTerm will support everything HyperTerm will. Regardless if it is USB - it should show up on the list because the driver configures it as a COM device. My "c5515 CDC ACM device" was configured for COM41 on my laptop, and it worked with both TT & HT, USB2.0. I have TeraTerm v4.63, and I think 4.7 is out now. I'm unsure why you are seeing success when running USB slowly on your desktop. I will have to contact others and look into that.
I can't try new Tereterm now because I'm at home. Here is evening. I'll try it tomorrow morning.
If you have a computer with CPU 3GHz or more somewhere near, please try to connect J1 to it.
I tried new TeraTerm 4.70. It opens my COM11 and echo test works with it.
But I analized USB exchange using Device Monitoring Studio. Setting line parameters in case of TeraTerm also goes wrong but Teraterm doesn't worry about it, so it works.
This is wrong part of scenario: Host sends Set Line Coding request (0x20) with data "80 25 00 00 00 00 07". Device (DSP) answers with Status 0xc0000004(don't know what does it mean, but good status - 0x00000000). Then host sends Get Line Coding request (0x21) and gets answer with data "A1 21 00 00 00 00 07". It is wrong answer, because device has to send "80 25 00 00 00 00 07" back.
000018: Class-Specific Request (DOWN), 11.08.2011 17:56:24.562 +0.0Destination: Interface, Index 0Reserved Bits: 0Request: 0x20Value: 0x0Send 0x7 bytes to the device
80 25 00 00 00 00 07
000019: Control Transfer (UP), 11.08.2011 17:56:24.562 +0.0. Status: 0xc0000004Pipe Handle: 0x899254e8
Setup Packet 21 20 00 00 00 00 07 00 ! ......Recipient: InterfaceRequest Type: ClassDirection: Host->DeviceRequest: 0x20 (Unknown)Value: 0x0Index: 0x0Length: 0x7
000020: Class-Specific Request (DOWN), 11.08.2011 17:56:24.562 +0.0Destination: Interface, Index 0Reserved Bits: 0Request: 0x21Value: 0x0Get 0x7 bytes from the device
000021: Control Transfer (UP), 11.08.2011 17:56:24.562 +0.0. Status: 0x00000000Pipe Handle: 0x899254e8
A1 21 00 00 00 00 07 Setup Packet A1 21 00 00 00 00 07 00 Recipient: InterfaceRequest Type: ClassDirection: Device->HostRequest: 0x21 (Unknown)Value: 0x0Index: 0x0Length: 0x7
There are a few things can make the example code went wrong:
1. The Code Generation Tool (CGT) version: Please make sure your CGT is 4.3.6 and above. We have seen some issues with USB on CGT 4.3.5.
2. Make sure #define CHIP_C5505_C5515 is there.
3. Make sure J1 is connected to your PC USB port too. In fact, J2 is for power and emulation only, while J2 is the USB connection.
I have tested the USB CDC example under CSL 2.50 on C5515 eZdsp v2, Both Debug and Release work fine with HyperTerminal (57600baud, 8-N-1, no autoflow control) in WinXP.
Where I can download CGT?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.