

The W25Q128JV Module Header is a breakout board designed for the W25Q128JV flash memory chip. This module simplifies the integration of the W25Q128JV into electronic circuits by providing a convenient header interface. The W25Q128JV is a 128 Mbit (16 MB) serial flash memory chip that supports SPI (Serial Peripheral Interface) communication. It is widely used for data storage in embedded systems, IoT devices, and other applications requiring non-volatile memory.








The W25Q128JV Module Header exposes the following pins for connection:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (2.7V to 3.6V). Connect to the 3.3V power rail. |
| GND | 2 | Ground connection. Connect to the circuit ground. |
| CS | 3 | Chip Select. Active low signal to enable communication with the module. |
| SCK | 4 | Serial Clock. Provides the clock signal for SPI communication. |
| MOSI | 5 | Master Out Slave In. Data input to the module from the microcontroller. |
| MISO | 6 | Master In Slave Out. Data output from the module to the microcontroller. |
| WP | 7 | Write Protect. Active low signal to protect the memory from write operations. |
| HOLD | 8 | Hold. Active low signal to pause communication without resetting the SPI bus. |
VCC pin to a 3.3V power source and the GND pin to the ground of your circuit.CS, SCK, MOSI, and MISO pins to the corresponding SPI pins on your microcontroller or development board.WP and HOLD pins to VCC through pull-up resistors to disable their functionality.VCC and GND pins to stabilize the power supply.WP and HOLD pins if they are not actively controlled by your circuit.The Arduino UNO operates at 5V logic levels, so a level shifter is required to interface with the W25Q128JV Module Header. Below is an example of how to connect the module to an Arduino UNO and read the device ID.
| W25Q128JV Pin | Arduino UNO Pin |
|---|---|
| VCC | 3.3V (via level shifter) |
| GND | GND |
| CS | Pin 10 |
| SCK | Pin 13 |
| MOSI | Pin 11 |
| MISO | Pin 12 |
| WP | 3.3V (via pull-up resistor) |
| HOLD | 3.3V (via pull-up resistor) |
#include <SPI.h>
// Define SPI pins for the W25Q128JV module
const int CS_PIN = 10;
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Set up the Chip Select pin
pinMode(CS_PIN, OUTPUT);
digitalWrite(CS_PIN, HIGH); // Set CS high to disable the module initially
// Initialize SPI
SPI.begin();
Serial.println("W25Q128JV Module Initialized");
// Read and print the device ID
readDeviceID();
}
void loop() {
// Main loop does nothing in this example
}
void readDeviceID() {
// Enable the module by pulling CS low
digitalWrite(CS_PIN, LOW);
// Send the "Read ID" command (0x90)
SPI.transfer(0x90);
// Send dummy bytes to specify address (not used for this command)
SPI.transfer(0x00);
SPI.transfer(0x00);
SPI.transfer(0x00);
// Read the manufacturer ID and device ID
byte manufacturerID = SPI.transfer(0x00);
byte deviceID = SPI.transfer(0x00);
// Disable the module by pulling CS high
digitalWrite(CS_PIN, HIGH);
// Print the IDs to the serial monitor
Serial.print("Manufacturer ID: 0x");
Serial.println(manufacturerID, HEX);
Serial.print("Device ID: 0x");
Serial.println(deviceID, HEX);
}
No Response from the Module
CS pin is correctly toggled (active low) during communication.Corrupted Data
Write Protection Enabled
WP pin is not pulled low. If unused, connect it to VCC through a pull-up resistor.Arduino UNO Logic Level Mismatch
Q: Can I use the W25Q128JV Module Header with a 5V microcontroller?
A: Yes, but you must use level shifters to convert the 5V logic levels to 3.3V to avoid damaging the module.
Q: What is the purpose of the HOLD pin?
A: The HOLD pin allows the SPI communication to be paused without resetting the module. If unused, connect it to VCC through a pull-up resistor.
Q: How do I erase data on the W25Q128JV?
A: Use the appropriate SPI commands (e.g., Sector Erase or Chip Erase) as specified in the W25Q128JV datasheet. Ensure the WP pin is not active during erase operations.