I'm using an SPI flash module from onehorse, and it works on T3.2 (MK20DX256).
But the same chip does not work on a Teensy LC. It's on a breadboard, and swapping the T-3.2 on the breadboard with a T-LC, it won't work.
Just doing the simple EraseEverything and RawHardwareTest.
T3.2 output for EraseEverything:
Teensy LC output:
Is there any difference between T-3.2 and T-LC with SPI?
But the same chip does not work on a Teensy LC. It's on a breadboard, and swapping the T-3.2 on the breadboard with a T-LC, it won't work.
Just doing the simple EraseEverything and RawHardwareTest.
T3.2 output for EraseEverything:
Flash Memory has 67108864 bytes.
Erasing ALL Flash Memory:
estimated wait: 134 seconds.
Yes, full chip erase is SLOW!
............................................................
....................................................
Erase completed
actual wait: 114 seconds.
Teensy LC output:
Flash Memory has 1048576 bytes.
Erasing ALL Flash Memory:
estimated wait: 3 seconds.
Yes, full chip erase is SLOW!
.............
Code:
#include <SerialFlash.h>
#include <SPI.h>
//const int FlashChipSelect = 10;
const int FlashChipSelect = 6; // digital pin for flash chip CS pin
//const int FlashChipSelect = 21; // Arduino 101 built-in SPI Flash
SerialFlashFile file;
const unsigned long testIncrement = 4096;
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 up to 10 seconds for Arduino Serial Monitor
unsigned long startMillis = millis();
while (!Serial && (millis() - startMillis < 10000)) ;
delay(100);
SerialFlash.begin(FlashChipSelect);
unsigned char id[5];
SerialFlash.readID(id);
unsigned long size = SerialFlash.capacity(id);
if (size > 0) {
Serial.print("Flash Memory has ");
Serial.print(size);
Serial.println(" bytes.");
Serial.println("Erasing ALL Flash Memory:");
// Estimate the (lengthy) wait time.
Serial.print(" estimated wait: ");
int seconds = (float)size / eraseBytesPerSecond(id) + 0.5;
Serial.print(seconds);
Serial.println(" seconds.");
Serial.println(" Yes, full chip erase is SLOW!");
SerialFlash.eraseAll();
unsigned long dotMillis = millis();
unsigned char dotcount = 0;
while (SerialFlash.ready() == false) {
if (millis() - dotMillis > 1000) {
dotMillis = dotMillis + 1000;
Serial.print(".");
dotcount = dotcount + 1;
if (dotcount >= 60) {
Serial.println();
dotcount = 0;
}
}
}
if (dotcount > 0) Serial.println();
Serial.println("Erase completed");
unsigned long elapsed = millis() - startMillis;
Serial.print(" actual wait: ");
Serial.print(elapsed / 1000ul);
Serial.println(" seconds.");
}
}
float eraseBytesPerSecond(const unsigned char *id) {
if (id[0] == 0x20) return 152000.0; // Micron
if (id[0] == 0x01) return 500000.0; // Spansion
if (id[0] == 0xEF) return 419430.0; // Winbond
if (id[0] == 0xC2) return 279620.0; // Macronix
return 320000.0; // guess?
}
void loop() {
}
Is there any difference between T-3.2 and T-LC with SPI?