在 ESP32 for Arduino固件中, 有一個(gè)對(duì)象叫ESP,今天我們花點(diǎn)時(shí)間看一下這個(gè)對(duì)象
一. 獲取信息類方法:
1. ESP.getChipRevision() //獲取芯片版本
返回: uint8_t
ESP.getChipRevision: 1
2. ESP.getCpuFreqMHz() //獲取CPU頻率
返回: uint32_t
ESP.getCpuFreqMHz: 240
3. ESP.getCycleCount //循環(huán)計(jì)數(shù)??
返回: uint32_t
ESP.getCycleCount: 1210809053
4. ESP.getEfuseMac //獲取Efuse的地址
ESP.getEfuseMac: 277342979060028
Efuse類似于EEPROM,是一次性可編程存儲(chǔ)器,在芯片出場(chǎng)之前會(huì)被寫入信息,在一個(gè)芯片中,efuse的容量通常很小,一些芯片efuse只有128bit
Efuse可用于存儲(chǔ)MEM repair的存儲(chǔ)修復(fù)數(shù)據(jù),也可用于存儲(chǔ)芯片的信息:如芯片可使用電源電壓,芯片的版本號(hào),生產(chǎn)日期。在廠家生產(chǎn)好die后,會(huì)進(jìn)行測(cè)試,將芯片的信息寫到efuse中去。
5. ESP.getFlashChipMode //獲取FLASH芯片類型
返回 FlashMode_t 類型

ESP.getFlashChipMode: 2
證明我們的flash 是工作在 FM_DIO模式下的
關(guān)于flash的工作模式:
Flash 常用的工作模式有 4 種:DOUT/DIO/QOUT/QIO
- DOUT:地址為 1 線模式輸入,數(shù)據(jù)為 2 線模式輸出
- DIO:地址為 2 線模式輸入,數(shù)據(jù)為 2 線模式輸出
- QOUT:地址為 1 線模式輸入,數(shù)據(jù)為 4 線模式輸出
- QIO:地址為 4 線模式輸入,數(shù)據(jù)為 4 線模式輸出
用戶如果需要使用 QIO 模式,則需要在選擇 Flash 時(shí)確認(rèn)該 Flash 是否支持 QIO 模式。
關(guān)于四種模式的詳細(xì)介紹請(qǐng)參考: 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系列有
詳細(xì)信息請(qǐng)查閱: 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
關(guān)于最大堆/最小堆 請(qǐng)參考: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
二. 設(shè)置類函數(shù)
1. ESP.deepSleep(10000000); //ESP32深睡眠一段時(shí)間
這個(gè)函數(shù)可以讓ESP32深睡眠若干長度的時(shí)間, 經(jīng)測(cè)試和開啟定時(shí)器喚醒的深睡眠效果一樣, 不知道具體有什么不同
2. ESP.restart(); //重啟ESP32
直接讓ESP32重啟
接下來的這些函數(shù)我沒用測(cè)試, 只是采測(cè)他們的功能
3. ESP.flashEraseSector() //刪除flash的一個(gè)扇區(qū)
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)
一般用默認(rèn)的40M就可以, 如果想改參考函數(shù)源碼
