Skip to main content
Visitor II
June 25, 2024
Solved

STM32H730ZB - OCTOSPI - cannot write DCR1 register

  • June 25, 2024
  • 3 replies
  • 1343 views

Hi,

On a custom board using STM32H730ZB, I try to use QUAD SPI flash memory.

Here is the CubeMX config :

COSEBE_0-1719322210622.png

In MX_OCTOSPI1_Init function, I break on HAL_SPI_INIT function

This function come from pack STM32H7 version 1.11.2

In line #415 of stm32h7xx_hal_ospi.c, the code should modify DCR1 register with this values :

 

Capture d’écran 2024-06-25 153034.png

You can see the DCR1value is 0x0

After executing the MODIFY_REG() macro, the DCR1 register remain at zero.

Capture d’écran 2024-06-25 154518.png

What can be the issue ?

I tried exactly same code with STM32H723 DK and register is update successfully.

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

    Hi,

    Sorry for the late answer but now it works with H723, I had to give something working to my customer.

    Here is the result :


    UNIQUE 00230041-35325106-31383931
    FLASH 128 KB
    CPUID 411FC271 DEVID 450 REVID 2003
    Cortex M7 r1p1


    So I understand why !

    Distributor send the reference STM32H750ZBT6 instead of STM32H730ZBT6

    It is so difficult to read the reference on the components !

    Now I will try with the right part.

    Thanks everyone for your help

     

     

    3 replies

    Technical Moderator
    June 26, 2024

    Hello @COSEBE ,

     

    To check the issue could you please share the ioc file?

    Could you please compare the hardware design of the STM32H23-DK Discovery Kit with your custom board. 

    May Getting started with STM32H723/733, STM32H725/735 and STM32H730 Value Line hardware development can help you.

    This document describes the minimum hardware resources required to develop an application based on STM32H730 microcontrollers.

     

    Thank you.

    Kaouthar

    COSEBEAuthor
    Visitor II
    June 26, 2024

    Hi @KDJEM.1 

    Thanks you for your answer.

    I have news about this problem :

    In recent weeks, I have written more questions on this forum than in 10 years :

    https://community.st.com/t5/stm32-mcus-products/stm32h730zb-octospi-cannot-write-dcr1-register/td-p/689870

    https://community.st.com/t5/stm32-mcus-products/stm32h730zb-ltdc-rgb888-some-output-not-controlled-by-ltdc/td-p/689777

    https://community.st.com/t5/stm32cubemx-mcus/stm32h730zb-sdram-bank1-wrong-address/td-p/684588

    Usually, I found by myself.

    Many problem on this project based on STM32H730ZB.

    Today, I receive a component I ordered : STM32H723ZG

    I juste replace the STM32H730 by the STM32H723

    Start de debug without recompiling (it is the almost the same part) and all my troubles were resolved !

    Can ST contact me to understand what append with this reference ?

    Technical Moderator
    June 26, 2024

    Hello @COSEBE ,

     

    Thank you for sharing and updating this case. It is very interesting, and I want to continue investigation. 

    Unfortunately, I don't have an STM32H730 on hand at the moment.

    For more investigation, could you please share the ioc file, if it is possible, and the content registers mainly for RCC and OCTOSPI registers.

    For checking if this MCU is good part from ST production could you please share a STM32H730 photo.

    Also, we need for this check the UID and some memory content (form 0x1FF8 00C0 to 0x1FF8 00FF).

     

    Thank you for your contribution in STCommunity.

    Kaouthar 

    Graduate II
    June 26, 2024
    printf("UNIQUE %08X-%08X-%08X\n",
     *((uint32_t *)0x1FF1E800),
     *((uint32_t *)0x1FF1E804),
     *((uint32_t *)0x1FF1E808));
    printf("FLASH %d KB\n", *((uint16_t *)0x1FF1E880));

    The particular stepping/die may also be instructive

    //****************************************************************************
    
    void CORECheck(void) // sourcer32@gmail.com
    {
     uint32_t cpuid = SCB->CPUID;
     uint32_t var, pat;
    
     printf("CPUID %08X DEVID %03X REVID %04X\n", cpuid, DBGMCU->IDCODE & 0xFFF, (DBGMCU->IDCODE >> 16) & 0xFFFF);
    
     pat = (cpuid & 0x0000000F);
     var = (cpuid & 0x00F00000) >> 20;
    
     if ((cpuid & 0xFF000000) == 0x41000000) // ARM
     {
     switch((cpuid & 0x0000FFF0) >> 4)
     {
     case 0xC20 : printf("Cortex M0 r%dp%d\n", var, pat); break;
     case 0xC60 : printf("Cortex M0+ r%dp%d\n", var, pat); break;
     case 0xC21 : printf("Cortex M1 r%dp%d\n", var, pat); break;
     case 0xC23 : printf("Cortex M3 r%dp%d\n", var, pat); break;
     case 0xC24 : printf("Cortex M4 r%dp%d\n", var, pat); break;
     case 0xC27 : printf("Cortex M7 r%dp%d\n", var, pat); break;
    
     default : printf("Unknown CORE\n");
     }
     }
     else
     printf("Unknown CORE IMPLEMENTER\n");
    }
    
    //****************************************************************************

    https://community.st.com/t5/stm32-mcus-security/stm32h750-hash-peripheral-issue/td-p/158868

    COSEBEAuthorAnswer
    Visitor II
    July 5, 2024

    Hi,

    Sorry for the late answer but now it works with H723, I had to give something working to my customer.

    Here is the result :


    UNIQUE 00230041-35325106-31383931
    FLASH 128 KB
    CPUID 411FC271 DEVID 450 REVID 2003
    Cortex M7 r1p1


    So I understand why !

    Distributor send the reference STM32H750ZBT6 instead of STM32H730ZBT6

    It is so difficult to read the reference on the components !

    Now I will try with the right part.

    Thanks everyone for your help