在 ESP32 for Arduino固件中, 有一个对象叫ESP,今天我们花点时间看一下这个对象
一. 获取信息类方法:
1. ESP.getChipRevision() //获取芯片版本
返回: uint8_t
ESP.getChipRevision: 1
2. ESP.getCpuFreqMHz() //获取CPU频率
返回: uint32_t
ESP.getCpuFreqMHz: 240
3. ESP.getCycleCount //循环计数??
返回: uint32_t
ESP.getCycleCount: 1210809053
4. ESP.getEfuseMac //获取Efuse的地址
ESP.getEfuseMac: 277342979060028
Efuse类似于EEPROM,是一次性可编程存储器,在芯片出场之前会被写入信息,在一个芯片中,efuse的容量通常很小,一些芯片efuse只有128bit
Efuse可用于存储MEM repair的存储修复数据,也可用于存储芯片的信息:如芯片可使用电源电压,芯片的版本号,生产日期。在厂家生产好die后,会进行测试,将芯片的信息写到efuse中去。
5. ESP.getFlashChipMode //获取FLASH芯片类型
返回 FlashMode_t 类型
ESP.getFlashChipMode: 2
证明我们的flash 是工作在 FM_DIO模式下的
关于flash的工作模式:
Flash 常用的工作模式有 4 种:DOUT/DIO/QOUT/QIO
- DOUT:地址为 1 线模式输入,数据为 2 线模式输出
- DIO:地址为 2 线模式输入,数据为 2 线模式输出
- QOUT:地址为 1 线模式输入,数据为 4 线模式输出
- QIO:地址为 4 线模式输入,数据为 4 线模式输出
用户如果需要使用 QIO 模式,则需要在选择 Flash 时确认该 Flash 是否支持 QIO 模式。
关于四种模式的详细介绍请参考: https://github.com/espressif/esptool/wiki/SPI-Flash-Modes
6. ESP.getFlashChipSize //获取FLASH芯片的容量
ESP.getFlashChipSize: 4194304
7. ESP.getFlashChipSpeed //获取FLASH芯片的速度
ESP.getFlashChipSpeed: 40000000
8. ESP.getFreeHeap //获取空闲堆
ESP.getFreeHeap: 358524
9. ESP.getFreePsram //获取空闲的Psram
ESP.getFreePsram: 0
我用的ESP32-WROOM是没用psram的, ESP32-WROVER系列有
详细信息请查阅: https://www.espressif.com/zh-hans/products/modules/esp32
10. ESP.getFreeSketchSpace //获取空闲的程序空间
ESP.getFreeSketchSpace: 1310720
11. ESP.getHeapSize //获取堆的容量
ESP.getHeapSize: 384584
12. ESP.getMaxAllocHeap //获取最大堆分配
ESP.getMaxAllocHeap: 124832
关于最大堆/最小堆 请参考:https://blog.csdn.net/varyall/article/details/81099681
13. ESP.getMaxAllocPsram //获取最大PSram分配
ESP.getMaxAllocPsram: 0
14. ESP.getMinFreeHeap //获取最小空闲堆
ESP.getMinFreeHeap: 352340
15. ESP.getMinFreePsram //获取最小空闲Psram
ESP.getMinFreePsram: 0
16. ESP.getPsramSize //获取PSram空间
ESP.getPsramSize: 0
17. ESP.getSdkVersion //获取SDK版本
ESP.getSdkVersion: v3.2.3-14-gd3e562907
18. ESP.getSketchMD5 //获取程序的MD5值
ESP.getSketchMD5: 1bb944b47607468c0f7a7e3ccdf2a579
19. ESP.getSketchSize //获取程序的容量
ESP.getSketchSize: 243024
二. 设置类函数
1. ESP.deepSleep(10000000); //ESP32深睡眠一段时间
这个函数可以让ESP32深睡眠若干长度的时间, 经测试和开启定时器唤醒的深睡眠效果一样, 不知道具体有什么不同
2. ESP.restart(); //重启ESP32
直接让ESP32重启
接下来的这些函数我没用测试, 只是采测他们的功能
3. ESP.flashEraseSector() //删除flash的一个扇区
bool flashEraseSector(uint32_t sector)
4. ESP.flashRead //读flash
bool flashRead(uint32_t offset, uint32_t *data, size_t size)
5. ESP.flashWrite //写flash
bool flashWrite(uint32_t offset, uint32_t *data, size_t size)
6. ESP.magicFlashChipMode //更改Flash工作模式
FlashMode_t magicFlashChipMode(uint8_t byte)
7. ESP.magicFlashChipSize //更改flash大小
uint32_t magicFlashChipSize(uint8_t byte)
8. ESP.magicFlashChipSpeed //更改flash速度
uint32_t magicFlashChipSpeed(uint8_t byte)
一般用默认的40M就可以, 如果想改参考函数源码