ข้อมูลทั่วไป
- 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 อย่าง)
- 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);
}
- 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() {}
- OTA Firmware Storage (Concept):
- ใช้ W25Q32 เก็บ image firmware เพื่ออัปเดตระบบผ่าน SPI
- โค้ดเฉพาะต้องอาศัย bootloader หรือ library เพิ่มเติม เช่น สำหรับ ESP32 หรือ STM32
หมายเหตุ
- ต้องใช้ library ที่รองรับ เช่น SPIMemory หรือ W25QXX
- CS กำหนดตามบอร์ดของคุณ เช่น Arduino Uno = 10
- VCC ควร 3.3V