Skip to main content
Associate II
May 5, 2024
Solved

winbond W25Q128JVSIQ external loader problem

  • May 5, 2024
  • 8 replies
  • 2924 views

i am working with stm32 h750vb and i successfully wrote a winbond W25Q128JVSIQ external loader and it works fine on the cube programmer but when i use the cube ide i found that it successfully erase the external flash before file download and fails to write sector 0 so i found the problem was that i am using the time base source on the external loader was TIM2 and after changing it to systick the cube ide succussed to start writing to the external flash but now i get data mismatch at 0x90008900 on both cube programmer and on the cube ide with the edited external loader unlike the one before and all  the data after this address is corrupted  . i tried many things but didn't manage to make it upload the data successfully, any help will be appreciated.

This topic has been closed for replies.
Best answer by Tesla DeLorean

What is your pin configuration? Perhaps a loader here would suit? I'm not using interrupts.

https://github.com/cturvey/stm32extldr/tree/main/h7_w25q128

8 replies

Tesla DeLorean
Guru
May 5, 2024

Instrument the loader via an available UART so you can understand the interactions from STM32 Cube Programmer. 

Check the data as you go.

Make sure you're masking the address as the memory is Zero based, it doesn't understand the 0x90000000 address space the STM32 decodes.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
Associate II
May 5, 2024

thank you i managed to make it work but now i face another problem whenever i enable the external loader in the debug tab of the cube ide i found that the interrupts are not working anymore even though i didn't put anything in the external flash yet and when i disable it the interrupts start to work again what could be the reason?

 

Tesla DeLorean
Guru
May 5, 2024

Make sure that SCB->VTOR points to your vector table, wherever that is now situated in memory. Check SystemInit()

Make sure you dont' leave disableint(), or similar in your code. Or alternatively explicitly enable them in Reset_Handler or SystemInit()

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