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/CCSTUDIO: C5517 USB D+ pullup resistor

Part Number: CCSTUDIO

Tool/software: Code Composer Studio

Hi there,

I need to use the USB (Full speed) with C5517.

I notice that on the EVM schematics DP and DM lines are directly connected from the DSP to the USB connector. The USB enumeration require a 1.5k pullup resistor for the speed recognition: how is it handled by the C5517? I couldn't find a register for the configuration of on-chip pullup resistor selection releted to USB_DP/USB_DM. Do I need to add an external pullup resistor or it is built-in on the C5517 chip?

Thank you

  • I've forwarded your query to the hardware design team. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • Hi Stefano,

    The C55xx (C5505/15/17/35/45) USB module is compliant to USB2.0 spec (refer to usb.org).

    The USB 2.0 spec states that all High-speed devices must first enumerate as a full-speed device, then renegotiate as a High-speed device. During Full-speed enumeration, the transceiver must have an internal pull-up to signal to the host it is full-speed.

    After enumerating as a full-speed device, the USB device waits for a reset signal from the host, at which point it would typically enumerate as a high-speed device.

    However, the C55xx USB module has a High Speed enable (HSEN) bit in the POWER register. When set, the USB controller will negotiate for high-speed. If not set, the device will only operate in full-speed mode.

    We have software examples of the C55xx USB module enumerating as a full-speed device instead of a high-speed device in the Chip Support Library (C55XCSL-LOWPOWER): http://www.ti.com/tool/sprc133

    Refer to the example under ccs_v6.x_examples\usb\CSL_USB_MSC_fullSpeedExample\csl_usb_msc_fullspeed_example.c. This mass storage class example calls MSC_OpenFullspeed that calls USB_setFullSpeedMode.

    The CSL routine USB_setFullSpeedMode simply sets the HSEN bit in the FADDR_POWER register to false. This occurs after initial enumeration as a full-speed device, and after the host issues a reset to the device. The result is a full-speed USB connection that uses single-ended signalling and a max bit rate of 12Mbps (instead of the 480 Mb/s bit rate achievable with differential signalling in high-speed mode).

    Since we normally operate the C55xx in High-speed, we must not implement the pull-up resistor on the PCB or the USB host would never be able to enumerate as a high-speed device after first enumerating as full-speed. We cannot even tolerate a resistor that we do not populate, since the traces to the resistor act as stubs which adversely affect the differential pair signalling. I suppose if you always intend on limiting the device to full-speed, you could get away with an external pull-up resistor on the PCB.

    See also Chapter 17 Universal Serial Bus (USB) Controller in the C5517 Technical Reference Manual: http://www.ti.com/lit/ug/spruh16b/spruh16b.pdf

    Hope this helps,
    Mark

  • Thank you Mark, you have been really helpful!

    My application need the USB to be isolated. We were not able to find a USB Digital Isolator that operates at High speed, so this is why I'm working with Full speed USB. We choosed ADuM3160. Do you have a High speed USB Digital Isolator to suggest us?

    CSL USB CDC example works fine using  CDC_OpenFullspeed. I then created a project with DSP Bios  that simply set system clock to 100MHz and open the USB CDC module. I notice that the USB enumeration sometime (apparently random) works and sometime doesn't. I both configured usb_isr following the CSL example and with the .tcf: the usb_isr is handled.

    compiler version v4.4.1

    DSP/Bios version: 5.42.2.10

    CCS5

    C5517 

    Are there any examples or guidelines on using the CSL USB on a DSP-Bios  project?

    Thank you