Skip to main content
Visitor II
January 4, 2024
Solved

STM32U5A5 vs. STM32U575 - as USB PA11, PA12

  • January 4, 2024
  • 2 replies
  • 3830 views

I am confused:
I have a PCB designed for STMU575 and I am using USB FS - works.
USB DM and DP are pins PA11 and PA12.

On U575:
- all fine as USB FS, available via AF10 (PA11 = OTG_FS_DM, OTG_FS_DM) - works

I have checked the packages and pin assignments and saw: U5A5 is identical with U5A5 (and I want to solder U5A5 due to larger memories instead of U575).

But UA5A datasheet is a bit different on PA11, PA12:

1. it mentions "OTG_HS_DM(boot)" as "additional functions"
2. in pin mux ALT table: there is nothing under ALT10 - there is NOT an ALT option to configure PA11, PA12 as USB pin

tjaekel_0-1704347098608.png

My questions:

a) changing from U575 to a U5A5 on same PCB and package (LQPF64) - are PA11 and PA12 usable in the same way as USB (FS)?

b) if changing to U5A5 and PA11, PA12 become OTG_HS_DM, OTH_HS_DP now: does it mean I have to configure now USB HS instead of USB FS (as on U575)?

c) how to configure ALT function of USB_HS (if not listed in table) for U5A5?

 

    This topic has been closed for replies.
    Best answer by tjaekel

    "hmmm" - no clear answer for me. Anyway, I close the ticket if you want me to do.

     

    2 replies

    tjaekelAuthor
    Visitor II
    January 4, 2024

    When I see my NUCLEO-U5A5 project (using OTG USB HS:(
    - it does NOT configure any PA11, PA12 (nothing for PA11, PA12, no ALT needed neither used)
    - instead, it enables in function "void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)" only the USB HS

    So, it looks to me as:

    PA11, PA12 are implicitly used as USB_DP, USB_DM when USB HS is enabled (therefore "other functions"):
    no need to configure PA11, PA12 via an ALT (not available): it is done (used) automatically via USB HS enabled

    But it means also:
    on U5A5 PA11, PA12 become USB HS signals now: all my code for FS on 575 has to be changed to use USB HS (and internal PHY)

    BTW: very cool that STM MCU has now an internal USB HS PHY! (but obviously just on U5A5). Anyway - very great and I appreciate it. Long time awaited feature, well done.

    Technical Moderator
    January 4, 2024

    Hello @tjaekel 


    a) changing from U575 to a U5A5 on same PCB and package (LQPF64) - are PA11 and PA12 usable in the same way as USB (FS)?

     


    Yes, when using USB_OTG_HS, PA11 will be USB_OTG_HS_DM and PA11 will be USB_OTG_HS_DP 

    STTwo32_1-1704351940841.png

     


    b) if changing to U5A5 and PA11, PA12 become OTG_HS_DM, OTH_HS_DP now: does it mean I have to configure now USB HS instead of USB FS (as on U575)?


    You can configure the USB HS to work as a USB FS using the internal HS physical interface. 

    STTwo32_0-1704351920957.png

     

    c) how to configure ALT function of USB_HS (if not listed in table) for U5A5?

     


    You can refer to one of the examples in the STM32Cubeu5.

    Best Regards.

    STTwo-32

    tjaekelAuthor
    Visitor II
    January 12, 2024

    Great, thank you.

    I will give it a try: I have checked CubeMX, some of (my) demo projects (e.g. for NUCLEO-U5A5) and I have a clue now.

    I will solder my board for U5A5 asap and try to create a FW for it.

    Best regards
    Torsten

    tjaekelAuthor
    Visitor II
    January 13, 2024

    I tried now STM32U5A5 in LQPF64 package - it does NOT work.
    When the FW should do:

         /* Reset after a PHY select */

        ret = USB_CoreReset(USBx);

    the ret is always HAL_TIMEOUT. And the debugger (external ST-LINK) complains with "Target is not responding, retrying..."
    when the bit 0 CSRST in register OTG_HS->GRSTCTL is set. It is never "auto-cleared".

     

    So, I assume, the USB_PLL is not locked (not running).

    I tried on NUCLEO-U5A5 a similar clock config, e.g. using for USB:

    /** Initializes the peripherals clock

    */

    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USBPHY;

    PeriphClkInit.UsbPhyClockSelection = RCC_USBPHYCLKSOURCE_PLL1_DIV2; //RCC_USBPHYCLKSOURCE_PLL1_DIV2;

    ////PeriphClkInit.UsbPhyClockSelection = RCC_USBPHYCLKSOURCE_HSE; //XXXX: in NUCLEO project

     

    /** Set the OTG PHY reference clock selection

    */

    //XXXX: PLL1_P should be 32 MHz - 16 MHz selected here

    HAL_SYSCFG_SetOTGPHYReferenceClockSelection(SYSCFG_OTG_HS_PHY_CLK_SELECT_1);

    it works on NUCLEO board.

    The only differences which remain:

    • NUCLEO uses a 16 MHz real XTAL oscillator
    • I use a 8 MHz CMOS OSC chip

    I made sure to configure the SystremClock properly, e.g. the PLL1_P for 32 MHz (and using it via PLL1_DIV2)

    So, it remains: NUCLEO board has real XTAL, I have CMOS OSC.

     

    What scares me is this statement in U5A5 datasheet (page 97):

    "This interface requires a precise 60 MHz clock that is generated from the internal
    USB PHY PLL (the clock source must use a HSE crystal oscillator)."

    OK, internal PLL - I use and works also on NUCLEO. But not a HSE crystal oscillator! (CMOS OSC instead).

    Is this the reason why it does not work?
    Really a need to use HSE with XTAL (and not HSE_OSC_IN without _OUT) - for STM32U5A5 internal OTH_HS_PHY to use?