mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-12 01:53:07 +03:00
add functions to read out the flash config
Serial.print(F("Flash Chip Size: ")); Serial.println(ESP.getFlashChipSize()); Serial.print(F("Flash Chip Speed: ")); Serial.println(ESP.getFlashChipSpeed()); Serial.print(F("Flash Chip Mode: 0x")); Serial.println(ESP.getFlashChipMode(), HEX);
This commit is contained in:
@ -82,6 +82,18 @@ void yield(void);
|
||||
#define degrees(rad) ((rad)*RAD_TO_DEG)
|
||||
#define sq(x) ((x)*(x))
|
||||
|
||||
#define kHz (1000L)
|
||||
#define MHz (1000L*kHz)
|
||||
#define GHz (1000L*MHz)
|
||||
|
||||
#define kBit (1024L)
|
||||
#define MBit (1024L*kBit)
|
||||
#define GBit (1024L*kBit)
|
||||
|
||||
#define kB (1024L)
|
||||
#define MB (1024L*kB)
|
||||
#define GB (1024L*MB)
|
||||
|
||||
void ets_intr_lock();
|
||||
void ets_intr_unlock();
|
||||
|
||||
|
@ -89,11 +89,6 @@ uint32_t EspClass::getChipId(void)
|
||||
return system_get_chip_id();
|
||||
}
|
||||
|
||||
uint32_t EspClass::getFlashChipId(void)
|
||||
{
|
||||
return spi_flash_get_id();
|
||||
}
|
||||
|
||||
const char * EspClass::getSDKversion(void)
|
||||
{
|
||||
return system_get_sdk_version();
|
||||
@ -113,3 +108,70 @@ uint8_t EspClass::getCPUfreqMHz(void)
|
||||
{
|
||||
return system_get_cpu_freq();
|
||||
}
|
||||
|
||||
|
||||
uint32_t EspClass::getFlashChipId(void)
|
||||
{
|
||||
return spi_flash_get_id();
|
||||
}
|
||||
|
||||
uint32_t EspClass::getFlashChipSize(void)
|
||||
{
|
||||
uint32_t data;
|
||||
uint8_t * bytes = (uint8_t *) &data;
|
||||
// read first 4 byte (magic byte + flash config)
|
||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||
switch((bytes[3] & 0xF0) >> 4) {
|
||||
case 0x0: // 4 Mbit (512KB)
|
||||
return (512 * kB);
|
||||
case 0x1: // 2 MBit (256KB)
|
||||
return (256 * kB);
|
||||
case 0x2: // 8 MBit (1MB)
|
||||
return (1 * MB);
|
||||
case 0x3: // 16 MBit (2MB)
|
||||
return (2 * MB);
|
||||
case 0x4: // 32 MBit (4MB)
|
||||
return (4 * MB);
|
||||
default: // fail?
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t EspClass::getFlashChipSpeed(void)
|
||||
{
|
||||
uint32_t data;
|
||||
uint8_t * bytes = (uint8_t *) &data;
|
||||
// read first 4 byte (magic byte + flash config)
|
||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||
switch(bytes[3] & 0x0F) {
|
||||
case 0x0: // 40 MHz
|
||||
return (40 * MHz);
|
||||
case 0x1: // 26 MHz
|
||||
return (26 * MHz);
|
||||
case 0x2: // 20 MHz
|
||||
return (20 * MHz);
|
||||
case 0xF: // 80 MHz
|
||||
return (80 * MHz);
|
||||
default: // fail?
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
FlashMode_t EspClass::getFlashChipMode(void)
|
||||
{
|
||||
FlashMode_t mode = FM_FAILD;
|
||||
uint32_t data;
|
||||
uint8_t * bytes = (uint8_t *) &data;
|
||||
// read first 4 byte (magic byte + flash config)
|
||||
if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) {
|
||||
mode = (FlashMode_t) bytes[2];
|
||||
if(mode > FM_DOUT) {
|
||||
mode = FM_FAILD;
|
||||
}
|
||||
}
|
||||
return mode;
|
||||
}
|
||||
|
@ -49,6 +49,14 @@ enum WakeMode {
|
||||
WAKE_RF_DISABLED = 4 // disable RF after deep-sleep wake up, just like modem sleep, there will be the smallest current.
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
FM_QIO = 0x00,
|
||||
FM_QOUT = 0x01,
|
||||
FM_DIO = 0x02,
|
||||
FM_DOUT = 0x03,
|
||||
FM_FAILD = 0xFF
|
||||
} FlashMode_t;
|
||||
|
||||
class EspClass {
|
||||
public:
|
||||
EspClass();
|
||||
@ -69,7 +77,7 @@ class EspClass {
|
||||
uint32_t getFreeHeap(void);
|
||||
|
||||
uint32_t getChipId(void);
|
||||
uint32_t getFlashChipId(void);
|
||||
|
||||
|
||||
const char * getSDKversion(void);
|
||||
|
||||
@ -78,6 +86,11 @@ class EspClass {
|
||||
|
||||
uint8_t getCPUfreqMHz(void);
|
||||
|
||||
uint32_t getFlashChipId(void);
|
||||
uint32_t getFlashChipSize(void);
|
||||
uint32_t getFlashChipSpeed(void);
|
||||
FlashMode_t getFlashChipMode(void);
|
||||
|
||||
};
|
||||
|
||||
extern EspClass ESP;
|
||||
|
Reference in New Issue
Block a user