Skip to main content
Graduate II
March 27, 2024
Solved

STM32H730VBxx: no OCTOSPIM registers

  • March 27, 2024
  • 5 replies
  • 1833 views

A question of compehension:

I cannot find any of the OCTOSPIM registers - neither in STM32CubeMX, nor in the register list, read by STM32CubeProgrammer. Am I right, that's because in our chip, there's only one OCTOSPIM port?

(I would appreciate, if that was mentioned in the reference manual, that that whole section "OCTOSPI I/O manager (OCTOSPIM)" has no relevance for certain chip subtypes, with a reference to the data sheet.)

But then I ask: Why do I still have the OCTOSPI2 registers? Because "In the default out-of-reset configuration, all the OCTOSPI1 and OCTOSPI2 signals are mapped, respectively, on Port 1 and on Port 2." (reference manual). And since I cannot change that mapping, and since I have no OCTOSPIM2 port, what's the point in the OCTOSPI2 registers then?

Did I misunderstand / miss something?

    This topic has been closed for replies.
    Best answer by KDJEM.1

    Hello @pkoevesdi ,

    Yes, the second view is taken from the STM32CubeIDE tool.

    The OCTOSPI I/O manager is not a peripheral, so you can not see the "OCTOSPIM" in STM32CubeMX "categories" but you can configure it as shown in the below figure:

    KDJEM1_1-1711535608248.png

     

    And you can see this configuration in the generated code:

     

     sOspiManagerCfg.ClkPort = 1;
     sOspiManagerCfg.DQSPort = 1;
     sOspiManagerCfg.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
     sOspiManagerCfg.IOHighPort = HAL_OSPIM_IOPORT_1_HIGH;
     if (HAL_OSPIM_Config(&hospi1, &sOspiManagerCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
     {
     Error_Handler();
     }

     

    Thank you.

    Kaouthar

    5 replies

    Technical Moderator
    March 27, 2024

    Hello @pkoevesdi ,

    Could you please precise which STM32CubeProgrammer version are you using?

    I made some tests with  STM32CubeProgrammer 2.14.0 and with STM32CubeIDE 1.14.0  and I can see the OCTOSPI I/O manager (OCTOSPIM) registers as shown in the below:

    KDJEM1_0-1711531240176.png

    KDJEM1_1-1711531432499.png

    The registers view groups all registers supported in STM32H730 ( STM32H730AB STM32H730IB
    STM32H730VB STM32H730ZB)

    Note that STM32H730VBxx have one Octo-SP interface as mentioned in the datasheet.

    KDJEM1_2-1711531783952.png

    Thank you.

    Kaouthar

     

    pkoevesdiAuthor
    Graduate II
    March 27, 2024

    I use STM32CubeProgrammer 2.16.0 and STM32CubeIDE 1.15.0.

    Ok, I'm sorry, now I found it in the Programmer. I assumed (and wished) that the Peripheral list was alphabetically sorted, which it isn't, and further that a search for "octo" in the field left of it would show all "octo"-peripherals, which it doesn't.

    Still, I can't see it in the MX:

    pkoevesdi_0-1711533688365.png

    Where can I find your second picture "register view"?

    > Note that STM32H730VBxx have one Octo-SP interface as mentioned in the datasheet.

    ...and mentioned in my initial post. ;)

     

    pkoevesdiAuthor
    Graduate II
    March 27, 2024

    > Where can I find your second picture "register view"?

    Ok, found it, it's while debugging inside STM32CubeIDE, on the right side.

    Ok, there I also found the OCTOSPIM register.

    Now, I understand, why I don't see it in the MX view: because the parameters I set in "OCTOSPIx Mode and Configuration" configures the OCTOSPIM registers "in the background". That's why these don't have an own entry there. It's a sub function of OCTOSPI, not a main function.

    Can You confirm?

    KDJEM.1Answer
    Technical Moderator
    March 28, 2024

    Hello @pkoevesdi ,

    Yes, the second view is taken from the STM32CubeIDE tool.

    The OCTOSPI I/O manager is not a peripheral, so you can not see the "OCTOSPIM" in STM32CubeMX "categories" but you can configure it as shown in the below figure:

    KDJEM1_1-1711535608248.png

     

    And you can see this configuration in the generated code:

     

     sOspiManagerCfg.ClkPort = 1;
     sOspiManagerCfg.DQSPort = 1;
     sOspiManagerCfg.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
     sOspiManagerCfg.IOHighPort = HAL_OSPIM_IOPORT_1_HIGH;
     if (HAL_OSPIM_Config(&hospi1, &sOspiManagerCfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
     {
     Error_Handler();
     }

     

    Thank you.

    Kaouthar

    pkoevesdiAuthor
    Graduate II
    March 28, 2024

    Thank You too!

    pkoevesdiAuthor
    Graduate II
    May 11, 2024

    One more question: Why are all the registers of the OCTOSPIM zero? I see it in Your screenshot and in my STMProg as well. The reset values are non-zero.