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.

USB Bulk example v210

Other Parts Discussed in Thread: CONTROLSUITE, TMS320F28377D

Hi,

I updated my controlSUITE and retried the "usb_dev_bulk" example for my F28377D. The bulk device is not detected by Windows anymore.

The example v200 works. 

  • Project:C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_examples_Cpu1\usb_dev_bulk
  • Compiler: C2000 Code Generation Tools v15.12.3.LTS
  • IDE: Code Composer Studio 6.2.0.00050
  • Hardware: TMS320F28377D (Delfino) 
     

Is there a bug in the current example or is my system not setup correctly?

Kind regards,

Jan

  • Is it not showing up in your Device Manager? What Windows OS are you using?

    Were you using the same OS before?

    sal
  • Hi Sal,

    I am using Windows 7 Enterprise 64bit SP1. My device manager does not show the device at all. In my own application, which is based on the bulk example, it is shown as unknown device instead of the Texas Instruments Bulk Device. But if i close the v210 example project and import the v160 example into my workspace to run the old version, the device is shown as Texas Instruments Bulk Device.

    The windows drivers (C:\ti\controlSUITE\device_support\F2837xD\vXX0\F2837xD_common\windows_drivers) seems to be unchanged. Winmerge tells me the folder for v160 and v210 are identical.

    Thank you for the quick reply.

    Jan

  • Hi Jan,

    That is strange since the projects have not changed as you have confirmed. It may have something more to do with you host PC.

    sal
  • Hi Sal,

    the problem is SysCtlClockSet(). There was a bug reported and "fixed" in v210. The fix changed the value for SYSCTL_OSCSRC_XTAL and SYSCTL_OSCSRC_OSC1.

    The fix is inspired by the switch case in SysCtlClockSet (sysctl.c:528) but the bit struct of parameter is broken. The defines SYSCTL_OSCSRC_M and SYSCTL_OSCSRC_S specifies the bit location of the clock source, which is bit 16 and 17 (as bit mask: 0x00030000). Therefore the original defines of SYSCTL_OSCSRC_XTAL and SYSCTL_OSCSRC_OSC1 had been correct.

    I am using the following solution: 

    • Change the switch case in SysCtlClockSet to ui32Config & SYSCTL_OSCSRC_M.
    • Reset the defines of SYSCTL_OSCSRC_XTAL and SYSCTL_OSCSRC_OSC1.

    Please keep me updated if this fix will be fixed.

     

    diff of C:\ti\controlSUITE\device_support\F2837xD\v210

    ---
    F2837xD_common/driverlib/sysctl.c | 2 +-
    F2837xD_common/driverlib/sysctl.h | 4 ++--
    2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/F2837xD_common/driverlib/sysctl.c b/F2837xD_common/driverlib/sysctl.c
    --- a/F2837xD_common/driverlib/sysctl.c
    +++ b/F2837xD_common/driverlib/sysctl.c
    @@ -525,7 +525,7 @@ SysCtlClockSet(uint32_t ui32Config)
    {
    //Configure Oscillator
    EALLOW;
    - switch (clock_source)
    + switch (ui32Config & SYSCTL_OSCSRC_M)
    {
    case SYSCTL_OSCSRC_OSC2:
    ClkCfgRegs.CLKSRCCTL1.bit.INTOSC2OFF=0; // Turn on INTOSC2
    diff --git a/F2837xD_common/driverlib/sysctl.h b/F2837xD_common/driverlib/sysctl.h
    --- a/F2837xD_common/driverlib/sysctl.h
    +++ b/F2837xD_common/driverlib/sysctl.h
    @@ -66,8 +66,8 @@ extern "C"
    #define SYSCTL_OSCSRC_M 0x00030000
    #define SYSCTL_OSCSRC_S 0x00000010
    #define SYSCTL_OSCSRC_OSC2 0x00000000
    -#define SYSCTL_OSCSRC_XTAL 0x00000001
    -#define SYSCTL_OSCSRC_OSC1 0x00000002
    +#define SYSCTL_OSCSRC_XTAL 0x00010000
    +#define SYSCTL_OSCSRC_OSC1 0x00020000

    #define SYSCTL_LSDIV_M 0x00700000
    #define SYSCTL_LSDIV_S 0x00000014
    --