SST25VF080B 是一款 SPI NOR 芯片,容量为1MB(8MBITs)【参考1】。这次测试的使用 Arduino Pro Micro 【参考2】进行读写(它使用32U4 作为主控,工作在8Mhz,3.3V 下面)。特别注意,这个SPI NOR 工作电压为3.3V。
具体连接如下:
编写的测试代码如下:
#include <SST25VF.h>
#include <SPI.h>
#define MemCs 6 //CS#
#define MemWp 4 //WP#
#define MemHold 7 //HOLD#
#define EraseSwitch 5 //擦除开关
#define WriteSwitch 8 //写入开关
SST25VF flash;
uint8_t buffer[]="www.lab-z.com 2022";
void setup() {
Serial.begin(115200);
pinMode(EraseSwitch, INPUT_PULLUP);
pinMode(WriteSwitch, INPUT_PULLUP);
flash.begin(MemCs, MemWp, MemHold);
}
void loop() {
// 函数内部直接串口输出
flash.readID();
if (digitalRead(EraseSwitch) == LOW) {
// 擦除 Sector 0
Serial.println("erasing...");
flash.sectorErase(0);
}
if (digitalRead(WriteSwitch) == LOW) {
// 写入字符串
Serial.println("writing...");
flash.writeArray(0,buffer,sizeof(buffer));
}
//读取
flash.readArray(0,buffer,sizeof(buffer));
Serial.print("Read: ");
for (int i=0;i<sizeof(buffer);i++) {
Serial.print((char)buffer[i]);
}
Serial.println("");
delay(5000);
}
代码会读取当前芯片的 ID显示出来,然后读取 Address 0开始的数据,以 ASCII字符显示出来。同时预留了D5和D8。当D5接地时会进行Sector 0 的擦除动作;当D8接地时会对 Address 0 写入一个字符串。
参考:
1.芯片收据手册 https://ww1.microchip.com/downloads/en/DeviceDoc/20005045C.pdf
2.Arduino Pro Micro 引脚定义 https://content.arduino.cc/assets/Pinout-Micro_latest.pdf