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.

6748 USB Full speed

Hi,

I am using 6748 USB Startware. By default, it enumerated to "HI SPEED". I like to set default enumeration mode to "FULL SPEED". How can I do it ?

Thanks

Jayesh

  • Hi all,

    Any comments about this query?

    Thanks in advance.

    B.R.

    OC

  • Copy usbphyGS50.c (\C6748_StarterWare_1_20_04_01\drivers\usbphyGS50.c) to your project folder, and add this line at the top of the file.

    #define USB_MODE_FULLSPEED

    And then, this line of the file drops HSEN (High-Speed ENable) bit on the USB POWER register.

    void UsbPhyOn(unsigned int ulIndex)
    
    {
    
     ...
    
    #ifdef USB_MODE_FULLSPEED
    
       HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;
    
    #endif /* USB_MODE_HS_DISABLE  */
    
    }

    It forces the device into full-speed.

    Tsuneo

  • Moving this thread to the C67x forum.

  • Dear OC,
    Have you tried the "Tsuneo" suggestion ?
    You can also do the same in the same file and rebuild the drivers project and then rebuild the USB example.
  • Hi Tsuneo,
    Thanks so much for your advice.
    I will try it and let you know the result.

    B.R.
    OC
  • Hi Jayesh,

    Jayesh said:
    I am using 6748 USB Startware. By default, it enumerated to "HI SPEED". I like to set default enumeration mode to "FULL SPEED". How can I do it ?


    The C6748 device has both USB 1.1 and USB 2.0 module. Which module you used ? Because, if it is USB 1.1, you will get Full speed and with USB 2.0, you will get high speed.

    To which mode you want to operate? Host or peripheral mode? If it is a host mode, the speed can be determined and set according to the speed supported by the peripheral device connected to the host.
    I mean, If C6748 is a host and we are connecting a USB 2.0 compatible device, then the speed will be high speed. The speed settings cannot be changed on the host side to full speed. It is fixed depending on the device speed.

    If C6748 is configured as a peripheral device, it complies with the USB 2.0 standard for high-speed (480 Mbps) and
    full-speed (12 Mbps) operation with a host.
    Using the "power management register" you can set the module to operate in full speed. ( particularly by ensuring that the HSEN is not set )

  • Hi Shankari,

    Shankari G said:
    To which mode you want to operate? Host or peripheral mode?

    Either host or peripheral, above suggestion works. And then, I didn't ask this question.

    Shankari G said:
    The speed settings cannot be changed on the host side to full speed. It is fixed depending on the device speed.

    It's wrong understanding of USB2.0 spec.
    By the USB2.0 spec, all of high-speed devices should support full-speed counter part.

    5.3.1.1 Endpoint Zero Requirements (usb_20.pdf)
    A USB device that is capable of operating at high-speed must have a minimum level of support for
    operating at full-speed. When the device is attached to a hub operating in full-speed, the device must:
    • Be able to reset successfully at full-speed
    • Respond successfully to standard requests: set_address, set_configuration, get_descriptor for device and configuration descriptors, and return appropriate information
    The high-speed device may or may not be able to support its intended functionality when operating at fullspeed.

    7.1.5.2 High-speed Device Speed Identification (usb_20.pdf)
    High-speed capable devices initially attach as full-speed devices.

    When the host doesn't respond to high-speed chirp just after bus reset, the device should stay in full-speed. In this way, target device is forced in full-speed by the host. Above suggestion does this operation.

    Tsuneo