cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H730ZB - OCTOSPI - cannot write DCR1 register

COSEBE
Senior

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.

1 ACCEPTED SOLUTION

Accepted Solutions
COSEBE
Senior

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

 

 

View solution in original post

5 REPLIES 5
KDJEM.1
ST Employee

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

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

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 ?

KDJEM.1
ST Employee

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 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
COSEBE
Senior

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