คู่มือใช้งาน W25Q32 32Mbit 4MByte SPI Flash พร้อมโปรเจ็คแนะนำและโค้ดตัวอย่าง


ข้อมูลทั่วไป

  • Flash chip W25Q32 ขนาด 32Mbit (4MByte)
  • สนับสนุน SPI (Standard/Dual/Quad)
  • ใช้ไฟ 2.7-3.6V, อายุเก็บข้อมูล >20ปี
  • รองรับความเร็วสูงสุด 104MHz
  • ใช้กับ Arduino, ESP32, STM32

Pinout การต่อใช้งานหลัก

  • CS, CLK, MOSI, MISO, VCC, GND

ตัวอย่างโค้ด Arduino กับ Library SPIMemory (Marzogh)

#include <SPIMemory.h>
SPIFlash flash(10); // CS=10
void setup() {
  Serial.begin(115200);
  flash.begin();
  flash.writeByte(0x000000, 123); // เขียนข้อมูล
  byte value = flash.readByte(0x000000); // อ่านข้อมูล
  Serial.println(value);
}
void loop() {}

แนวคิดโปรเจ็ค+โค้ดตัวอย่าง (3 อย่าง)

  1. Data Logger (บันทึกค่าจาก sensor เช่น DHT11):
#include <SPIMemory.h>
#include <DHT.h>
SPIFlash flash(10);
DHT dht(2, DHT11);
long addr=0;
void setup() {
  Serial.begin(115200); dht.begin(); flash.begin();
}
void loop() {
  float h = dht.readHumidity(); float t = dht.readTemperature();
  flash.writeFloat(addr, t); addr+=4; flash.writeFloat(addr, h); addr+=4;
  delay(10000);
}
  1. File Storage (เก็บไฟล์ข้อความ):
#include <SPIMemory.h>
SPIFlash flash(10);
char data[] = "Eleceasy SPI Flash!";
void setup() { Serial.begin(115200); flash.begin(); flash.writeCharArray(0,data,sizeof(data)); }
void loop() {}
  1. OTA Firmware Storage (Concept):
  • ใช้ W25Q32 เก็บ image firmware เพื่ออัปเดตระบบผ่าน SPI
  • โค้ดเฉพาะต้องอาศัย bootloader หรือ library เพิ่มเติม เช่น สำหรับ ESP32 หรือ STM32

หมายเหตุ

  • ต้องใช้ library ที่รองรับ เช่น SPIMemory หรือ W25QXX
  • CS กำหนดตามบอร์ดของคุณ เช่น Arduino Uno = 10
  • VCC ควร 3.3V