Notice: get_currentuserinfo is deprecated since version 4.5.0! Use wp_get_current_user() instead. in /home/corecom/public_html/wp-includes/functions.php on line 3853

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
Facebooktwittergoogle_plusredditpinterestmail
Tagged on:     

2 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

Leave a Reply

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