Can you use QSPI for general storage and/or Memory mapped: boot from EXT when using TouchGFX ( TouchGFX stores assets in QSPI)? Would it require multiple QSPI devices?
@@ControllersTech Your application uses higher level functions that utilize the HAL_QSPI (stm327xx_HAL_qspi.c) drivers for simplifying the common tasks of working with the QSPI. Am I understanding this correctly?
Hi, thanks for the tutorial, you said that what you did is not the effective way for storing numbers, is there another way to store numbers or other data types without converting them to strings ? will the memcpy() do the job ?
Hello Controllers Tech! Do you know any method to emulate the external NOR flash memory? Ofcourse they have very high erase/program cycles but still how to manage writing to flash memory by avoiding writing to the same address?
Thank you for your hard work explaining this stuff! I did this for STM32H750VB and W25Q64, but stumbled across the problem with memcpy - it throws me into MemManage_Handler. Regular read and write commands work fine, i have set up MPU parameters accordingly. Can you please tell, what could be wrong? I use a single/dual line QSPI setting, can this work with memory mapped mode? By the way, for some flash like W25Q64, chip erase delay can be much higher than default HAL_QSPI delay of 5s, so i had to ta add extra 20s delay, so loooong
Thanks a lot for those Qspi tuto so clear I have developed my own stm32h75vbt6 mini pcb board and follow your tuto for flah spi and Qspi all is working as expected 😊😊😊 I have a question about erase function. Do you erase by convention before write or because it is not recomanded to overwrite data on the same adress. 2 _ how to well manage adress function when you want to acces small data to many adresses.
Hello @ControllersTech thanks for the video. you said in the beginning that you will tell what changes will be required for MX25 chip. Can you please make a video or explain it
Great movies i like your works a lot. So i have board STM32F508-DK F7508-B05 and normally memory chip is N25Q128 and unfortunately i have a problem, i do not pass the step QSPI_AutoPollingMemReady in the function CSP_QUADSPI_Init and i do not why.
Thanks for your videos, they are really helpfull, I am using your driver in the 32F746GDISCOVERY , it has the same flash memory N25Q128A. The code is stopped when the I try to execute the CSP_QSPI_Erase_Chip() function. When I debug the program, I saw that the program is stopped when I execute the HAL_QSPI_AutoPolling() function if I press "stepover" to continue to debug, but if I press "stepinto" everything is OK. CSP_QSPI_Erase_Chip(){ ... QSPI_AutoPollingMemReady(){ ... HAL_QSPI_AutoPolling() ... } ... } The program run without any problem if i don't use the function CSP_QSPI_Erase_Chip() function. Is there any update for that function? Could you help me with that?
Awesome video, just when I needed it! Is there a chance that you will make tutorial about recording and playing sound from these two microphones on STM32F750dk? Or at least some directions where should I look for help, because documentation almost doesn't even mention microphone nor provides example of usage Thank you in advance, best luck!
Hi, very interesting video!!! I'm using H743ZI2 with dual IS25LP032. Do you think the MT25TL example can be adapted to my case? If so, may you suggest me which modifications I've to do, please?
It works with W25Q64, set "FlashSize=22", increase the delay in "QSPI_AutoPollingMemReady" to 20 seconds: e.g. "if (HAL_QSPI_AutoPolling(&hqspi, &sCommand, &sConfig, 20000) != HAL_OK) {", and set the "DummyCycles" in "CSP_QSPI_ReadMemory" to the value 6 e.g. " s_command.DummyCycles = 6;"
I don't know. I haven't tested much of the write read. Like i mentioned in the video, i am going to focus on memory mapped mode. This videos was just the connection test for the flash memory
Hello Controllers Tech, Thanks a lot for the video, it was very helpfull! I am facing an issue with the "Write Enable". When I call the Autopolling Function for changing the mode, the status match flag is not set and I know why. Unfortunately, I don't have an oscilloscope to check the HW part. Do you have an idea about what could be the issue? Thanks a lot and keep going :) Issue Resolved: Thank you, I have resolved the issue by using the 2 banks (MT25QL512) in the STM32H750-DK Board. But I still have an issue with the read. When I read from memory and check in the DR register, I don't find the correct information, always I get 0x88888888 and erase state of the memory 0xFF.
Your message was deleted by youtube for some reason, but if you are using h750 discovery, then check my github. I have there the code for H745, which is exactly similar..
@@ControllersTech Thanks, I will check and provide feedback! I also saw a strange behaviour, the bank 1 fails at the write enable but the bank doesn't and it fails after, could it be a HW issue, or a configuration one?
It's definitely configuration issue.. For these dual banks, i tried using single bank but that didn't worked. So i tried using both banks simultaneously. I have mentioned this in the readme file
good thanks, i can run now the n25q with your libreries. With these modification can be delete the warnings uint16_t number = 1234; uint8_t buf[5]; sprintf ((char *)buf, "%u", number); if (CSP_QSPI_Write(buf, 0, strlen ((char *)buf)) != HAL_OK) { Error_Handler(); }
Of course we want to see how do it for the STM35 !
Always a pleasure to watch your video !
Can you use QSPI for general storage and/or Memory mapped: boot from EXT when using TouchGFX ( TouchGFX stores assets in QSPI)? Would it require multiple QSPI devices?
Will there be a tutorial how to store firmware or some firmware function in qspi?
Yes the next one... Listen to the ending part 🙄
Is the method an alternative to using the HAL_QSPI functions?
I don't understand the question
@@ControllersTech Your application uses higher level functions that utilize the HAL_QSPI (stm327xx_HAL_qspi.c) drivers for simplifying the common tasks of working with the QSPI. Am I understanding this correctly?
Yes
When I build project with release mode on STM32CubeIDE it stop working, same code works if build with debug configuration...Any Suggestion/ Help ??
Hi, thanks for the tutorial, you said that what you did is not the effective way for storing numbers, is there another way to store numbers or other data types without converting them to strings ? will the memcpy() do the job ?
You can use enums to convert numbers or floats into the bytes and store it.
Then convert the bytes back to numbers to extract the value.
You are the KING!
in respond to your reply : could you please do a video on STM32H745 Discovery QSPI flash MT25QL512A ?
How did you choose the fifo threshold?
i am not able to read more than 256 bytes in externnal spi
I am reading 4 bytes of structure after 256 bytes data is rollover
Hello Controllers Tech! Do you know any method to emulate the external NOR flash memory? Ofcourse they have very high erase/program cycles but still how to manage writing to flash memory by avoiding writing to the same address?
Hello great video, just a question can this tutorial work on STM32H750 Discovery bd? is it the same QSPI flash ?
H750 has MT25 series I guess. The method remains the same, but the commands are a little different. Please check towards the end of the video.
@@ControllersTech yes its MT25QL512A
Thank you for your hard work explaining this stuff!
I did this for STM32H750VB and W25Q64, but stumbled across the problem with memcpy - it throws me into MemManage_Handler. Regular read and write commands work fine, i have set up MPU parameters accordingly. Can you please tell, what could be wrong? I use a single/dual line QSPI setting, can this work with memory mapped mode?
By the way, for some flash like W25Q64, chip erase delay can be much higher than default HAL_QSPI delay of 5s, so i had to ta add extra 20s delay, so loooong
Did you figure out solution for this? I'm also running into this issue.
Thanks a lot for those Qspi tuto so clear I have developed my own stm32h75vbt6 mini pcb board and follow your tuto for flah spi and Qspi all is working as expected 😊😊😊
I have a question about erase function. Do you erase by convention before write or because it is not recomanded to overwrite data on the same adress.
2 _ how to well manage adress function when you want to acces small data to many adresses.
Hello @ControllersTech thanks for the video.
you said in the beginning that you will tell what changes will be required for MX25 chip.
Can you please make a video or explain it
any updates on this?
Great movies i like your works a lot. So i have board STM32F508-DK F7508-B05 and normally memory chip is N25Q128 and unfortunately i have a problem, i do not pass the step QSPI_AutoPollingMemReady in the function CSP_QUADSPI_Init and i do not why.
Try disconnecting the cable and connect again.
By the way, this video is made with the same board.
@@ControllersTech Ha yes it's works, it's bizzard :D, thk you for this litlle debugging
Thanks for your videos, they are really helpfull,
I am using your driver in the 32F746GDISCOVERY , it has the same flash memory N25Q128A. The code is stopped when the I try to execute the CSP_QSPI_Erase_Chip() function.
When I debug the program, I saw that the program is stopped when I execute the HAL_QSPI_AutoPolling() function if I press "stepover" to continue to debug, but if I press "stepinto" everything is OK.
CSP_QSPI_Erase_Chip(){
...
QSPI_AutoPollingMemReady(){
...
HAL_QSPI_AutoPolling()
...
}
...
}
The program run without any problem if i don't use the function CSP_QSPI_Erase_Chip() function.
Is there any update for that function? Could you help me with that?
Very, very helpful. You are a true lifesaver.
Awesome video, just when I needed it!
Is there a chance that you will make tutorial about recording and playing sound from these two microphones on STM32F750dk? Or at least some directions where should I look for help, because documentation almost doesn't even mention microphone nor provides example of usage
Thank you in advance, best luck!
I'll see if i can find something
Hi, very interesting video!!!
I'm using H743ZI2 with dual IS25LP032. Do you think the MT25TL example can be adapted to my case? If so, may you suggest me which modifications I've to do, please?
any updates on this?
Please make tutorial about stm32+ros(robotic os).
Hi, thank you for video and code. Is this code compatible with QSPI w25q64 chip?
Nope, but read the comments. Someone have posted a link for it
It works with W25Q64, set "FlashSize=22", increase the delay in "QSPI_AutoPollingMemReady" to 20 seconds: e.g. "if (HAL_QSPI_AutoPolling(&hqspi, &sCommand, &sConfig, 20000) != HAL_OK) {", and set the "DummyCycles" in "CSP_QSPI_ReadMemory" to the value 6 e.g. " s_command.DummyCycles = 6;"
Great tuto as usual! Is flash memeory limited regarding writing operations number?
I don't know. I haven't tested much of the write read.
Like i mentioned in the video, i am going to focus on memory mapped mode.
This videos was just the connection test for the flash memory
just the video I was looking for !
Hello Controllers Tech, Thanks a lot for the video, it was very helpfull! I am facing an issue with the "Write Enable". When I call the Autopolling Function for changing the mode, the status match flag is not set and I know why. Unfortunately, I don't have an oscilloscope to check the HW part. Do you have an idea about what could be the issue? Thanks a lot and keep going :)
Issue Resolved:
Thank you, I have resolved the issue by using the 2 banks (MT25QL512) in the STM32H750-DK Board. But I still have an issue with the read. When I read from memory and check in the DR register, I don't find the correct information, always I get 0x88888888 and erase state of the memory 0xFF.
What memory do you have ?
Your message was deleted by youtube for some reason, but if you are using h750 discovery, then check my github.
I have there the code for H745, which is exactly similar..
@@ControllersTech Thanks, I will check and provide feedback! I also saw a strange behaviour, the bank 1 fails at the write enable but the bank doesn't and it fails after, could it be a HW issue, or a configuration one?
It's definitely configuration issue..
For these dual banks, i tried using single bank but that didn't worked. So i tried using both banks simultaneously.
I have mentioned this in the readme file
@@ControllersTech I will try to do that, thanks !
good thanks, i can run now the n25q with your libreries. With these modification can be delete the warnings
uint16_t number = 1234;
uint8_t buf[5];
sprintf ((char *)buf, "%u", number);
if (CSP_QSPI_Write(buf, 0, strlen ((char *)buf)) != HAL_OK)
{ Error_Handler(); }
Nice video, thanks :)