The Winbond Flash Memory provides extended megabits and bytes serial flash, used for storage on chip solution system with limited space, pins and power. The W25Q series provides flexibility and enhance performance beyond ordinary Serial Flash Devices. This device are ideal for code shadowing to RAM, executing code directly from the Dual Quad SPI storing voice, text, and data. This device operates on a single 2.7v ~ 3.6v power supply with current consumption as low as 4mA active & 1uA for power down. For this demonstration we will going to wire the W25Q80BV an 8Mbit serial flash memory which is available in modular type suited for any microcontroller like Arduino, Tenssy, and other popular microcontrollers.

Wiring the Winbond W25QXX SPI Serial Flash Memory with Microcontroller

Required Components

Arduino Microcontroller, NodeMCU, Teensy Board, TeensyDuino, ESP8266 12, 12E, ESP8266 NodeMCU, ESPDuino, ATMEGA328 16/12, ATMEGA32u4 16/8/ MHz, ESP8266, ATMEGA250 16 MHz, ATSAM3x8E, ATSAM21D, ATTINY85 16/8 MHz (Note: The Diagram below is using NANO. (please refer to the respective pin-outs)

 

  • WindBond SPI Flash Memory Chip / Windbond SPI Flash Memory Module
  • 10k Resistor
  • 4.7k Resistor
  • 0.01 uF Capacitor
  • Jumper Wire / DuPont Wire
  • Solder Less Bread Board

Wiring Guide

Wiring the Winbond W25QXX SPI Serial Flash Memory with Microcontroller

Source Code

Downloads

Download the W25Q80BV Datasheet | PDF
Download the W25Q80BV Code Library  Using ATTINY85 | Zip

 

Wiring the Winbond W25Q80BV / W25QXX SPI Serial Flash Memory with Microcontroller
Facebooktwitterredditpinterestmail
Tagged on:     

JLCPCBPCBgogoPCBway4pcb

6 thoughts on “Wiring the Winbond W25Q80BV / W25QXX SPI Serial Flash Memory with Microcontroller

  • at
    Permalink

    How do i write a command,i cant get it to work,can you show an example,ive tryed this chip_erase it doesnt work does it need to be like this “chip_erase” or : “chip_erase” ive tryed everything.thanks

    Reply
  • at
    Permalink

    See the timing diagram in section 9.2.26 of the data sheet, “Chip Erase (C7h / 06h) / See the datasheet for the SPI timing. you can execute the wire command address 0xC7.

    void _chip_erase(void) {
    digitalWrite(SS, HIGH);
    digitalWrite(SS, LOW);
    SPI.transfer(writeEnable);
    digitalWrite(SS, HIGH);
    digitalWrite(SS, LOW);
    SPI.transfer(chipErase);
    digitalWrite(SS, HIGH);

    Reply
  • at
    Permalink

    I get the following error compiling for nano;
    ‘WB_READ_STATUS_REG_1’ was not declared in this scope

    Reply
    • at
      Permalink

      So do I.. Cannot get the sketch to work no matter what. Since the W25Q80BV is no longer manufactured I am using a W25X20CL, it is very very small and difficult to solder wires to, But even it does nothing. Only prints READY and that is the end. How should it work??
      Thank you

      Reply
    • at
      Permalink

      In the #define section you can find the following definition:

      #define readStatusReg1 0x05 // Address Read Status

      Just edit the line 172 and replace SPI.transfer(WB_READ_STATUS_REG_1); line
      with the nex line:

      SPI.transfer(readStatusReg1);

      Reply
  • at
    Permalink

    j’ai besion ce fichier flash w25q80dv

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *