|
|
|
|
|
|
|
|
|
|
|
#include <SerialFlash.h> |
|
|
|
|
|
#include <SPI.h> |
|
|
|
|
|
|
|
|
|
|
|
const int FlashChipSelect = 6; // digital pin for flash chip CS pin |
|
|
|
|
|
//const int FlashChipSelect = 21; // Arduino 101 built-in SPI Flash |
|
|
|
|
|
|
|
|
|
|
|
void setup() { |
|
|
|
|
|
//uncomment these if using Teensy audio shield |
|
|
|
|
|
//SPI.setSCK(14); // Audio shield has SCK on pin 14 |
|
|
|
|
|
//SPI.setMOSI(7); // Audio shield has MOSI on pin 7 |
|
|
|
|
|
|
|
|
|
|
|
//uncomment these if you have other SPI chips connected |
|
|
|
|
|
//to keep them disabled while using only SerialFlash |
|
|
|
|
|
//pinMode(4, INPUT_PULLUP); |
|
|
|
|
|
//pinMode(10, INPUT_PULLUP); |
|
|
|
|
|
|
|
|
|
|
|
Serial.begin(9600); |
|
|
|
|
|
|
|
|
|
|
|
// wait for Arduino Serial Monitor |
|
|
|
|
|
while (!Serial) ; |
|
|
|
|
|
delay(100); |
|
|
|
|
|
Serial.println("All Files on SPI Flash chip:"); |
|
|
|
|
|
|
|
|
|
|
|
if (!SerialFlash.begin(FlashChipSelect)) { |
|
|
|
|
|
while (1) { |
|
|
|
|
|
Serial.println("Unable to access SPI Flash chip"); |
|
|
|
|
|
delay(2500); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
SerialFlash.opendir(); |
|
|
|
|
|
int filecount = 0; |
|
|
|
|
|
while (1) { |
|
|
|
|
|
char filename[64]; |
|
|
|
|
|
uint32_t filesize; |
|
|
|
|
|
|
|
|
|
|
|
if (SerialFlash.readdir(filename, sizeof(filename), filesize)) { |
|
|
|
|
|
Serial.print(" "); |
|
|
|
|
|
Serial.print(filename); |
|
|
|
|
|
Serial.print(", "); |
|
|
|
|
|
Serial.print(filesize); |
|
|
|
|
|
Serial.print(" bytes"); |
|
|
|
|
|
SerialFlashFile file = SerialFlash.open(filename); |
|
|
|
|
|
if (file) { |
|
|
|
|
|
unsigned long usbegin = micros(); |
|
|
|
|
|
unsigned long n = filesize; |
|
|
|
|
|
char buffer[256]; |
|
|
|
|
|
while (n > 0) { |
|
|
|
|
|
unsigned long rd = n; |
|
|
|
|
|
if (rd > sizeof(buffer)) rd = sizeof(buffer); |
|
|
|
|
|
file.read(buffer, rd); |
|
|
|
|
|
n = n - rd; |
|
|
|
|
|
} |
|
|
|
|
|
unsigned long usend = micros(); |
|
|
|
|
|
Serial.print(", read in "); |
|
|
|
|
|
Serial.print(usend - usbegin); |
|
|
|
|
|
Serial.print(" us, speed = "); |
|
|
|
|
|
Serial.print((float)filesize * 1000.0 / (float)(usend - usbegin)); |
|
|
|
|
|
Serial.println(" kbytes/sec"); |
|
|
|
|
|
file.close(); |
|
|
|
|
|
} else { |
|
|
|
|
|
Serial.println(" error reading this file!"); |
|
|
|
|
|
} |
|
|
|
|
|
filecount = filecount + 1; |
|
|
|
|
|
} else { |
|
|
|
|
|
if (filecount == 0) { |
|
|
|
|
|
Serial.println("No files found in SerialFlash memory."); |
|
|
|
|
|
} |
|
|
|
|
|
break; // no more files |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void loop() { |
|
|
|
|
|
} |
|
|
|
|
|
|