Piu' sotto, al termine della lingua inglese trovi il testo in italiano. _
Below the English text you'll find the Italian version
In this GitHub page, you'll find a library for STM32 (HAL) handling Winbond SPI Flash memories (W25Qxxx).
Library includes functions you need to create External Loaders for STM32CubeProgrammer and STM32CubeIDE.
External Loaders functions are basically as same as functions of my "canonical" repository following ST documentation" creating ELs needing more than 40 kB of RAM available on the uC. Using this "unorthodox" library you should be able to develop ELs needing about 12kB of RAM.
Inside library you'll find also functions, that TouchGFX needs to handle an external flash memory, reading font and images via a direct transfer flash->display (without needing a cache in RAM).
So, you can use this software for 4 distinct purposes:
- handling an external W25Q flash directly reading and writing over it
- create an External Loader to program flash memory via CubeProgrammer
- add the created external loader to a CubeIde project in order to directly flash the external chip while creating projects (as same as the uC internal flash memory)
- add an external flash to a TouchGFX project. TouchGFX provides tools making an external flash, handled via an external loader, absolutely transparent to the project.
This guide is divided in 4 chapters following the above list.
- handling an external W25Q flash with this library
- creating and using an External Loader for the SPI flash
- mapping an external SPI flash on CubeIDE projects
- using an external SPI flash in TouchGFX projects
Current version of library handles SPI communication via:
- standard SPI: W25Q handles QuadSPI but this library communicate using Standard SPI
- polling mode: no "interrupt mode" nor "DMA mode"
Here you can find video documentation about these topics:
Part one | "how to" use library, "how to" develop an EL, "how to" install an EL into CubeProgrammer | https://youtu.be/KlG2doCkREM |
Part two | "how to" create a low-RAM-demanding EL (specific for this repository) | |
Part three | "how to" use the SPI flash in TouchGFX projects, "how to" install an EL into CubeIDE | https://youtu.be/PO_2ZE1NQF0 |
Part four | "how to" map an external SPI flash memory in a CubeIDE project |
The sofware you find on this page, the page content and above videos, were developed upon this documentation:
Winbond W25Qxxx web page | https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash |
Jedec SFDP standard (requires registration) | https://www.jedec.org/document_search/field_doc_type/148?search_api_views_fulltext=JESD216 |
STM Mooc - External QSPI loader how to | https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/external_QSPI_loader.html |
STM repository of external flash loaders | https://github.com/STMicroelectronics/stm32-external-loader |
STM32CubeProgrammer documentation | https://www.st.com/resource/en/user_manual/um2237-stm32cubeprogrammer-software-description-stmicroelectronics.pdf |
STM32 Graphics: external QSPI flash in TouchGFX | https://youtu.be/RMgVo_uCTbw |
TouchGFX: Using Serial Flash for images and fonts | https://support.touchgfx.com/docs/development/scenarios/using-serial-flash |
The software, schemes and PCB designs in this set of repositories are provided just for illustrative purposes, sharing the personal experience on this project. The software and design artifacts are provided as-is without any mantainence and without warranty of any kind. There is no guarantee of fitness for any particular application, and no guarantee of completeness and correctness. By downloading and using these materials the user accepts all risks associated with the run of the software and construction and use of the circuits and devices described.
In questa pagina GitHub trovi una libreria di funzioni per STM32 (HAL) per la gestione di memorie SPI Flash Winbond (W25Qxxxx).
La libreria include anche le funzioni richieste per generare External Loader per STM32CubeProgrammer o per STM32CubeIDE.
Le funzioni per gli External Loaders sono sostanzialmente le stesse contenute nella mia "repository secondo la documentazione ST" che genera EL che richiedono più di 40 kB di RAM disponibile sul uC. Usando questa libreria "non ortodossa" dovresti essere in grado di sviluppare EL che richiedono circa 12kB di RAM.
Nella libreria sono presenti anche le funzioni richeste per integrare una memoria Flash esterna in progetti TouchGFX per memorizzare font ed immagini con trasferimento diretto flash->display (non è richiesta cache in RAM).
Puoi utilizzare quindi questo software per 4 scopi distinti:
- gestire una memoria flash esterna W25Q, leggendo o scrivendo direttamente sopra
- creare un External Loader per programmare la memoria flash via CubeProgrammer
- aggiungere l'external loader creato ad un progetto CubeIde allo scopo di programmare direttamente il chip esterno durante la creazione del progetto (come fatto per la flash interna al uC)
- aggiungere la memoria flash esterna ad un progetto TouchGFX. TouchGFX fornisce strumenti per rendere la memoria flash, gestita tramite un external loader, totalmente trasparente al progetto.
## Folder GitHub
Questa guida è suddivisa in 4 capitoli seguendo lo schema sopra.
- gestire una memoria flash W25Q attraverso questa libreria
- creare and usare an External Loader per le memorie flash SPI
- mappare una flash SPI esterna sui progetti CubeIDE
- usare una flash SPI esterna in progetti TouchGFX
La versione attuale della libreria gestisce la comunicazione SPI via:
- standard SPI: W25Q gestisce QuadSPI ma questa libreria usa Standard SPI
- polling mode: non viene usato "interrupt mode" nè "DMA mode"
Qui puoi trovare video relativi ai temi trattati in questa pagina:
Prima parte | "how to" - come usare la libreria, come creare un EL, come installare un EL in Cubeprogrammer | https://youtu.be/KlG2doCkREM |
Seconda parte |
"how to" - creare EL a basso consumo di RAM (specifico per questa repository) |
|
Terza parte | "how to" - come usare la memoria FLash SPI in un progetto TouchGFX, come installare un EL in CubeIDE per programmare la memoria flash in un progetto TouchGFX | https://youtu.be/PO_2ZE1NQF0 |
Quarta parte | "how to" - come mappare una memoria flash SPI in un progetto CubeIDE |
Il software, questa pagina ed i video sopra sono stati sviluppati sulla base di questa documentazione:
Winbond W25Qxxx web page | https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash |
Jedec SFDP standard (requires registration) | https://www.jedec.org/document_search/field_doc_type/148?search_api_views_fulltext=JESD216 |
STM Mooc - External QSPI loader how to | https://www.st.com/content/st_com/en/support/learning/stm32-education/stm32-moocs/external_QSPI_loader.html |
STM repository of external flash loaders | https://github.com/STMicroelectronics/stm32-external-loader |
STM32CubeProgrammer documentation | https://www.st.com/resource/en/user_manual/um2237-stm32cubeprogrammer-software-description-stmicroelectronics.pdf |
STM32 Graphics: external QSPI flash in TouchGFX | https://youtu.be/RMgVo_uCTbw |
TouchGFX: Using Serial Flash for images and fonts | https://support.touchgfx.com/docs/development/scenarios/using-serial-flash |
Il software e gli schemi di progetto come i layout PCB in questa serie di repository sono messe a disposizione con puro intento illustrativo e di condivisione dell'esperienza fatta Il software and gli elementi del progetto sono messi a disposizione "allo stato in cui sono" senza impegno di manutenzione e senza garanzie di alcun tipo. Piu' esplicitamente, non c'e' garanzia di adeguatezza a soddisfare specifiche esigenze, ne di completezza o correttezza di alcuna parte. Scaricando ed utilizzando questo materiale l'utilizzatore accetta il rischio associato all'esecuzione del programma e alla realizzazione ed all'utilizzo del circuito e dei componenti descritti in questo archivio.