cancel
Showing results for 
Search instead for 
Did you mean: 

Which configurations do I have to consider if I want to use a STM32H750B-Disco example as e.g. "TIM_TimeBase" with another board that uses a different QSPI flash memory (program code on external qspi-flash)?

pk84
Senior

Here is my approach:

1) I think I have to adjust the pin configuration in the "memory_msp.h" of the ExtMem_Boot project first

2) Then I would have to include the correct QSPI driver in the "qspi.c" file.

3) Provide the correct ".stldr" external loader file

What else do I need to consider?

  • Does it need changes in the "STM32H750XBHx_FLASH.Id" file? If yes, how do I approach this?
  • ...

Thank you

19 REPLIES 19

This is a build from my current environment

https://github.com/cturvey/stm32extldr/blob/main/h7_w25q64/CLIVEONE-W25Q64_STM32H7XX-PB2-PB6-PF8-PF9-PF7-PF6.stldr

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

>>This is a build from my current environment

Ok well, thank you, the external loader is now probably i.o., no more error.

My problem now is the correct setup for the program on the internal flash.

I have now tried to adapt the EXTMem_Boot project according following file (as possible):

https://github.com/osos11-Git/STM32H743VIT6_Boring_TECH_QSPI/blob/main/Example2/H743_QSPI_deneme3/Core/Src/quadspi.c

But no blinking LED, so somewhere something must be still wrongly adjusted...

phuu...

I'd back off on the ClockPrescaler (1), and instrument/test

hqspi.Init.ClockPrescaler = 4;

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

>>hqspi.Init.ClockPrescaler = 4;

Clock I set to 3 = 50MHz.

I now try to run the program for the internal flash with access to the QSPI. 

After the EnableMemoryMappedMode the content in the external memory always shows 0x888888 (no matter if I delete the QSPI before or write "Hello World").

After the CPU_CACHE_Disable(); the debugger goes into "void MemManage_Handler(void)" ...

Frustrating...is there any example with STM32H750 and W25q64 ?

You can't interact with the memory at a command level in Memory Mapped mode, you need to HAL_QSPI_Abort() to dump it out of that mode. The Erase/Write are too invasive, and you need to wait for completion of the command/function.

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

sorry, I not understand this reply....

I have configured everything, and it still not works.

If I test ExtMem_Boot itself, then it looks that it jumps after CPU_CACHE_Disable(); in the MemManage_Handler(void) .... so at the moment I don't have any idea what still could be wrong :( ....

0x88888888 probably command template for memory mapped mode is wrong

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

>>0x88888888 probably command template for memory mapped mode is wrong

Ok, but the debugger goes also always in following handler. What could that be?

EDIT: It happens after "CPU_CACHE_Disable();"

void MemManage_Handler(void)
{
  /* Go to infinite loop when Memory Manage exception occurs */
  while (1)
  {
  }
}

Thank you

>>0x88888888 probably command template for memory mapped mode is wrong

Do you have a working demo with STM32H750 and W25Q64 QSPI (XIP memory mapped mode)? I can pay for this...

Thank you

Something can be tailored, depending on location, contact details in profile.

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