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.

MSP430F5659: USB not recognized - For XT2 19.2M

Part Number: MSP430F5659


Hi,

I am using MSP430F5659 MCU for my project. I am using USB to update the boot loader through Firmware upgrade tool. For XT2 frequency of 24M, I was able to update the BSL and things are working fine.

Now, I need to update the XT2 to 19.2M (since I need to use SPI at 20M, for which 19.2M is the nearest frequency).

Keeping XT2 at 24M, I have updated my code to program XT2 to 19.2M (USBPLLDIVB = USBPLL_SETCLK_19_2;) and written the same to MCU. After replacing the XT2 crystal to 19.2M, on powering up the board, getting "USB not recognized" error. 

Is this one line enough "USBPLLDIVB = USBPLL_SETCLK_19_2;" apart from initializing the XT2 "USBHAL_initClocks(19200000UL);"or do I need to update some more in order for the chip to work. 

One more thing, Since 4M, 8M, 12M and 24M can be automatically detected by the BSL, Is it possible to program the fresh part with other XT2 frequencies(in my case its 19.2M).

Thanks in advance.

  • Hello,

    The USB-PLL has to generate a 48MHz(+/-2500ppm) clock for proper operation. This is done by multiplying a reference XTAL.

    The multiplication in PLL is done with natural munbers  e.g. 2,3,4,5 etc.  Therefore a XTAL with 24MHz works fine (also the divides clocks).

    The same is also true for 6,8,12,16 MHZ   19.MHz however would not work. I am sorry.

    Johann

  • HI,

    I came across the attached table in the user guide. Thought that these crystals can be used in XT2. Kindly clarify.

  • Hi, I see that....

    Let me write while thinking 48MHz are required for the USB-core. This with high accurate 50% duty cycle; usually you would use a PLL locking at twice the frequency and divide by two to get the 50%. That would be 96MHz.   Now 96/19.2=5 !!!  yes it should be possible.

    An the other columns in the list eve tell the settings. Just checked; settings seem to be reasonable....

    Could you please see x-check at which frequency your XTAL really oscillates. Maybe an overtone XTAL.

    I will try on my side to generate a test program to measure the PLL frequency...

    have a nice day

                        Johann

  • Hi Johnan,

    I have tried the following and still the issue persists.

    1.  In a fresh part, USB is getting enumerated with XT2 24M but not with 19.2M or 16M.

    2. Keeping XT2 @ 24M and programming the part for XT2 19.2M. Replace XT2 to 19.2M, still getting USB not getting recognized error.

    Either of the way, after soldering the crystal to 19.2M, getting USB not recognized error.

    Is it possible to enumerate the fresh part with 19.2M or 16M and program the BSL through USB directly.

    Kindly advice.

  • Hi again,

    to operate the USB module a 48MHz frequency is required for the USB-core. On top of that some timing is required for the USB protocol to be happy.

    Changing the XTAL to satisfy the first condition might not be all that is required. Am currently preparing a setup to X-check the capture and hold range of the USB-PLL for various loop frequencies. This is pretty much what I can do from here with little to moderate effort working from my home office. 

    Could you X-check if the 19.2MHz is the fundamental frequency of your Xtal ?  In other words is your oscillator in deed running at 19.2 MHz ?

    Johann

  • Hello again,

    I grapped a set of XTALS I had in my drawer and checked USB operations..

    I could not see any functional problems...

    Target HW:   "MSP-EXP430F5529 Rev.2.0"

    Compiler/IDE: "CCS 5.5.0.00077 (had to wind back to re-use object files)"

    Application: "User Experience_16KB" the demo that came with the board"

    Tested with DELL Notebook running WIN7/64,  all at ambient temperature.

    Test Results:...

    XT2[MHz] DIVQ DIVM ClkLoop[MHz] UpllClk[MHz] MP err[PPM] USSPLLDIVB result
    19.2 8 20 2.4 48 20 0 0x0513 not tested
    4 2 24 2 48 24 0 0x0117 OK
    17.73447 13 35 1.36419 47.74665 35.18571 5278.125 0x0622 OK
    17.73447 4 11 4.4336175 48.7697925 10.82637 -16037.3 0x030a OK
    17.73447 3 8 5.91149 47.29192 8.11978 14751.67 0x0207 OK
    14.31818 8 27 1.7897725 48.3238575 26.81905 -6747.03 0x051a OK
    14.31818 6 20 2.386363333 47.72726667 20.11429 5681.944 0x0413 OK
    5.184 2 18 2.592 46.656 18.51852 28000 0x0111 OK
    5.184 2 19 2.592 49.248 18.51852 -26000 0x0112 OK
    4.782 2 20 2.391 47.82 20.07528 3750 0x0113 OK

    USB seems to be really error tolerant regarding the 48MHz frequency accuracy. I have seen no functional problems, even though the required accuracy of 2500ppm was violated by far.

    USB-device discovery worked without problems

      Johann

    PS: Please check if your 19.2 MHz XTAL is truely running at 19.2MHz   

  • To modify your BSL for 19.2 simply replace the values for USBPLLDIVB in the binary image of the BSL.

    The PLL as such seems to operate reliably over a wide range.

    have a nice day

       Johann

**Attention** This is a public forum