Skip to main content
Visitor II
September 24, 2025
Question

STM32H750 QSPI External Flash Programming Fails

  • September 24, 2025
  • 3 replies
  • 389 views

I'm using an STM32H750XBH6 MCU with two external Flash(W25Q256 X2) chips connected via QSPI. I followed the guide (W25Q FLASH Memory || Part 10 || QSPI & External Loader on H750) to create a custom external loader (.stldr) using STM32CubeIDE, and I modified the loader to match my specific hardware setup.

However, programming fails and I receive the following error messages when using STM32 ST-LINK Utility:

16:07:41 : Timeout during flash programming
16:07:41 : Error occurred during erase operation!
16:07:41 : Unable to run On-Chip verification!
16:07:42 : Programmed memory Checksum: 0x00000000
16:07:48 : Cannot read external memory!

I've attached my loader source code for reference.
Could someone help me check if there are any mistakes or missing steps in my setup or configuration?

Thank you in advance!

    This topic has been closed for replies.

    3 replies

    Technical Moderator
    September 24, 2025

    Hello @WayneLI and welcome to the community;

     

    Could you please check the dummy cycle number and the hardware connection.

    I recommend you referring to MOOC - External QSPI loader how to - YouTube and get inspired to check your configuration.

     

    Thank you.

    Kaouthar

    WayneLIAuthor
    Visitor II
    September 24, 2025

    I have already referred to this link, but the situation remains the same.
    The stldr file created using the Keil environment can be programmed successfully, so the hardware issue can be temporarily ruled out.
    I have also set the Dummy Cycle according to the Keil environment configuration, but it still causes issues on STM32IDE.
    Thank you for your reply.
    Wayne

    Technical Moderator
    September 24, 2025

    Hello @WayneLI ;

     

    Which STM32CubeIDE version are you using? Could you please update your toolchain.

    Try to add Data Synchronization Barrier __DSB();  followed by an Instruction Synchronization Barrier __ISB(); after configuring the vector table. 

     

    Thank you.

    Kaouthar