For many modern and powerful chips like the RP2040, ESP32, RT10xx and STM32 series microcontrollers, designers can save money and reduce the number of chip options by not including building in the Flash memory used to store code and resources. Instead, an external QSPI Flash memory chip is wired up that can provide up to 16 Megabytes (a.k.a 128 Megabits) of memory. It's not as fast as if it were on the microcontroller internal bus but with Quad SPI I/O and some clever caching by the chip designer, it's pretty effective!
To make prototyping and designing with QSPI flash a little easier, we designed these breakouts that convert the wide 8-SOIC packages to a cute 0.3" wide DIP. We find these handy when testing out different flash sizes, or if we just want to add more storage memory to a project.
There are three variants for these breakouts:
- W25Q16JVSSIQ, a 3.3V power and logic 16-Megabit / 2 Mega-byte chip.
- W25Q64JVSSIQ, a 3.3V power and logic 64-Megabit / 8 Mega-byte chip.
- W25Q128JVSSIQ, a 3.3V power and logic 128-Megabit / 16 Mega-byte chip.
Note that the Q at the end means that the Quad Enable bit is permanently set in the status register. If you're using this in QSPI mode, then it'll work right out of the box. If you're using this in SPI mode, the 'hold' and 'write protect' pins don't do anything, so just connect them to 3.3V.
In Arduino, we have the Adafruit_SPIFlash library that can be used to interface with this chip - but don't forget it's only good for 3.3V logic and power!
In CircuitPython, this chip has a TOML definition file so you could use it in a board definition.
Comes with a bit of header that can be used to solder in and plug into a breadboard or to replace an existing socketed SPI flash DIP chip.