Skip to main content
Visitor II
August 9, 2012
Question

STM32F2/F4 problems with various ULPI USB PHYs

  • August 9, 2012
  • 27 replies
  • 9823 views
Posted on August 09, 2012 at 12:43

Hi

I have a problem with STM32F207/407 (not) working with a ULPI PHY, in this caseSMSC USB3340. The system (which is device-only) will work at USB full-speed but not high-speed. Itseems that others have similar problems - some ULPI-compliant PHYs seem to work,others not.

Logic analysis of the ULPI bus and USB line states show that during the USB_RESET period, the STM sets the PHY's Function Control register to generate the ChirpK indicating that the device can work at high-speed.  However, the ChirpK is never generated, so enumeration falls back to full-speed. Instead of sending the ChirpK, DP goes to 1.6V and DM to 0V.

It is possible that the problem arises because the USB Core sets theLPM bit (bit7) in the PHY's Function Control register. It looks at first sight as if PHYs which do notsupport LPM (and so ignore the bit) work correctly, and vice-versa.  For example on this forum we see a USB3343 not working and a USB3320 (similar but with no LPM support) working.

Does anyone at ST know if there is there a way to cause the STM32F deviceNOT to set the LPM bit in the ULPI PHY Function Control register? It would seem likely, but no such control is documented.

Does anyone have any further experience of which PHYs do and don't work in this regard?

Thanks

Ian

#usb-ulpi-phy-usb3340
    This topic has been closed for replies.

    27 replies

    Visitor II
    October 21, 2013
    Posted on October 21, 2013 at 21:01

    Ramv,

    I have successfully implemented the USB3300 with the STM32F205. I had a schematic bug that I needed to correct, but once I did my HS device works 100%.

    I also have the same board, but modified to work with the USB3340. On this board, I have NOT had success getting HS to work. The device will enumerate as FS, but not HS. I have tried a number of different things to correct this, both in HW and SW, without success thus far. I am continuing to work on this now (we'd prefer to use the USB3340 or USB3320 for the lower power and greater EMI immunity); I'll post up any new results.

    Graduate II
    October 21, 2013
    Posted on October 21, 2013 at 22:19

    I also have the same board, but modified to work with the USB3340. On this board, I have NOT had success getting HS to work. The device will enumerate as FS, but not HS. I have tried a number of different things to correct this, both in HW and SW, without success thus far. I am continuing to work on this now (we'd prefer to use the USB3340 or USB3320 for the lower power and greater EMI immunity);

    Ian's table still appear quite prescient then. I wonder if STOne can fish Ian's email out of the system and query his current status?

    May be the 3320 is the way to go, though as I've indicated before ST used the 3300 on the most recent STM324x9I-EVAL board.

    Visitor II
    October 22, 2013
    Posted on October 22, 2013 at 15:07

    clive1,

    Ian's chart appears to be accurate in the PHYs that have been shown to work at HS (as far as I know), but it doesn't appear correct as far as some correlation between PHYs having LPM and not working at HS: e.g., the USB3300 has LPM, but DOES work at HS.  

    ian2399Author
    Visitor II
    October 25, 2013
    Posted on October 25, 2013 at 15:11

    Hi again

    I've just noticed that this thread has been resurrected - so an update from me:

    My design with USB3320 now replacing previous USB3340 works fine at HS.

    Re Joshua's post:

    I think the USB3300 does NOT support LPM mode, i.e. the ability to enter Link Power Management mode by setting b7 of the Function Control register.  The confusion arises from the 'low power' (suspend) mode, which is controlled by b6, which is something else completely! It's the b7 functionality which kills LPM-capable PHYs.

    Graduate II
    October 25, 2013
    Posted on October 25, 2013 at 17:22

    Ian, Thanks for the update

    -Clive
    Visitor II
    October 25, 2013
    Posted on October 25, 2013 at 19:53

    Ian,

    Thanks for the reply! I ordered some USB3320s yesterday to try out; is it possible for you to share that portion of your schematic? Or at least advise if you had to do anything ''special'' to get it working? I was under the impression that the USB3340 and USB3320 were functionally largely the same.

    Also, thanks for clarifying the LPM issue; you're right, I missed that distinction.

    Thanks,

    Josh

    Visitor II
    December 11, 2013
    Posted on December 11, 2013 at 13:28

    Hi,

    Have you run USB3320 with stm32f407?

    I have a trouble with it and doesn't know where I should fix...:(

    ian2399Author
    Visitor II
    January 23, 2014
    Posted on January 23, 2014 at 13:56

    Hi Ivan, sorry for the delay - I don't look at this thread much now.  FWIW, my design with USB3320 works successfully with F207 and F407 (I have not tried any other MCUs).  I didn't have to do anything special - other than pick a usable PHY !-)

    BTW, as I happened by today, I had a look at the relevant MPU errata on the ST website. No mention of this issue.  I guess quite a few non-working boards have been made by now. Tut tut, ST.

    Visitor II
    March 28, 2014
    Posted on March 28, 2014 at 07:31

    Yes. you're right. everything is work.

    Thanks

    Visitor II
    December 16, 2014
    Posted on December 16, 2014 at 20:34

    Hello guys!

    I wonder if there any updates to this topic?

    Maybe somebody got USB3330 working at HS?

    If NO, what you think about new USB332x (dont mess with USB3320!), it offers as small package as USB3330, and is pin-compatible!

    And it has no ''LPM Enable'' bit!