44 lines
1.4 KiB
Arduino
44 lines
1.4 KiB
Arduino
|
|
// Blink LED_BUILTIN slower if the FLASH chip is detected, and faster if there is no FLASH chip detected
|
||
|
|
// Code by Felix Rusu, LowPowerLab.com
|
||
|
|
#include <SPIFlash.h> //https://github.com/lowpowerlab/spiflash
|
||
|
|
#include <SPI.h>
|
||
|
|
|
||
|
|
#define SERIAL_ENABLE
|
||
|
|
#define BLINK_FAST_DELAY 100
|
||
|
|
#define BLINK_SLOW_DELAY 500
|
||
|
|
|
||
|
|
SPIFlash flash(SS_FLASHMEM, 0xEF30); //EF40 for 16mbit windbond chip
|
||
|
|
int LEDTIME = 500;
|
||
|
|
|
||
|
|
// the setup routine runs once when you press reset:
|
||
|
|
void setup() {
|
||
|
|
#ifdef SERIAL_ENABLE
|
||
|
|
Serial.begin(115200);
|
||
|
|
delay(4000); //wait a bit until SerialMonitor can be opened
|
||
|
|
#endif
|
||
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
||
|
|
|
||
|
|
if (flash.initialize()) {
|
||
|
|
Serial.println("SPI Flash Init OK!");
|
||
|
|
LEDTIME = BLINK_SLOW_DELAY;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
Serial.println("SPI Flash Init FAIL! (is chip soldered?)");
|
||
|
|
LEDTIME = BLINK_FAST_DELAY;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// the loop routine runs over and over again forever:
|
||
|
|
void loop() {
|
||
|
|
word jedecid = flash.readDeviceId();
|
||
|
|
#ifdef SERIAL_ENABLE
|
||
|
|
Serial.print("FLASH DeviceID: ");
|
||
|
|
Serial.println(jedecid, HEX);
|
||
|
|
Serial.print("FLASH init "); Serial.println(flash.initialize() ? "OK" : "FAIL");
|
||
|
|
#endif
|
||
|
|
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
|
||
|
|
delay(LEDTIME); // wait for a second
|
||
|
|
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
|
||
|
|
delay(LEDTIME); // wait for a second
|
||
|
|
}
|