ESP32 Dev Kitc 開發板

產品資訊

規格

  • 產品:ESP32
  • 程式指南:ESP-IDF
  • 發布版本:v5.0.9
  • 製造商: 樂鑫系統
  • 發售日期:16 年 2025 月 XNUMX 日

產品使用說明

1. 開始使用

在開始學習 ESP32 之前,請先熟悉它。
下列的:

1.1 簡介

了解其基本功能和性能
ESP32。

1.2 你需要什麼

請確保您擁有必要的硬體和軟體:

  • 硬體: 請檢查所需硬體清單。
    成分。
  • 軟體: 安裝所需軟體
    成分。

1.3 安裝

請依照以下步驟安裝 IDE 並進行設置
環境:

  • 整合開發環境: 安裝建議的 IDE
    對 ESP32 進行程式設計。
  • 手動安裝: 手動設定
    如有需要,可設定環境。

1.4 建構你的第一個項目

使用 ESP32 建立並建立您的初始專案。

1.5 卸載 ESP-IDF

如有需要,請學習如何從您的系統中卸載 ESP-IDF。
系統。

2. API 參考

有關詳細信息,請參閱 API 文件。
應用協定、錯誤處理和配置
結構。

常見問題 (FAQ)

Q:如何排除 ESP32 的常見問題?

答:請參閱程式指南中的故障排除部分。
或訪問製造商 web支持資源網站。

Q:我可以將 ESP-IDF 與其他微控制器一起使用嗎?

答:ESP-IDF 是專門為 ESP32 設計的,但您可能會發現
與其他樂鑫微控制器的兼容性。

ESP32
ESP-IDF 編程指南
版本 v5.0.9 Espressif Systems 2025年5月16日

目錄

目錄

i

1 開始

3

1.1 簡介 .................................................................................................................................................................................................................. 3

1.2 你需要什麼…3

1.2.1 硬體 . ...

1.2.2 軟體 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3 安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 整合開發環境。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 14

1.3.2 手動安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 . . .

1.4 建構你的第一個項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5 卸載 ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 .

2 API 參考

45

2.1 API 約定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.1 錯誤處理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.2 配置結構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.3 私有 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.4 組件amp項目……46

2.1.5 API 穩定性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2 應用層協定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.1 ASIO 連接埠。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 48

2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.5 ESP HTTP 用戶端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.6 ESP 本地控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95. . . .

2.2.7 ESP 串列口從機鏈路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104. .

2.2.8 ESP x509 憑證包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.9 HTTP 伺服器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.10 HTTPS 伺服器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.11 ICMP 回顯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.12 mDNS 服務 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.14 IP網路層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 1.

2.3 藍牙 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.1 Bluetooth® 通用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161. .

2.3.2 藍牙®低功耗技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.3 藍牙®經典版 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.4 控制器與人機互動介面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.6 基於 NimBLE 的主機 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4 錯誤代碼參考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5 網路 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.5.1 無線網路。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。第776章

2.5.2 乙太網路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .899. . . .

2.5.3 線程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i

2.5.4 ESP-NETIF。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP 網路層。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 應用層。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 外圍設備 API。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 類比數位轉換器 (ADC) 單穩態模式驅動程式。 . . . . . . . . . . . . . . . . 977 2.6.2 類比數位轉換器 (ADC) 連續模式驅動器。 . . . . . . . . . . . . . . 986 2.6.3 類比數位轉換器 (ADC) 校準驅動程式。 . . . . . . . . . . . . . . . . . . 993 2.6.4 時鐘樹。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 數位類比轉換器 (DAC)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO 和 RTC GPIO。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 通用定時器(GPTimer)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 積體電路間通訊 (I2C)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 積體電路間音訊(I2S)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 LED 控制 (LEDC)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 馬達控制脈衝寬度調變器(MCPWM)。 . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 脈衝計數器 (PCNT)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 遙控器收發器 (RMT)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 SD 上拉要求。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 SDMMC 主機驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI 主機驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 SDIO 卡從屬驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Sigma-Delta調製(SDM)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 SPI 主驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI 從機驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE(安全元件)。 . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 觸控感應器。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 雙線汽車介面 (TWAI)。 . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 通用非同步接收器/發射器 (UART)。 . . . . . . . . . . . . . . . . . 1317 2.7 項目配置。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 引言。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 項目配置選單。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 使用 sdkconfig.defaults。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Kconfig 格式化規則。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Kconfig 選項的向後相容性。 . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 配置選項參考。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 配置 API。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 協定通訊。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 統一配置。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Wi-Fi 設定。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 儲存 API。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File系統支援 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 。 . . . . . . . . . . . . . . . . . 1725 2.9.5 SD/SDIO/MMC. . . . 1725 2.9.5 SD/SDIO/MMC. . . 驅動程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI Flash API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS File系統 . . . . . . . . . . . . . . . . . . . . . . . . . file系統組件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9. 均衡 . . . . . . 1784 2.9.9 ... 均衡 1. 1.應用映像格式 . ... . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 錯誤代碼和輔助函數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 . .
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .view) . . . . . . . . . . . . . . . . . . . . . . . 1869 . . . . . . . . . . 1869 .10.P. 1988年2月10日 13 堆記憶體分配 . ... . . . . 2032 2.10.16 內部和不穩定 API . ... . . . . . . . . . . . . . . . 2045 2.1 . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 效能監視器 . ... 2087 2.10.24 POSIX 執行緒支援 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 隨機數產生 . ... . . . . . . . . . . . 2099 2.10 . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 系統時間 . . . . . 2111 2.10.2 . . . . . . . . . . . . . . . . . . . 2126 2.10.30 ULP 協處理器程式設計 . ...

3 硬件參考

2167

3.1 晶片系列對比 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.1.1 相關文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2170. .

4份API指南

2171

4.1 應用層追蹤庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.1.1 結束view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171個

4.1.2 操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.1.3 配置選項與相依性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 如何使用此函式庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.2 應用程式啟動流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.2.1 首先tag引導程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . 28.

4.2.2 秒tag引導程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182 . .

4.2.3 應用程式啟動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.3 藍牙®經典版 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 結束view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184個

4.4 藍牙® 低功耗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4.1 結束view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186個

4.4.2 開始使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4.3 專業版file 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2240

4.5 引導程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 引導程式相容性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2285.

4.5.2 日誌等級 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5.3 恢復出廠設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2286 . .

4.5.4 從測試韌體啟動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5.5 回滾 . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 監視程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5.7 引導程式大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2287. .

4.5.8 從深度睡眠狀態快速啟動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287 . .

4.5.9 自訂引導程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2287 .

4.6 建置系統 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.6.1 結束view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288個

4.6.2 使用建置系統 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2289.

三、

4.6.3 前amp項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29.4 . File . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 組件 CMakeListsLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6. 組件 . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 項目部分內容的覆蓋 . .3.3 . . . . . . . . . . . . . . . . . . . 2300 4.6.12 範例amp組件 CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 . 定義 SDK 配置值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Flash 參數 . ... . . 2305 4.6.15 建置程式 183.83. . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 在自訂 CMake 專案中使用 ESP-IDF . ... File 全域匹配與增量建置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 . . . . . .3.4312 4.6.22 建置系統元資料 . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 核心轉儲 . ...view . ... ……2317 4.7.4 將核心轉儲列印到 UART……2318 4.7.5 回溯中的 ROM 函數……2318 4.7.6 按需轉儲變數…… . . . . . . . . .p. 2318 4.7. . 4.8.2 實作存根… 2322 4.8.3 將程式碼載入到 RTC 記憶體… 2322 4.8.4 將資料載入到 RTC 記憶體… . . . . . . . . . . . . .ample . ...view . ... . . 2324 4.9.4 ESP_ERROR_CHECK 宏 . . . . . . . . . . . . . . . . . . . . . . . . . . .25. . ESP_ERROR_CHECK_WITHOUT_ABORT 巨集 . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 ESP_RE _N . . . . . . . . . . . . . 2325 4.9. . . . . . . . . 2325 4.9.7 ESP_GOTO_ON_ERROR 宏 . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 ESP_RETURN_ON_FALSE 巨集 . ... . 2325 4.9.10 檢查巨集範例amples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 處理模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . .view . ... ……2329 4.10.4 建構網路……2334 4.10.5 管理網路……2339 4.10.6 資料傳輸…… . . . . . . . . . . . . . . . . .24. .
iv

4.10.8 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0. . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Wi-Fi、乙太網路與 IP 事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Mesh 事件 . ... . . . . . . . . . . . . . . . . . . . . . . . . .2 . . .view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 恐慌處理程序。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 暫存器轉儲和回溯。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB Stub。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC 看門狗超時。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 上師冥想錯誤。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 其他致命錯誤。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 快閃記憶體加密。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 引言。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 相關 eFuses。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 快閃記憶體加密過程。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Flash 加密配置。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 可能出現的故障。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 ESP32 Flash 加密狀態。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 讀取和寫入加密快閃記憶體中的資料。 . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 更新加密 Flash。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 停用 Flash 加密。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 關於快閃記憶體加密的關鍵點。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 快閃記憶體加密的限制。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 快閃記憶體加密和安全啟動。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 高級功能。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 技術細節。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 硬體抽象。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 架構。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL(低層)層。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL(硬體抽象層)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 進階中斷。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 中斷等級。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 註。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG 調試 . ... . . . . . . . . . . . . . . . . . . 2379 4.16.3 選擇 JTAG 適配器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16 .啟動調試器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 . .ampOpenles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.16.10 相關文件 . ...view . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 支援的 API . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 Netconn API . ... . . . . . 2435 4.18.5 IPv6 支援 . ...
v

4.18.7 效能最佳化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 .19 內存類型 .
4.19.1 DRAM(資料隨機存取記憶體) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RAM. 4 . . . . . 2441 4.19.4 DROM(資料儲存在快閃記憶體中) . . . . . . . . . . . . . . . . . . . . . . . . . . . .慢速記憶體 . ... . . . . . . . . . . . . . . 2441 4.19.7 DMA 功能要求 . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 堆疊中的 DMA 緩衝區 . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 分區表 . ...view . ... ……2445 4.21.4 產生二進位分割區表…2448 4.21.5 分割區大小檢查…2448 4.21.6 刷寫分割表… . . . . . . . . . . 2449 4.21.7 區 . . . . . . . . . . . . . . . 2450 4.22.2 指南 . ... 2468 4.23.1 部分校準 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 完全校準 . ... . . . . . . . . . . . . . . . 2469 4.23.4 P. . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 API 參考 . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 背景 . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 密鑰 . ... ……2474 .可重新刷寫的軟體引導程式…2475 4.24.7 產生安全啟動簽章金鑰… . 2475 4.24.8 鏡像遠端簽章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 安全啟動最佳實務 . ... ……2476 4.24.11 安全啟動與快閃記憶體加密…2477 4.24.12 無硬體安全啟動的簽章應用驗證…2478 4.24.13 進階功能… 2478 4.25 啟動安全 4.tages . . . . . . . . . . . . . . . . . . . . . . . . . . 啟動安全. V2 進程 . ... ……2480 4.25.5 安全填充……2480 4.25.6 驗證簽名區塊……2481 4.25.7 驗證映像…… . . . . . . . . . . . . . . .28 . 25. 4.25.10 如何啟用安全啟動 V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 啟用 1.84.
vi

4.25.13 鏡像遠端簽章 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 安全. . . . . . . . . . . . . . . . . 2484 4.25.15 . . . . . . 2484 4.25.15 技術細節 . . 啟動安全. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 無需硬體 啟動的 . 驗證. . . . . . 2484 4.25.18 進階功能 . ... 2485 4.26 外部記憶體支援 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 簡介 . ... . . . . . . . . . . . . . . . . . 2485 4.26.3 配置外部 RAM . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 晶片版本 . ... . 2488 4.27.1 超過view . ... . . . . . . . . . . . 2489 4.27.4 C11 標準 . ... 2489 4.28.1 IDF 前端 – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 IDF Docker 鏡像 . ... . . . . . . . . . . . . . 2495 4.28. . 組件管理器 ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang . . ... . . . . . . . . . . . . . . 2498 4.29 ESP32 中的單元測試 . ... 2512 4.29.2 多設備測試用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 多設備測試用例tage 測試用例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 針對不同目標的測試。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 建置單元測試應用程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 運行單元測試。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 附快取補償定時器的定時代碼。 . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 模擬。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Linux 上的單元測試。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 嵌入式軟體測試。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Linux 主機上的 IDF 單元測試。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Wi-Fi 驅動程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 ESP32 Wi-Fi 功能清單。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 如何編寫 Wi-Fi 應用程式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 ESP32 Wi-Fi API 錯誤代碼。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 ESP32 Wi-Fi API 參數初始化。 . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 Wi-Fi 程式設計模型。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 ESP32 Wi-Fi 事件描述。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 ESP32 Wi-Fi Station 一般場景。 . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 Wi-Fi AP 一般情境。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 Wi-Fi 掃描。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 ESP32 Wi-Fi Station 連線場景。 . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 ESP32 Wi-Fi Station 在發現多個 AP 時連線。 . . . . . . . . . . . . 2543 4.31.12 Wi-Fi 重新連線。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Wi-Fi 信標逾時。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32 Wi-Fi 設定。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP)。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 無線網路管理。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 無線電資源測量。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 快速 BSS 過渡。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi 省電模式。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 Wi-Fi 吞吐量。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.31.21 Wi-Fi 80211 封包傳送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 嗅. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Wi-Fi 頻道狀態資訊配置 . ... 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2557 4.31.27 Wi-Fi 服務品質。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2557 4.31.28 Wi-Fi AMSDU。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2558 4.31.29 Wi-Fi 碎片 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.註冊者 . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 如何提升 Wi-Fi 性能 . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Wi-Fi 選單配置 . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 4.32 Wi-Fi 安全 . ... . . 2568 4.32.2 受保護的管理幀 (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced Open™ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 RF Coexistence . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . ESP32支援的共存場景 . ... 2574 4.33.4 如何使用共存功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 . 4.34.2 建置無法重現的原因… 2577 4.34.3 在 ESP-IDF 中啟用可複現建置…2577 4.34.4 如何實現可複現建置… …2578 4.34.5 可複現建置與偵錯…2578 4.345. ……2578

5 份遷移指南

2579

5.1 ESP-IDF 5.x 遷移指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.1.1 從 4.4 版本遷移到 5.0 版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 函式庫和框架

2611

6.1 雲框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 Google IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611. .

6.1.5 阿里雲物聯網。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2611

6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 騰訊物聯網 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1.8 騰訊雲物聯網 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1.9 百度物聯網 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2 Espressifns 框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.1 Espressif 音訊開發框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.3 Espressif DSP 庫 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.4 ESP-WIFI-MESH 開發框架 . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.7 ESP物聯網解決方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2.8 ESP協議 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2613. .

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 貢獻指南

2615

7.1 如何貢獻 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2615 .

7.2 貢獻前 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.3 拉取請求流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.4 法律部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616

7.5 相關文件 . . . . . . . . . . . . . . . . . . . . . . .2616 . . .

7.5.1 Espressif IoT 發展框架風格指南 . . . . . . . . . . . . . . . . . . . . . . 2616

7.5.2 為 ESP-IDF 專案安裝 pre-commit Hook . . . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 程式碼文件化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.5.4 建立範例amp萊斯。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2629

7.5.5 API 文件範本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 貢獻者協議 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632.

7.5.7 版權頁首指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.34 . 263.

7.5.8 使用 Pytest 進行 ESP-IDF 測試指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 ESP-IDF 版本

2645

8.1 版本發布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.2 我該從哪個版本開始? . . . . . . . . . . . . . . . . . . . . . . 2645. . . . . . . . . . .

8.3 版本控制方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.4 支持期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646

8.5 檢查目前版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2647. .

8.6 Git 工作流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 更新 ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.7.1 更新至穩定版 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649. . .

8.7.2 更新至預發布版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649. . . . . . . . . . .

8.7.3 更新至主分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8.7.4 更新到發布分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650

9 資源

2651

9.1 PlatformIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 什麼是 PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.1.2 安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.1.3 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.1.4 教程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.1.5 項目​​範例amp萊斯。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 後續步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 實用連結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 版權和許可

2653

10.1 軟體版權 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.1.1 韌體組件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.1.2 文件 . . . . . . . . . . . . . . . . . . . . . . . . .

10.2 ROM 原始碼版權聲明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2654. .

10.3 Xtensa libhal MIT 許可證。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2655

10.4 TinyBasic Plus MIT 許可證。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2655

10.5 TJpgDec 許可證 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 關於

2657

12. 語言切換

2659

指數

2661

指數

2661

ix

x

目錄
這是樂鑫物聯網開發框架 (ESP-IDF) 的文檔。 ESP-IDF 是 ESP32、ESP32-S 和 ESP32-C 系列 SoC 的官方開發架構。本文檔介紹如何將 ESP-IDF 與 ESP32 SoC 搭配使用。

開始使用

API參考

API 指南

樂鑫系統

1. 提交文檔回饋

發布 v5.0.9

目錄

樂鑫系統

2. 提交文檔回饋

發布 v5.0.9

第1章
開始使用
本文檔旨在協助您建置基於 Espressif ESP32 晶片的硬體軟體開發環境。之後,一個簡單的範例即可完成搭建。amp我將向您展示如何使用 ESP-IDF(Espressif IoT 開發框架)進行選單配置,然後建立韌體並將其燒錄到 ESP32 板上。
注意:本文檔適用於ESP-IDF穩定版本v5.0.9。其他ESP-IDF版本也可用。
1.1 簡介
ESP32 是一款系統級晶片,整合了以下功能:· Wi-Fi(2.4 GHz 頻段)· 藍牙 · 雙高效能 Xtensa® 32 位元 LX6 CPU 核心 · 超低功耗協處理器 · 多種週邊
ESP32 採用 40 奈米工藝,提供了一個強大且高度整合的平台,有助於滿足對高效節能、緊湊設計、安全性、高性能和可靠性的持續需求。樂鑫科技提供基礎的硬體和軟體資源,幫助應用程式開發者利用 ESP32 系列硬體實現他們的創意。樂鑫科技的軟體開發框架旨在用於開發具有 Wi-Fi、藍牙、電源管理和其他多種系統功能的物聯網 (IoT) 應用。
1.2 你需要什麼
1.2.1 硬體
· ESP32 開發板。 · USB 連接線 – USB A 型/micro USB B 型。 · 運行 Windows、Linux 或 macOS 作業系統的電腦。
注意:目前部分開發板使用 USB Type-C 連接埠。請確保您使用正確的線連接開發板!
如果您擁有下面列出的 ESP32 官方開發板之一,您可以點擊連結以了解更多有關硬體的資訊。
3

第一章 開始
ESP32-DevKitS(-R)
本使用者指南提供有關 ESP32-DevKitS(-R) 的信息,這是一款由 Espressif 生產的基於 ESP32 的燒錄板。 ESP32-DevKitS(-R) 由兩個板名組合而成:ESP32-DevKitS 和 ESP32-DevKitS-R。其中,S 代表 springs(彈簧),R 代表 WROVER(WROVER)。

ESP32 開發套件

ESP32-DevKitS-R

本文檔包含以下主要部分:· 入門指南:提供概述view ESP32-DevKitS(-R) 的硬體/軟體設定說明,協助您快速上手。 · 硬體參考:提供有關 ESP32-DevKitS(-R) 硬體的更詳細資訊。 · 相關文件:提供相關文件的連結。

入門指南 本節介紹如何開始使用 ESP32-DevKitS(-R)。首先是一些關於 ESP32-DevKitS(-R) 的介紹章節,然後「如何燒錄韌體」章節提供了將模組安裝到 ESP32-DevKitS(-R) 上、準備工作以及將韌體燒錄到模組上的說明。

超過view ESP32-DevKitS(-R) 是樂鑫科技專為 ESP32 設計的燒錄板。它無需將 ESP32 模組焊接至電源和訊號線即可對其進行燒錄。安裝模組後,ESP32-DevKitS(-R) 也可像 ESP32-DevKitC 一樣用作迷你開發板。
ESP32-DevKitS 和 ESP32-DevKitS-R 板的差異僅在於彈簧引腳的佈局,以適應以下 ESP32 模組。
· ESP32 開發套件:ESP32-WROOM-32、ESP32-WROOM-32D、ESP32-WROOM-32U、ESP32-SOLO-1、ESP32-WROOM-32E、ESP32-WROOM-32UE
· ESP32-DevKitS-R:ESP32-WROVER(PCB 和 IPEX)、ESP32-WROVER-B(PCB 和 IPEX)、ESP32-WROVER-E、ESP32-WROVER-IE
有關上述模組的信息,請參閱 ESP32 系列模組。

組件說明

樂鑫系統

4. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 1:ESP32 開發套件 – 正面

樂鑫系統

圖 2:ESP32-DevKitS-R – 正面 5
提交文件回饋

發布 v5.0.9

第一章 開始

關鍵零件彈簧銷 2.54 毫米母頭
USB 轉 UART 橋接 LDO Micro-USB 連接器/Micro USB 連接埠 EN 按鈕啟動按鈕
開機指示燈

說明:將模組插入。引腳將插入模組的半孔中。這些母頭與安裝在此板上的模組引腳相連。有關母頭的說明,請參閱“接頭模組”部分。單晶片 USB 轉 UART 橋接器提供高達 3 Mbps 的傳輸速率。
5V至3.3V低壓差電壓表tage調節器(LDO)。
USB接口。既為電路板供電,也是電腦與電路板之間的通訊介面。
重置按鈕。
下載按鈕。按住 Boot 鍵,然後按下 EN 鍵,啟動韌體下載模式,透過串列埠下載韌體。
當USB或電源連接到電路板時,就會開啟。

如何為開發板刷韌體 在為 ESP32-DevKitS(-R) 上電之前,請確保它處於良好狀態,沒有明顯的損壞跡象。
所需硬體:· 您選擇的 ESP32 模組 · USB 2.0 線(標準 A 型轉 Micro-B 型) · 執行 Windows、Linux 或 macOS 的計算機
硬體安裝 請依照下列步驟將您選擇的模組安裝到 ESP32-DevKitS(-R) 上:
· 將模組輕輕地放在 ESP32-DevKitS(-R) 板上。確保模組上的半孔與板上的彈簧銷對齊。
· 將模組向下壓入電路板,直到聽到喀嚓聲。 · 檢查所有彈簧銷是否都插入了半孔中。如果某些彈簧銷未對準,
用鑷子將它們放入有棱紋的孔中。
軟體設定
建議方法:ESP-IDF 開發框架提供了一種將二進位檔案燒錄到 ESP32-DevKitS(-R) 的建議方法。請繼續閱讀“入門指南”,其中的“安裝”部分將幫助您快速設定開發環境,然後燒錄應用程式範例。amp將其安裝到您的 ESP32-DevKitS(-R) 上。
替代方法:Windows 使用者也可以使用 Flash Download Tool 工具刷寫韌體。只需下載該工具,解壓縮,然後按照 doc 資料夾中的說明進行操作。
注意:1. 要刷寫二進位文件 file首先,ESP32 應設定為韌體下載模式。這可以透過刷寫工具自動完成,也可以按住 Boot 按鈕並點擊 EN 按鈕來完成。 2. 刷寫二進位檔案後 file預設情況下,Flash Download Tool 會重新啟動您的 ESP32 模組並啟動已刷寫的應用程式。

電路板尺寸、內容物和包裝

樂鑫系統

6. 提交文檔回饋

發布 v5.0.9

第一章 入門 圖 3:ESP32-DevKitS 開發板尺寸 – 背面

樂鑫系統

圖 4:ESP32-DevKitS-R 開發板尺寸 – 背面 7
提交文件回饋

發布 v5.0.9

第一章 開始
零售訂單 如果您訂購少量商品amp每個 ESP32-DevKitS(-R) 均採用獨立包裝,包裝形式可能為防靜電袋或其他包裝,具體取決於零售商。零售訂單請上 https://www.espressif.com/en/contact-us/get-samp萊斯。
批發訂單 如果您大量訂購,板材將裝在大型紙箱中。批發訂單請上 https://www.espressif.com/en/contact-us/sales-questions。
硬件參考
框圖 下圖顯示了 ESP32-DevKitS(-R) 的元件及其互連。

圖 5:ESP32-DevKitS(-R)(點擊放大)
供電方式 為電路板供電有三種互斥的方式: · Micro USB 端口,預設供電 · 5V 和 GND 排針 · 3.3V 和 GND 排針
建議使用第一種方式:micro USB 介面。

樂鑫系統

.

標籤訊號

L1 3V3 VDD 3V3

L2 EN CHIP_PU

L3 VP 感測器_VP

L4 VN 感測器_VN

L5 34

通用輸入輸出口34

L6 35

通用輸入輸出口35

L7 32

通用輸入輸出口32

L8 33

通用輸入輸出口33

(續下頁)

8. 提交文檔回饋

發布 v5.0.9

第一章 開始

表 1 接上頁

.

標籤訊號

L9 25

通用輸入輸出口25

L10 26

通用輸入輸出口26

L11 27

通用輸入輸出口27

L12 14

通用輸入輸出口14

L13 12

通用輸入輸出口12

L14 接地 接地

L15 13

通用輸入輸出口13

L16 D2 SD_DATA2

L17 D3 SD_DATA3

L18 CMD SD_CMD

L19 5V

外接5V

R1 GND GND

R2 23

通用輸入輸出口23

R3 22

通用輸入輸出口22

R4 TX U0TXD

R5 RX U0RXD

R6 21

通用輸入輸出口21

R7 GND GND

R8 19

通用輸入輸出口19

R9 18

通用輸入輸出口18

R10 5

通用輸入輸出口5

R11 17

通用輸入輸出口17

R12 16

通用輸入輸出口16

R13 4

通用輸入輸出口4

R14 0

通用輸入輸出口0

R15 2

通用輸入輸出口2

R16 15

通用輸入輸出口15

R17 D1 SD_DATA1

R18 D0 SD_DATA0

R19 CLK SD_CLK

頭部模組 有關頭部模組的圖片,請參閱組件說明。

相關文件
· ESP32-DevKitS(-R) 原理圖 (PDF) · ESP32 資料手冊 (PDF) · ESP32-WROOM-32 資料手冊 (PDF) · ESP32-WROOM-32D 與 ESP32-WROOM-32U 資料手冊 (PDF) ESP332 資料手冊: (PDF) · ESP32-WROVER-B 資料手冊 (PDF) · ESP 產品選擇器

ESP32-DevKitM-1

本使用者指南將協助您開始使用 ESP32-DevKitM-1,並提供更深入的資訊。
ESP32-DevKitM-1 是一款基於 ESP32-MINI-1(1U) 的開發板,由樂鑫科技 (Espressif) 生產。大部分 I/O 接腳都引出到兩側的排針上,方便連接各種週邊。使用者既可以使用跳線連接外設,也可以將 ESP32-DevKitM-1 安裝在麵包板上。

樂鑫系統

9. 提交文檔回饋

發布 v5.0.9

第一章 開始

ESP32-DevKitM-1 – 正面

ESP32-DevKitM-1 – 等距圖

本文檔包含以下主要部分:· 入門指南:提供概述view ESP32-DevKitM-1 的硬體/軟體設定說明,協助您快速上手。 · 硬體參考:提供有關 ESP32-DevKitM-1ns 硬體的更詳細資訊。 · 相關文件:提供相關文件的連結。

入門 本節介紹如何開始使用 ESP32-DevKitM-1。首先是一些關於 ESP32-DevKitM-1 的介紹章節,然後「開始應用程式開發」章節提供瞭如何進行初始硬體設定以及如何將韌體燒錄到 ESP32-DevKitM-1 上的說明。

超過view 這是一款小巧方便的開發板,具有以下特點:
· ESP32-MINI-1 或 ESP32-MINI-1U 模組 · USB 轉串口編程接口,同時為開發板供電 · 排針 · 用於重設和激活固件下載模式的按鈕 · 其他一些組件

內容和包裝

零售訂單 如果您訂購少量商品amp例如,每個 ESP32-DevKitM-1 都採用單獨的包裝,包裝方式可能是防靜電袋,也可能是其他任何包裝,具體取決於您的零售商。
零售訂單請上 https://www.espressif.com/en/contact-us/get-samp萊斯。

批發訂單 如果您大量訂購,板材將裝在大型紙箱中。批發訂單請上 https://www.espressif.com/en/contact-us/sales-questions。

組件說明 下圖和下表描述了 ESP32-DevKitM-1 開發板的主要組件、介面和控制方式。我們以搭載 ESP32-MINI-1 模組的開發板為例進行說明。ample 在以下各節中。

樂鑫系統

10. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 6:ESP32-DevKitM-1 – 正面

關鍵組件 板載模組
5V 轉 3.3V LDO 啟動按鈕
重置按鈕 Micro-USB 端口
USB 轉 UART 橋接器 3.3V 電源指示燈
輸入/輸出連接器

描述
ESP32-MINI-1 模組或 ESP32-MINI-1U 模組。 ESP32-MINI-1 板載 PCB 天線,ESP32-MINI-1U 配備外接天線介面。兩款模組均採用 4MB 晶片封裝快閃記憶體。詳情請參閱 ESP32-MINI-1 和 ESP32-MINI-1U 資料手冊。
電源調節器將 5V 轉換為 3.3V。
下載按鈕。按住啟動鍵,然後按下重設鍵,即可進入韌體下載模式,透過串列埠下載韌體。
重置按鈕
USB接口。為開發板供電以及電腦與 ESP32 晶片之間的通訊介面。
單個 USB-UART 橋接芯片提供高達 3 Mbps 的傳輸速率。
當 USB 連接到開發板時,此電路會開啟。詳情請參閱相關文件中的原理圖。所有可用的 GPIO 引腳(除用於快閃記憶體的 SPI 總線外)均已引出到開發板上的排針。使用者可以對 ESP32 晶片進行編程,以啟用多種功能。

開始應用程式開發 在啟動 ESP32-DevKitM-1 之前,請確保其狀況良好,沒有明顯的損壞跡象。
所需硬體:· ESP32-DevKitM-1 · USB 2.0 線(標準 A 型轉 Micro-B 型) · 運行 Windows、Linux 或 macOS 的計算機
軟體安裝 請繼續執行「入門指南」部分,其中的「安裝」部分將幫助您快速設定開發環境,然後刷寫應用程式範例。amp文件到您的 ESP32-DevKitM-1。

樂鑫系統

11. 提交文檔回饋

發布 v5.0.9

第一章 開始
注意:2021年12月2日之前生產的ESP32-DevKitM-1開發板安裝的是單核心模組。若要確認您所使用的模組型號,請查看PCN-2021-021中的模組標記資訊。如果您的開發板安裝的是單核心模組,請在刷寫應用程式之前,在menuconfig中啟用單核心模式(CONFIG_FREERTOS_UNICORE)。
硬體參考框圖 下圖顯示了 ESP32-DevKitM-1 的元件及其互連。

圖 7:ESP32-DevKitM-1
電源選擇 有三種互斥的方式可以為電路板供電: · Micro USB 端口,預設電源 · 5V 和 GND 排針 · 3.3V 和 GND 排針
警告:· 必須使用上述任一供電方式,否則可能會損壞電路板和/或電源。 · 建議使用 micro USB 連接埠供電。

接腳說明 下表列出了電路板兩側接腳的名稱和功能。有關週邊引腳配置,請參閱 ESP32 資料手冊。

不。

姓名

類型

1

接地

P

2

3V3

P

功能接地 3.3V 電源

(續下頁)

樂鑫系統

12. 提交文檔回饋

發布 v5.0.9

第一章 開始

表 2 接上頁

不。

姓名

類型

功能

3

I36

I

GPIO36、ADC1_CH0、RTC_GPIO0

4

I37

I

GPIO37、ADC1_CH1、RTC_GPIO1

5

I38

I

GPIO38、ADC1_CH2、RTC_GPIO2

6

I39

I

GPIO39、ADC1_CH3、RTC_GPIO3

7

快速恢復時間

I

重置;高:啟用;低:關閉電源

8

I34

I

GPIO34、ADC1_CH6、RTC_GPIO4

9

I35

I

GPIO35、ADC1_CH7、RTC_GPIO5

10

IO32

輸入/輸出

GPIO32,XTAL_32K_P(32.768 kHz 晶體振盪器輸入),

ADC1_CH4、觸摸9、RTC_GPIO9

11

IO33

輸入/輸出

GPIO33、XTAL_32K_N(32.768 kHz 晶振輸出)、

ADC1_CH5、觸摸8、RTC_GPIO8

12

IO25

輸入/輸出

GPIO25、DAC_1、ADC2_CH8、RTC_GPIO6、EMAC_RXD0

13

IO26

輸入/輸出

GPIO26、DAC_2、ADC2_CH9、RTC_GPIO7、EMAC_RXD1

14

IO27

輸入/輸出

GPIO27、ADC2_CH7、TOUCH7、RTC_GPIO17、EMAC_RX_DV

15

IO14

輸入/輸出

GPIO14、ADC2_CH6、TOUCH6、RTC_GPIO16、MTMS、HSPICLK、

HS2_CLK、SD_CLK、EMAC_TXD2

16

5V

P

5V電源

17

IO12

輸入/輸出

GPIO12、ADC2_CH5、TOUCH5、RTC_GPIO15、MTDI、HSPIQ、

HS2_DATA2、SD_DATA2、EMAC_TXD3

18

IO13

輸入/輸出

GPIO13、ADC2_CH4、TOUCH4、RTC_GPIO14、MTCK、HSPID、

HS2_DATA3、SD_DATA3、EMAC_RX_ER

19

IO15

輸入/輸出

GPIO15、ADC2_CH3、TOUCH3、RTC_GPIO13、MTDO、HSPICS0、

HS2_CMD、SD_CMD、EMAC_RXD3

20

IO2

輸入/輸出

GPIO2、ADC2_CH2、TOUCH2、RTC_GPIO12、HSPIWP、

HS2_DATA0,SD_DATA0

21

IO0

輸入/輸出

GPIO0、ADC2_CH1、TOUCH1、RTC_GPIO11、CLK_OUT1、

EMAC_TX_CLK

22

IO4

輸入/輸出

GPIO4、ADC2_CH0、TOUCH0、RTC_GPIO10、HSPIHD、

HS2_DATA1、SD_DATA1、EMAC_TX_ER

23

IO9

輸入/輸出

GPIO9、HS1_DATA2、U1RXD、SD_DATA2

24

IO10

輸入/輸出

GPIO10、HS1_DATA3、U1TXD、SD_DATA3

25

IO5

輸入/輸出

GPIO5、HS1_DATA6、VSPICS0、EMAC_RX_CLK

26

IO18

輸入/輸出

GPIO18、HS1_DATA7、VSPICLK

27

IO23

輸入/輸出

GPIO23、HS1_STROBE、VSPID

28

IO19

輸入/輸出

GPIO19、VSPIQ、U0CTS、EMAC_TXD0

29

IO22

輸入/輸出

GPIO22、VSPIWP、U0RTS、EMAC_TXD1

30

IO21

輸入/輸出

GPIO21、VSPIHD、EMAC_TX_EN

31

發送端0

輸入/輸出

GPIO1、U0TXD、CLK_OUT3、EMAC_RXD2

32

接收端0

輸入/輸出

GPIO3、U0RXD、CLK_OUT2

硬體版本詳情:無先前版本可用。
相關文件
· ESP32-MINI-1 和 ESP32-MINI-1U 資料手冊 (PDF) · ESP32-DevKitM-1 原理圖 (PDF) · ESP32-DevKitM-1 PCB 佈局圖 (PDF) · ESP32-DevKitM-1 佈局圖 (DXF) – 您可以圖片 view 它與 Autodesk 合作 View線上查看 · ESP32 數據手冊 (PDF) · ESP 產品選擇器
如需了解電路板的其他設計文檔,請聯絡我們:sales@espressif.com。

樂鑫系統

13. 提交文檔回饋

發布 v5.0.9

第一章 開始
1.2.2軟件
要在 ESP32 上使用 ESP-IDF,請安裝以下軟體:· 用於編譯 ESP32 程式碼的工具鏈;· 建置工具-CMake 和 Ninja,用於建立完整的 ESP32 應用程式;· ESP-IDF,其中包含 ESP32 的 API(軟體庫和原始碼)以及用於操作工具鏈的腳本。

1.3 安裝
為了方便您安裝所有必要的軟體,我們提供了幾種不同的方法。請從可用選項中選擇一種。
1.3.1 IDE

注意:我們強烈建議您透過您喜歡的 IDE 安裝 ESP-IDF。
· Eclipse 外掛程式 · VSCode 擴展

1.3.2 手動安裝
對於手動操作步驟,請根據您的作業系統進行選擇。

樂鑫系統

14. 提交文檔回饋

發布 v5.0.9

第一章 開始
Windows 工具鏈的標准設置
簡介:ESP-IDF 需要安裝一些必備工具才能為支援的晶片建構韌體。這些必備工具包括 Python、Git、交叉編譯器、CMake 和 Ninja 建置工具。本入門指南將使用命令列,但安裝 ESP-IDF 後,您可以使用 Eclipse 外掛程式或其他支援 CMake 的圖形化 IDE。注意:限制:– ESP-IDF 和 ESP-IDF 工具的安裝路徑長度不得超過 90 個字元。過長的安裝路徑可能會導致建置失敗。 – Python 或 ESP-IDF 的安裝路徑中不得包含空格或括號。 – Python 或 ESP-IDF 的安裝路徑中不得包含特殊字元(非 ASCII 字元),除非作業系統配置了 oUnicode UTF-8 支援。系統管理員可以透過控制台啟用支援 - 更改日期、時間或數字格式 - 管理標籤 - 更改系統區域設定 - 選取選項 oBeta:使用 Unicode UTF-8 實現全球語言支援 - 確定並重新啟動電腦。
ESP-IDF 工具安裝程式 安裝 ESP-IDF 的先決條件的最簡單方法是下載 ESP-IDF 工具安裝程式之一。

Windows 安裝程式下載
線上安裝程式和離線安裝程式的用途是什麼?線上安裝程式體積小巧,支援安裝所有可用的 ESP-IDF 版本。安裝程式在安裝過程中只會下載必要的依賴項,包括 Windows 版 Git。安裝程式會將下載的檔案儲存到安裝程式中。 files 在快取目錄 %userpro 中file% espressif
離線安裝程式無需任何網路連線。安裝程式包含所有必要的依賴項,包括適用於 Windows 的 Git。
安裝元件 安裝程式會部署下列元件:
· 嵌入式 Python · 交叉編譯器 · OpenOCD · CMake 和 Ninja 建置工具 · ESP-IDF
安裝程式還允許重複使用現有目錄以安裝 ESP-IDF。推薦目錄為 %userpro。file%Desktopesp-idf 其中 %userprofile% 是您的主目錄。

樂鑫系統

15. 提交文檔回饋

發布 v5.0.9

第一章 開始
安裝過程結束後,您可以選擇「執行 ESP-IDF PowerShell 環境」或「執行 ESP-IDF 命令提示字元 (cmd.exe)」選項。安裝程式將在所選命令提示字元中啟動 ESP-IDF 環境。運行 ESP-IDF PowerShell 環境:

圖 8:完成 ESP-IDF 工具安裝精靈並執行 ESP-IDF PowerShell 環境
執行 ESP-IDF 命令提示字元 (cmd.exe):
使用命令提示字元 在接下來的入門步驟中,我們將使用 Windows 命令提示字元。 ESP-IDF 工具安裝程式也會在「開始」功能表中建立一個捷徑,用於啟動 ESP-IDF 命令提示字元。此捷徑會啟動命令提示字元 (cmd.exe) 並執行 export.bat 腳本來設定環境變數(PATH、IDF_PATH 等)。在此命令提示字元中,所有已安裝的工具都可用。請注意,此捷徑僅適用於在 ESP-IDF 工具安裝程式中所選的 ESP-IDF 目錄。如果您的電腦上有多個 ESP-IDF 目錄(例如,多個 ESP-IDF 目錄),則需要使用不同的捷徑。amp例如,要使用不同版本的 ESP-IDF,您有兩種使用方法:
1. 複製 ESP-IDF 工具安裝程式建立的捷徑,並將新捷徑的工作目錄變更為您想要使用的 ESP-IDF 目錄。
2. 或者,執行 cmd.exe,然後切換到您想要使用的 ESP-IDF 目錄,並執行 export.bat。請注意,與前一種方法不同,這種方法要求 Python 和 Git 已加入 PATH 環境變數。如果您遇到找不到 Python 或 Git 的錯誤,請使用第一種方法。
ESP-IDF 入門指南 既然所有要求都已滿足,下一個主題將引導您如何開始您的第一個專案。

樂鑫系統

16. 提交文檔回饋

發布 v5.0.9

第 1 章 入門 圖 9:ESP-IDF PowerShell

圖 10:使用執行 ESP-IDF 命令提示字元 (cmd.exe) 完成 ESP-IDF 工具設定精靈

樂鑫系統

17. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 11:ESP-IDF 指令提示符

樂鑫系統

18. 提交文檔回饋

發布 v5.0.9

第一章 開始
本指南將協助您入門 ESP-IDF。請依照本指南在 ESP32 上建立一個新項目,並完成建置、燒錄和監控設備輸出等步驟。注意:如果您尚未安裝 ESP-IDF,請前往「安裝」頁面並依照指示操作,以取得使用本指南所需的所有軟體。

現在就可以開始專案了,您可以開始為 ESP32 準備應用程式了。您可以從 ex 的 getstarted/hello_world 專案開始。ampESP-IDF 中的 .les 目錄。
重要提示:ESP-IDF 建置系統不支援 ESP-IDF 或專案路徑中包含空格。
將專案 get-started/hello_world 複製到 ~/esp 目錄:cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
註:存在一系列範例amp前的項目ampESP-IDF 中的 .les 目錄。 您可以以與上述相同的方式複制任何項目並運行它。 也可以構建 examp無需先複製即可直接在原地放置文件。

現在將 ESP32 開發板連接到電腦,並查看開發板在哪個串列埠下可見。在 Windows 系統中,串列埠名稱以 COM 開頭。如果您不確定如何查看串列埠名稱,請參閱「建立與 ESP32 的串列連接」以了解詳細資訊。
注意:請保留端口名稱,因為您在後續步驟中將需要它。

設定您的專案 導航到您的 hello_world 目錄,將 ESP32 設定為目標,然後執行專案設定實用程式 menuconfig。
Windows cd %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
新建專案後,首先需要使用 `idf.py set-target esp32` 設定目標平台。請注意,在此過程中,專案中現有的建置和配置(如有)將被清除並重新初始化。您也可以將目標平台保存在環境變數中,從而跳過此步驟。更多信息,請參閱“選擇目標晶片:set-target”。如果先前的步驟正確完成,將會出現以下選單:您可以使用此選單設定項目特定的變量,例如 Wi-Fi 網路名稱和密碼、處理器速度等。對於 ohello_wordp 項目,可以跳過使用 `menuconfig` 設定項目的步驟,因為範例已包含項目設定。ample 以預設配置運行。
注意:如果您使用 ESP32-DevKitC 開發板搭配 ESP32-SOLO-1 模組,或使用 ESP32-DevKitM-1 開發板搭配 ESP32-MIN1-1(1U) 模組,請在刷寫韌體之前,請在 menuconfig 中啟用單核心模式 (CONFIU_REERTOSOS_UORE)。amp萊斯。

樂鑫系統

19. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 12:專案配置 – 主頁
注意:選單顏色在您的終端中可能有所不同。您可以使用 `--style` 選項來變更選單外觀。請執行 `idf.py menuconfig --help` 以取得更多資訊。
如果您使用的是支援的開發板,則可以使用板級支援包 (Board Support Package) 來加快開發速度。有關更多信息,請參閱“其他提示”。
建置專案 透過執行以下命令建置專案:
idf.py 構建
該命令將編譯應用程序和所有 ESP-IDF 組件,然後生成引導加載程序、分區表和應用程序二進製文件。
$ idf.py build 在目錄 /path/to/hello_world/build 中執行 cmake 執行「cmake -G Ninja --warn-uninitialized /path/to/hello_world」… 警告:存在未初始化的值。 — 找到 Git:/usr/bin/git(版本「2.17.0」) — 由於設定問題,正在建構空的 aws_iot 元件 — 元件名稱:… — 元件路徑:…
…(更多行構建系統輸出)
[527/527] 正在產生 hello_world.bin esptool.py v2.3.1
項目建置完成。要進行燒錄,請執行以下指令:../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000m 0000000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 或執行 'idf.py -p PORT flash'
如果沒有錯誤,構建將通過生成固件二進製文件 .bin 來完成 files.

樂鑫系統

20. 提交文檔回饋

發布 v5.0.9

第一章 開始
將您剛剛建立的二進位檔案(bootloader.bin、partition-table.bin 和 hello_world.bin)燒錄到 ESP32 開發板上,執行以下命令:idf.py -p PORT [-b BAUD] flash
將 PORT 替換為您的 ESP32 開發板串列埠名稱。您也可以將 BAUD 替換為所需的波特率來變更燒錄器的波特率。預設波特率為 460800。有關 idf.py 參數的更多信息,請參閱 idf.py 檔案。
注意:flash 選項會自動建置並燒錄項目,因此無需執行 idf.py build。

刷寫過程中遇到問題?如果您在執行給定命令後看到類似「連線失敗」的錯誤,可能有多種原因。其中一個原因可能是 esptool.py 出現問題。 esptool.py 是建構系統呼叫的實用程序,用於重置晶片、與 ROM 引導程式互動以及刷寫韌體。一個簡單的解決方法是嘗試下文所述的手動重置,如果問題仍然存在,您可以在「故障排除」部分找到更多相關資訊。
esptool.py 透過置位 USB 轉串口轉換晶片(例如 FTDI 或 CP210x)的 DTR 和 RTS 控制線來自動重設 ESP32(更多資訊請參閱「與 ESP32 建立串列埠連接」)。 DTR 和 RTS 控制線分別連接到 ESP32 的 GPIO0 和 CHIP_PU (EN) 接腳,因此,電壓的變化會影響 ESP32 的重設。tag達到一定的 DTR 和 RTS 電平將使 ESP32 進入韌體下載模式。例如amp請參閱 ESP32 DevKitC 開發板的原理圖。
一般來說,使用官方的 esp-idf 開發板不會有問題。但是,在以下情況下,esptool.py 無法自動重設您的硬體:
· 您的硬體未將 DTR 和 RTS 線連接到 GPIO0 和 CHIP_PU。 · DTR 和 RTS 線的配置不同。 · 根本沒有這些串列控制線。
根據您所使用的硬體類型,也可以手動將 ESP32 板置於韌體下載模式(重設)。
· 對於樂鑫(Espressif)生產的開發板,您可以在對應的入門指南或使用者指南中找到這些資訊。例如:amp例如,若要手動重設 ESP-IDF 開發板,請按住 Boot 按鈕 (GPIO0) 並按下 EN 按鈕 (CHIP_PU)。
· 對於其他類型的硬件,請嘗試將 GPIO0 拉低。

正常操作:刷寫韌體時,您將看到類似如下的輸出日誌:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x80dio –flash_freq 40m –flash_size 2MB 0x80000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev 串列埠 /dev/ttyUSB0 正在連接…晶片為 ESP32D0WDQ6(版本 0) 特性:WiFi、藍牙、雙核心、無編碼方案 晶振頻率為 4002:400:005:0024:0024:0024:00024:00024:005:0024:2024:2024:2024:2024:2024:2024:002正在上傳存根… 正在運行存根… 存根正在運行… 波特率已更改為 460800 已更改。
(下一頁)

樂鑫系統

21. 提交文檔回饋

發布 v5.0.9

第一章 開始
(接上頁)正在設定快閃記憶體大小…已將 3072 位元組壓縮為 103 位元組…正在寫入位址 0x00008000…(100%)已在 0x00008000 寫入 3072 位元組(壓縮後 103 位元速率 103 0.0. kbit/s)…資料雜湊值已驗證。已將 26096 位元組壓縮為 15408 位元組…正在寫入位址 0x00001000…(100%)已在 0x00001000 寫入 26096 位元組(壓縮後 15408 位元組),耗時 0.4 秒值(Cap)已將 147104 位元組壓縮至 77364 位元組… 正在寫入 0x00010000… (20%) 正在寫入 0x00014000… (40%) 正在寫入 0x00018000… (60%) 正在寫入 00% 0x00020000… (100%) 已在 0x00010000 寫入 147104 位元組(壓縮後 77364 位元組),耗時 1.9 秒(有效速度 615.5 kbit/s)… 資料雜湊值已驗證。
離開…通過 RTS 引腳硬重置…完成
如果在刷寫過程結束時沒有出現任何問題,開發板將重新啟動並啟動 ohello_world 應用程式。如果您想使用 Eclipse 或 VS Code IDE 而不是執行 idf.py,請查看 Eclipse 外掛程式和 VS Code 擴充功能。
監控輸出 要檢查 ohello_worldpis 是否確實在運行,請鍵入 idf.py -p PORT monitor(不要忘記將 PORT 替換為您的串列埠名稱)。
此命令啟動 IDF Monitor 應用程序:
$ idf.py -p監控程式正在目錄 […]/esp/hello_world/build 中執行 idf_monitor 執行「python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf」itor — idfmono…hello_world. 115200 —– 退出:Ctrl+] | 選單:Ctrl+T | 幫助:Ctrl+T 然後按 Ctrl+H –ets 2016年6月8日 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57 …
啟動和診斷日誌向上捲動後,您應該會看到應用程式列印出 oHello world!p。
……你好,世界! 10秒後重開機…這是ESP32晶片,2個CPU核心,支援WiFi/藍牙/BLE,晶片版本1,2MB外部快閃記憶體。最小可用堆大小:298968位元組。 9秒後重啟…8秒後重啟…7秒後重啟…
要退出 IDF 監視器,請使用快捷鍵 Ctrl+]。

樂鑫系統

22. 提交文檔回饋

發布 v5.0.9

第一章 開始
如果上傳後不久 IDF 監視器發生故障,或者您看到的不是上述訊息,而是類似下面所示的隨機亂碼,則您的開發板可能正在使用 26 MHz 晶振。大多數開發板設計使用 40 MHz 晶振,因此 ESP-IDF 預設使用此頻率。

如果遇到此類問題,請執行以下操作:1. 退出顯示器。 2. 返回 menuconfig。 3. 進入組件配置 > 硬體設定 > 主晶振配置 > 主晶振頻率,然後將 CONFIG_XTAL_FREQ_SEL 變更為 26 MHz。 4. 之後,重新編譯並燒錄應用程式。
在目前版本的 ESP-IDF 中,ESP32 支援的主要晶振頻率如下:
· 26 MHz · 40 MHz
注意:您可以透過執行以下命令將建置、刷寫和監控合併為一個步驟:idf.py -p PORT flash monitor
另請參閱:· IDF Monitor,其中包含便捷的快捷方式和更多關於使用 IDF Monitor 的詳細資訊。 · idf.py,其中包含 idf.py 指令和選項的完整參考。
這就是開始使用 ESP32 所需的一切!現在你可以嘗試一些其他的例子了。amp或直接開發你自己的應用程式。
重要提示:部分​​內容amples 不支援 ESP32,因為 ESP32 本身不包含所需的硬件,所以無法提供支援。如果建置一個 examp請查看 README 文件。 file 對於「支援的目標」表。如果該表存在(包括 ESP32 目標),或該表根本不存在,則表示該目標不存在。amp它可以用於 ESP32。
額外提示
權限問題 /dev/ttyUSB0 在某些 Linux 發行版中,燒錄 ESP32 時可能會出現「無法開啟連接埠 /dev/ttyUSB0」的錯誤訊息。可以透過將目前使用者新增至 dialout 群組來解決此問題。
Python 相容性:ESP-IDF 支援 Python 3.7 或更高版本。建議您將作業系統升級到滿足此要求的最新版本。其他選項包括從原始程式碼安裝 Python 或使用 Python 版本管理系統,例如 pyenv。
首先使用板級支援包 為了加快某些開發板上的原型製作速度,您可以使用板級支援包 (BSP),它使特定板的初始化變得像幾個函數呼叫一樣簡單。

樂鑫系統

23. 提交文檔回饋

發布 v5.0.9

第一章 開始

BSP 通常支援開發板上提供的所有硬體組件。除了引腳定義和初始化函數之外,BSP 還包含外部元件(例如感測器、顯示器、音訊編解碼器等)的驅動程式。 BSP 透過 IDF 元件管理器分發,因此可以在 IDF 元件註冊表中找到它們。amp如何將 ESP-WROVER-KIT BSP 新增至您的專案:idf.py add-dependency esp_wrover_kit
更多前ampBSP 的使用範例可以在 BSP 範例中找到。amp文件夾。
相關文件(適用於希望自訂安裝程序的高級使用者):· 在 Windows 上更新 ESP-IDF 工具 · 建立與 ESP32 的串列連接 · Eclipse 外掛程式 · VSCode 擴充功能 · IDF 監視器
在 Windows 上更新 ESP-IDF 工具
使用腳本安裝 ESP-IDF 工具。在 Windows 命令提示字元中,切換到 ESPIDF 的安裝目錄。然後運行:
安裝.bat
對於 PowerShell,請切換到 ESP-IDF 的安裝目錄。然後運行:
安裝.ps1
這將下載並安裝使用 ESP-IDF 所需的工具。如果已安裝特定版本的工具,則不會執行任何操作。這些工具將下載並安裝到 ESP-IDF 工具安裝程式過程中指定的目錄中。預設情況下,該目錄為 C:\Users\username\.espressif。
使用匯出腳本將 ESP-IDF 工具新增至 PATH 環境變數。 ESP-IDF 工具安裝程式會建立一個指向 ESP-IDF 命令提示字元的開始功能表捷徑。此捷徑會開啟一個命令提示字元窗口,其中已預置所有工具。
可用。在某些情況下,您可能需要在並非透過捷徑啟動的命令提示字元視窗中使用 ESP-IDF。如果是這種情況,請按照以下說明將 ESP-IDF 工具新增至 PATH 環境變數。在需要使用 ESP-IDF 的命令提示字元視窗中,切換到 ESP-IDF 的安裝目錄,然後執行 export.bat:
cd %userprofile%espesp-idf export.bat
或者,在需要使用 ESP-IDF 的 PowerShell 中,切換到 ESP-IDF 的安裝目錄,然後執行 export.ps1:
cd ~/esp/esp-idf export.ps1
完成此操作後,這些工具將在此命令提示字元中可用。
建立與 ESP32 的串列連接 本節提供如何在 ESP32 和 PC 之間建立串列連接的指導。

樂鑫系統

24. 提交文檔回饋

發布 v5.0.9

第一章 開始
將 ESP32 連接到電腦。使用 USB 連接線將 ESP32 開發板連接至電腦。如果裝置驅動程式沒有自動安裝,請尋找 ESP32 開發板(或外部轉換器)上的 USB 轉串口轉換晶片,並在網路上搜尋驅動程式進行安裝。以下列出了 Espressif 生產的大多數 ESP32 開發板上安裝的 USB 轉串口轉換晶片及其驅動程式連結:
· CP210x:CP210x USB 轉 UART 橋接器 VCP 驅動程式 · FTDI:FTDI 虛擬 COM 連接埠驅動程式 請查閱開發板使用者指南,以了解所使用的特定 USB 轉串口轉換晶片。以上驅動程式僅供參考。通常情況下,驅動程式會隨作業系統一起安裝,並在開發板連接到 PC 時自動安裝。
檢查 Windows 系統中的連接埠。在 Windows 裝置管理員中檢查已識別的 COM 連接埠清單。斷開 ESP32 連接,然後再重新連接,以驗證哪個連接埠從清單中消失,然後重新出現。下圖顯示了 ESP32 DevKitC 和 ESP32 WROVER KIT 的串列埠。

圖 13:Windows 裝置管理員中 ESP32-DevKitC 的 USB 轉 UART 橋接

在 Linux 和 macOS 上檢查連接埠 要檢查 ESP32 開發板(或外部轉換器)的串列裝置名稱,請運行此命令兩次,第一次在開發板/轉換器未連接的情況下運行,第二次在連接的情況下運行。第二次出現的連接埠號碼就是您需要的連接埠號碼:Linux
ls /dev/tty*
macOS

樂鑫系統

25. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 14:Windows 裝置管理員中 ESP-WROVER-KIT 的兩個 USB 串列埠

樂鑫系統

26. 提交文檔回饋

發布 v5.0.9

第一章 開始

ls /dev/cu.* 注意:macOS 使用者:如果您看不到串列埠,請檢查是否已安裝 USB/串列驅動程式。有關驅動程式的鏈接,請參閱“將 ESP32 連接到 PC”部分。對於 macOS High Sierra (10.13),您可能還需要明確允許驅動程式載入。開啟“系統偏好設定”->“安全性與隱私”->“通用”,並檢查此處是否顯示來自開發者 lp 的 oSystem Software 訊息,其中開發者名稱為 Silicon Labs 或 FTDI。

在 Linux 系統中將使用者新增至 dialout 群組:目前登入使用者應該擁有透過 USB 介面對串列埠的讀寫權限。在大多數 Linux 發行版中,可以透過以下命令將使用者新增至 dialout 群組:
sudo usermod -a -G 撥出 $USER
在 Arch Linux 上,這是透過使用以下命令將使用者新增至 uucp 群組來完成的:
sudo usermod -a -G uucp $USER
確保您重新登錄以啟用串行端口的讀寫權限。
驗證串列連接 現在驗證串列連接是否正常運作。您可以使用串口終端程序,在重設 ESP32 後檢查終端是否有任何輸出。 ESP32 的預設控制台波特率為 115200。
Windows 和 Linux 在此範例中amp我們將使用適用於 Windows 和 Linux 的 PuTTY SSH 用戶端。您也可以使用其他串列程序,並如下設定通訊參數。運行終端並設定已識別的串列埠。波特率 = 115200(如果需要,請將其變更為所用晶片的預設波特率),資料位元 = 8,停止位元 = 1,奇偶校驗 = N。以下是一些範例。amp請查看在 Windows 和 Linux 系統上設定連接埠和傳輸參數(簡寫為 115200-8-1-N)的螢幕截圖。請務必選擇與上述步驟中指定的串口完全相同的串列埠。然後在終端機中開啟串口,檢查 ESP32 是否輸出任何日誌。日誌內容取決於 ESP32 上載入的應用程序,請參閱範例。amp輸出。
注意:確認通訊正常後,請關閉串列埠終端。如果終端會話保持開啟狀態,之後將無法透過串列埠上傳韌體。

macOS 為了省去您安裝串列終端程式的麻煩,macOS 提供了 screen 指令。 · 如「在 Linux 和 macOS 上檢查連接埠」所述,請執行:

ls /dev/cu.* · 你應該看到類似的輸出:

/dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART USBtoUART7

/dev/cu.SLAB_

輸出結果會根據連接到您電腦的闆卡類型和數量而有所不同。然後選擇您的闆卡設備名稱並運行(如果需要,請將 o115200p 更改為所用晶片的預設波特率):

screen /dev/cu.device_name 115200 將 device_name 替換為執行 ls /dev/cu.* 找到的名稱。

樂鑫系統

27. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 15:在 Windows 系統上使用 PuTTY 設定串列埠通信

樂鑫系統

28. 提交文檔回饋

發布 v5.0.9

第一章 開始

圖 16:在 Linux 系統上使用 PuTTY 設定串列埠通信

樂鑫系統

29. 提交文檔回饋

發布 v5.0.9

第一章 開始
您要查找的是螢幕上顯示的日誌。日誌內容取決於載入到 ESP32 上的應用程序,請參閱範例。amp輸出。若要退出螢幕會話,請鍵入 Ctrl-A + 。
注意:確認通訊正常後,請務必退出螢幕會話。如果您忘記退出而直接關閉終端窗口,之後將無法透過串列埠上傳韌體。
Examp輸出範例amp日誌如下所示。如果看不到任何內容,請重設電路板。 ets 2016年6月8日 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage引導程式 I (45) 啟動:編譯時間 18:48:10

如果可以看到可讀的日誌輸出,則表示串列埠連接正常,可以繼續進行安裝,最終將應用程式上傳到 ESP32。
注意:對於某些串列接線配置,需要在終端程式中停用串列埠 RTS 和 DTR 接腳,ESP32 才能啟動並產生串列埠輸出。這取決於硬體本身,大多數開發板(包括所有 Espressif 開發板)不存在此問題。如果 RTS 和 DTR 直接連接到 EN 和 GPIO0 引腳,則會出現此問題。更多詳情請參閱 esptool 文件。
如果您是從 ESP32 開發軟體安裝的第 5 步「ESP-IDF 的第一步」到達這裡的,那麼您可以繼續執行第 5 步「ESP-IDF 的第一步」。
IDF Monitor 主要是一個串列埠終端程序,用於在目標設備的串列埠之間傳輸串列資料。它還提供了一些 IDF 特有的功能。可以透過在 IDF 專案中執行 `idf.py monitor` 來啟動 IDF Monitor。
鍵盤快捷鍵 為了方便與 IDF Monitor 交互,請使用下表中給出的鍵盤快捷鍵。

樂鑫系統

30. 提交文檔回饋

發布 v5.0.9

第一章 開始

鍵盤快速鍵 Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A(或 A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I(或 I)
· Ctrl+H(或 H)
· Ctrl+X(或 X)
Ctrl+C

行動

描述

退出程式選單(按 Esc 鍵) 將選單字元本身傳送到遙控器
將退出字元本身傳送到遠端伺服器
透過 RTS 線將目標重置到引導程式以暫停應用程式
透過RTS重置目標板
建置並燒錄項目

僅建置和刷寫應用程式

停止/恢復螢幕日誌輸出列印

停止/恢復日誌輸出已儲存 file

停止/恢復時間amps

印刷

顯示所有鍵盤快速鍵

按下並按照下方給出的按鍵之一進行操作。
透過 RTS 線(如果已連接)將目標板重置到引導程式模式,使板子不執行任何程式。當您需要等待另一個裝置啟動時,此功能非常有用。透過 RTS 線(如果已連接)重設目標板並重新啟動應用程式。
暫停 idf_monitor 以運行專案 flash 目標,然後恢復 idf_monitor。任何已更改的來源 files 會被重新編譯並重新燒錄。如果 idf_monitor 啟動時使用了參數 -E,則執行目標 encrypted-flash。暫停 idf_monitor 以運行 app-flash 目標,然後恢復 idf_monitor。與 flash 目標類似,但僅建置並重新燒錄主應用程式。如果 idf_monitor 啟動時使用了參數 -E,則執行目標 encrypted-app-flash。啟動期間會丟棄所有傳入的串列資料。允許快速暫停並檢查日誌輸出,而無需退出監視器。創建一個 file 在專案目錄中,輸出寫入該目錄。 file 直到使用相同的鍵盤快捷鍵停用此功能(或退出 IDF Monitor)為止。 IDF Monitor 可以列印時間戳記。amp 在每行的開頭。時間amp 可以透過 –timest 參數來變更格式。amp-format 命令列參數。

退出程序

中斷正在運行的應用程式

暫停 IDF 監視器並運行 GDB 項目調試器以在運行時調試應用程式。這需要啟用 :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME 選項。

除了 Ctrl-] 和 Ctrl-T 之外,按下的任何鍵都會透過串列傳送出去。

IDF 特有特徵

自動位址解碼:每當 ESP-IDF 輸出 0x4_______ 形式的十六進位代碼位址時,IDF Monitor 都會使用 addr2line_ 在原始碼中尋找位置並找到函數名稱。
如果 ESP-IDF 應用程式崩潰並發生 panic,則會產生暫存器轉儲和回溯訊息,例如:

樂鑫系統

31. 提交文檔回饋

發布 v5.0.9

第一章 開始

在核心 0 上發生了類型為 StoreProhibited 的 Guru Meditation 錯誤。異常為:

未處理。

暫存器轉儲:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

A10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

A14

: 0x00000047 A15

: 0x0000000f SAR

: 0x00000019 錯誤原因:

0x0000001d

EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

IDF Monitor 為轉儲檔案添加了更多細節:

在核心 0 上發生了類型為 StoreProhibited 的 Guru Meditation 錯誤。異常為:

未處理。

暫存器轉儲:

PC

: 0x400f360d PS

: 0x00060330 A0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d:在 /home/gus/esp/32/idf/ex 執行某些操作以導致崩潰amples/開始/

hello_world/main/./hello_world_main.c:57

(由 /home/gus/esp/32/idf/ex 中的 inner_dont_crash 內聯)amples/get-started/hello_

world/main/./hello_world_main.c:52

A2

: 0x3ffb136c A3

: 0x00000005 A4

: 0x00000000 A5

:

0x00000000

A6

: 0x00000000 A7

: 0x00000080 A8

: 0x00000000 A9

:

0x3ffb7dd0

A10

: 0x00000003 A11

: 0x00060f23 A12

: 0x00060f20 A13

:

0x3ffba6d0

A14

: 0x00000047 A15

: 0x0000000f SAR

: 0x00000019 錯誤原因:

0x0000001d

EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (由 inner_dont_crash 在 /home/gus/esp/32/idf/ex 內聯)amples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:42 0x400dbf82: app_main 位於 /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task 位於 /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

為了解碼每個位址,IDF Monitor 在背景執行以下命令:xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

注意:將環境變數 ESP_MONITOR_DECODE 設定為 0 或使用特定命令列呼叫 idf_monitor.py

樂鑫系統

32. 提交文檔回饋

發布 v5.0.9

第一章 開始
選項:idf_monitor.py --disable-address-decoding 以停用位址解碼。
連線時目標重設 預設情況下,IDF Monitor 會在連線目標時重設目標。目標晶片的重設是透過 DTR 和 RTS 串口線實現的。若要防止 IDF Monitor 在連線時自動重設目標,請使用 `--no-reset` 選項呼叫 IDF Monitor(例如,`idf_monitor.py --no-reset`)。
注意:即使將 IDF Monitor 連接到特定連接埠(例如,idf.py monitor –no-reset -p [PORT]),–no-reset 選項也會套用相同的行為。
使用 GDBStub 啟動 GDB。 GDBStub 是一個實用的運行時偵錯功能,它在目標裝置上運行,並透過串列埠連接到主機以接收偵錯命令。 GDBStub 支援讀取記憶體和變數、檢查呼叫堆疊幀等指令。儘管 GDBStub 的功能不如 J 語言強大。TAG 調試時,不需要任何特殊硬體(例如 J)。TAG 由於通訊完全透過串列埠進行,因此目標裝置無需使用 USB 橋接器。可以透過在運作時將 CONFIG_ESP_SYSTEM_PANIC 設定為 GDBStub,將目標裝置配置為在背景執行 GDBStub。 GDBStub 將在背景運行,直到透過串列埠發送 Ctrl+C 訊息,導致 GDBStub 中斷(即停止執行)程序,從而允許 GDBStub 處理偵錯命令。此外,可以透過在 panic 發生時將 CONFIG_ESP_SYSTEM_PANIC 設定為 GDBStub on panic,將 panic 處理程序配置為執行 GDBStub。發生崩潰時,GDBStub 將透過串列埠輸出一個特殊的字串模式,以指示其正在運作。在這兩種情況下(即發送 Ctrl+C 訊息或接收到特殊字串模式),IDF Monitor 都會自動啟動 GDB,以便用戶發送偵錯命令。 GDB 退出後,目標裝置將透過 RTS 串列埠線重設。如果此串列埠線未連接,使用者可以按下板載重設按鈕來重設目標裝置。
注意:在後台,IDF Monitor 會執行以下命令來啟動 GDB:
xtensa-esp32-elf-gdb -ex “設定串口波特率 BAUD” -ex “目標遠端連接埠” -ex 中斷 build/PROJECT.elf :idf_target:`Hello NAME chip`

輸出過濾 IDF 監視器可以透過 `idf.py monitor --print-filter=”xyz”` 調用,其中 `--print-filter` 是輸出過濾參數。預設值為空字串,表示列印所有內容。
列印內容的限制可以指定為一系列tag>:物品tag> 是 tag 字串和是集合 {N, E, W, I, D, V, *} 中的一個字符,表示日誌記錄等級。
對於前ample,PRINT_FILTER=”tag1:W” 僅符合並列印使用 ESP_LOGW(“ 寫入的輸出tag1”,…)或更低的詳細程度,即 ESP_LOGE(“tag1″,…)。未指定或使用 * 預設為詳細等級。
注意:使用主日誌記錄功能,可以在編譯時透過日誌庫停用不需要的輸出。使用 IDF 監視器進行輸出過濾是另一種解決方案,可用於在不重新編譯應用程式的情況下調整過濾選項。
您的應用 tags 為與輸出過濾功能相容,不得包含空格、星號 * 或冒號 :。
如果應用程式輸出的最後一行後面沒有回車符,輸出過濾可能會出現問題,例如,監視器開始列印該行,但隨後發現該行不應該被寫入。這是一個已知問題,可以透過始終添加回車符來避免(尤其是在該行之後沒有緊接著輸出的情況下)。

樂鑫系統

33. 提交文檔回饋

發布 v5.0.9

第一章 開始
Examp過濾規則範例:
· * 可用於搭配任何 tags然而,字串 PRINT_FILTER=”*:I tag1:E」關於 tag1 只列印錯誤,因為規則是 tag1 的優先權高於 * 規則。
· 預設(空)規則等同於 *:V,因為它符合每個 tag 詳細等級或更低等級意味著匹配所有內容。
· “*:N”不僅會抑制日誌函數的輸出,還會抑制printf等函數的輸出。若要避免這種情況,請使用*:E或更高的詳細等級。
· 規則“tag1:V”,“tag1:v”, “tag1:”, “tag1:*」和“tag1”是等效的。·規則“tag1:W tag1:E”等同於“tag1:E” 因為任何後續發生的相同情況 tag
名稱會覆蓋之前的名稱。 · 規則“tag1:我 tag2:W”僅列印 tag1 處於資訊詳細程度等級或更低,且 tag2 在警告
冗長程度或更低。 · 規則“tag1:我 tag2:W tag3:N」本質上與前一個等效,因為 tag3:N 指定
那 tag第3項不應列印。 tag3:N 在規則“tag1:我 tag2:W tag3:N *:V」更有意義,因為沒有 tag3:N
tag可能列印了 3 則訊息;錯誤在於 tag1 和 tag2 將以指定的(或更低的)詳細等級列印,其他所有內容將預設為列印。
更複雜的過濾範例amp以下日誌片段是在未使用任何過濾選項的情況下取得的:
載入:0x40078000,長度:13564 入口 0x40078d4c E (31) esp_image: 0x30000 處的鏡像具有無效的魔數 W (31) esp_image: 0x30000 處的鏡像 boot 啟動程序具有無效的應用程式(568) cpu_start: 專業 CPU 已啟動。 I (569) heap_init: 正在初始化。 RAM 可用於動態分配: I (603) cpu_start: 專業 CPU 啟動使用者代碼 D (309) light_driver: [light_init, 74]:狀態: 1,模式: 2 D (318) vfs: esp_vfs_register_fd_range 對範圍 <54 成功 64) 與 wifi 64)驅動程式任務:3ffdbf84,優先權:23,堆疊:4096,核心=0
下面給出過濾選項 PRINT_FILTER=”wifi esp_image:E light_driver:I” 的捕獲輸出:
E (31) esp_image:位址 0x30000 處的鏡像包含無效的魔數位元組 I (328) wifi:wifi 驅動程式任務:3ffdbf84,優先權:23,堆疊:4096,核心數=0
選項「PRINT_FILTER=」light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V」顯示下列輸出:
載入:0x40078000,長度:13564,入口 0x40078d4c I (569) heap_init:正在初始化。可用於動態分配的 RAM:D (309) light_driver:[light_init, 74]:狀態:1,模式:2
IDF Monitor 的已知問題
在 Windows 系統上觀察到的問題
· 由於 Windows 控制台的限制,方向鍵以及某些其他按鍵在 GDB 中無法使用。 · 有時,oidf.py 退出時,IDF Monitor 可能會暫停最多 30 秒,然後才會恢復運作。 · ogdbpis 運作時,在開始與 GDBStub 通訊之前,可能會短暫暫停。

樂鑫系統

34. 提交文檔回饋

發布 v5.0.9

第一章 入門:Linux 與 macOS 標準工具鏈設置

安裝步驟詳解 這是一份詳細的安裝指南,將引導您完成整個安裝過程。
搭建開發環境 以下是為您的 ESP32 設定 ESP-IDF 的步驟: · 步驟 1. 安裝必備元件 · 步驟 2. 取得 ESP-IDF · 步驟 3. 設定工具 · 步驟 4. 設定環境變數 · 步驟 5. ESP-IDF 入門
步驟 1:安裝必備​​元件 若要將 ESP-IDF 與 ESP32 搭配使用,您需要根據您的作業系統安裝一些軟體套件。本安裝指南將協助您在 Linux 和 macOS 系統上完成所有安裝工作。
Linux 使用者:要使用 ESP-IDF 進行編譯,您需要取得以下軟體包。運行命令取決於您使用的 Linux 發行版:
· Ubuntu 和 Debian:sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 和 8:sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 仍然受支持,但為了獲得更好的使用者體驗,建議使用 CentOS 8。 · Arch:sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
注意:· 使用 ESP-IDF 需要 CMake 版本 3.16 或更高版本。如果您的作業系統版本沒有合適的 CMake 版本,請執行 `otools/idf_tools.py install cmake` 進行安裝。 · 如果您在上述清單中找不到您的 Linux 發行版,請查閱其文件以了解安裝軟體包所需的命令。
對於 macOS 用戶,ESP-IDF 將使用 macOS 預設安裝的 Python 版本。 · 安裝 CMake 和 Ninja 建置:如果您已安裝 Homebrew,可以執行:brew install cmake ninja dfu-util;如果您已安裝 MacPorts,可以執行:sudo port install cmake ninja dfu-util;否則,請造訪 CMake 和 Ninja 的官方安裝網站下載 macOS 安裝。

樂鑫系統

35. 提交文檔回饋

發布 v5.0.9

第一章 開始
強烈建議同時安裝 ccache 以加快建造速度。如果您安裝了 Homebrew,可以透過 `brew install ccache` 指令安裝;如果您安裝了 MacPorts,則可以使用 `sudo port install ccache` 指令安裝。
注意:如果在任何步驟中出現類似這樣的錯誤:xcrun:錯誤:無效的活動開發者路徑 (/Library/Developer/CommandLineTools),缺少位於 /Library/Developer/CommandLineTools/usr/bin/xcrun 的 xcrun
接下來,您需要安裝 Xcode 命令列工具才能繼續。您可以透過執行 `xcode-select --install` 來安裝這些工具。
Apple M1 使用者:如果您使用 Apple M1 平台並看到類似這樣的錯誤:警告:工具 xtensa-esp32-elf 版本 esp-2021r2-patch3-8.4.0 的目錄存在,但找不到該工具。錯誤:工具 xtensa-esp32-elf 沒有已安裝的版本。請執行“install.sh”進行安裝。
或:zsh:執行檔中的 CPU 類型錯誤:~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
然後您需要執行 /usr/sbin/softwareupdate --install-rosetta --agree-to-license 來安裝 Apple Rosetta 2。
根據 macOS Catalina 10.15 的發行說明,不建議使用 Python 2.7,未來的 macOS 版本也不會預設包含 Python 2.7。請檢查您目前安裝的 Python 版本:python --version
如果輸出類似 Python 2.7.17,表示你的預設解釋器是 Python 2.7。如果是這樣,請檢查你的電腦上是否已安裝 Python 3:python3 --version
如果上述命令回傳錯誤,則表示未安裝 Python 3。以下是詳細說明。view 安裝 Python 3 的步驟。
· 使用 Homebrew 安裝 python3 的方法如下:brew install python3
如果您安裝了 MacPorts,可以運行:sudo port install python38
步驟 2:取得 ESP-IDF 要為 ESP32 建立應用程序,您需要 Espressif 在 ESP-IDF 程式碼庫中提供的軟體庫。若要取得 ESP-IDF,請導覽至您的安裝目錄,並使用 `git clone` 指令複製程式碼庫,具體操作請參考以下針對您作業系統的說明。打開終端,並執行以下命令:

樂鑫系統

36. 提交文檔回饋

發布 v5.0.9

第一章 開始

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 --recursive https://github.com/espressif/esp-idf.git
ESP-IDF 將被下載到 ~/esp/esp-idf。 有關在給定情況下使用哪個 ESP-IDF 版本的信息,請參閱 ESP-IDF 版本。
步驟 3. 安裝工具 除了 ESP-IDF 之外,對於支援 ESP32 的項目,您還需要安裝 ESP-IDF 使用的工具,例如編譯器、偵錯器、Python 套件等。 cd ~/esp/esp-idf ./install.sh esp32
或使用 Fish shell,指令為:cd ~/esp/esp-idf ./install.fish esp32
以上指令僅為 ESP32 安裝工具。如果您打算為其他晶片平台開發項目,則應列出所有平台並運行相應的命令。例如:ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
或使用 Fish shell,指令為:cd ~/esp/esp-idf ./install.fish esp32,esp32s2
若要為所有支援的目標安裝工具,請執行下列命令:cd ~/esp/esp-idf ./install.sh all
或使用 Fish shell,指令為:cd ~/esp/esp-idf ./install.fish all
注意:對於 macOS 用戶,如果在任何步驟中出現類似這樣的錯誤:url開啟錯誤 [SSL: CERTIFICATE_VERIFY_FAILED] 憑證驗證失敗:無法取得本機發行者憑證 (_ssl.c:xxx)
您可以在電腦的 Python 資料夾中執行 Install Certificates.command 來安裝憑證。有關詳細信息,請參閱“安裝 ESP-IDF 工具時出現下載錯誤”。

選擇 File 下載 工具安裝程式會下載多個檔案。 file已附加到 GitHub Releases。如果存取 GitHub 速度較慢,則可以設定環境變量,將 GitHub 資源下載的首選伺服器設定為 Espressifns。

注意:此設定僅控制從 GitHub 發布版本下載的單一工具,不會變更… URL用於存取任何 Git 倉庫。

若要在安裝工具時優先使用 Espressif 下載伺服器,請在執行 install.sh 時使用下列命令序列:

樂鑫系統

37. 提交文檔回饋

發布 v5.0.9

第一章 開始

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
自訂工具安裝路徑 此步驟中介紹的腳本會將 ESP-IDF 所需的編譯工具安裝到使用者主目錄(Linux 系統下為 $HOME/.espressif)。如果您希望將工具安裝到其他目錄,請在執行安裝腳本之前設定環境變數 IDF_TOOLS_PATH。請確保您的使用者帳戶擁有足夠的權限來讀取和寫入此路徑。如果變更了 IDF_TOOLS_PATH,請確保每次執行安裝腳本(install.bat、install.ps1 或 install.sh)和匯出腳本(export.bat、export.ps1 或 export.sh)時,其值都相同。
步驟 4:設定環境變數 已安裝的工具尚未加入 PATH 環境變數。要使這些工具能夠從命令列使用,必須設定一些環境變數。 ESP-IDF 提供了一個腳本來完成此操作。在您將要使用 ESP-IDF 的終端機中,執行:
。 $HOME/esp/esp-idf/export.sh
或對於 fish(僅 fish 版本 3.0.0 及更高版本支援):
. $HOME/esp/esp-idf/export.fish
注意開頭的點號和路徑之間的空格!如果您打算經常使用 esp-idf,可以建立一個別名來執行 export.sh:
1. 將以下命令複製並貼上到您的 shellns pro 中file (.profile.bashrc、.zprofile, ETC。
別名 get_idf='.$HOME/esp/esp-idf/export.sh' 2. 透過重新啟動終端會話或執行 source [pro 路徑] 來刷新配置file],
對於前任amp執行 `source ~/.bashrc` 指令。現在你可以在任何終端機會話中執行 `get_idf` 來設定或刷新 esp-idf 環境。理論上,你可以將 `export.sh` 加入你的 shellns 設定檔中。file 可以直接這樣做;但是,不建議這樣做。這樣做會在每個終端會話(包括不需要 IDF 的會話)中啟動 IDF 虛擬環境,從而違背虛擬環境的初衷,並可能影響其他軟體。
步驟 5:ESP-IDF 入門 現在所有要求都已滿足,接下來將指導您如何開始您的第一個專案。本指南將協助您完成使用 ESP-IDF 的第一步。請按照本指南在 ESP32 上建立一個新項目,並完成建置、燒錄和監控設備輸出。
注意:如果您尚未安裝 ESP-IDF,請前往「安裝」頁面並依照指示操作,以取得使用本指南所需的所有軟體。

現在就可以開始專案了,您可以開始為 ESP32 準備應用程式了。您可以從 ex 的 getstarted/hello_world 專案開始。ampESP-IDF 中的 .les 目錄。

重要提示:ESP-IDF 建置系統不支援 ESP-IDF 或專案路徑中包含空格。

將專案 get-started/hello_world 複製到 ~/esp 目錄:

樂鑫系統

38. 提交文檔回饋

發布 v5.0.9

第一章 開始
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world 。
註:存在一系列範例amp前的項目ampESP-IDF 中的 .les 目錄。 您可以以與上述相同的方式複制任何項目並運行它。 也可以構建 examp無需先複製即可直接在原地放置文件。
現在將 ESP32 開發板連接到計算機,並查看該開發板在哪個串列埠下可見。串口命名規則如下:
· Linux:以 /dev/tty 開頭;· macOS:以 /dev/cu 開頭。如果您不確定如何查看串列埠名稱,請參閱「使用 ESP32 建立串列埠連線」以了解詳細資訊。
注意:請保留端口名稱,因為您在後續步驟中將需要它。
設定專案:導航至 hello_world 目錄,將目標裝置設定為 ESP32,然後執行專案設定工具 menuconfig。 cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
新建專案後,首先需要使用 `idf.py set-target esp32` 指令設定目標平台。請注意,此過程中會清除並初始化專案中已有的建置和配置(如有)。您也可以將目標平台保存在環境變數中,從而跳過此步驟。更多信息,請參閱“選擇目標晶片:set-target”。如果先前的步驟正確完成,將會出現以下選單:

圖 17:項目配置 – 主視窗 您可以使用此選單設定項目特定變量,例如 Wi-Fi 網路名稱和密碼、處理器速度等。對於 ohello_worldp 項目,可以跳過使用 menuconfig 設定項目,因為此範例ample 與

樂鑫系統

39. 提交文檔回饋

發布 v5.0.9

第一章 開始
預設配置。
注意:如果您使用 ESP32-DevKitC 開發板搭配 ESP32-SOLO-1 模組,或使用 ESP32-DevKitM-1 開發板搭配 ESP32-MIN1-1(1U) 模組,請在刷寫韌體之前,請在 menuconfig 中啟用單核心模式 (CONFIU_REERTOSOS_UORE)。amp萊斯。
注意:選單顏色在您的終端中可能有所不同。您可以使用 `--style` 選項來變更選單外觀。請執行 `idf.py menuconfig --help` 以取得更多資訊。
如果您使用的是支援的開發板,則可以使用板級支援包 (Board Support Package) 來加快開發速度。有關更多信息,請參閱“其他提示”。
建置專案 透過執行以下命令建置專案:
idf.py 構建
該命令將編譯應用程序和所有 ESP-IDF 組件,然後生成引導加載程序、分區表和應用程序二進製文件。
$ idf.py build 在目錄 /path/to/hello_world/build 中執行 cmake 執行「cmake -G Ninja --warn-uninitialized /path/to/hello_world」… 警告:存在未初始化的值。 — 找到 Git:/usr/bin/git(版本「2.17.0」) — 由於設定問題,正在建構空的 aws_iot 元件 — 元件名稱:… — 元件路徑:…
…(更多行構建系統輸出)
[527/527] 正在產生 hello_world.bin esptool.py v2.3.1
項目建置完成。要進行燒錄,請執行以下指令:../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000m 0000000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 或執行 'idf.py -p PORT flash'
如果沒有錯誤,構建將通過生成固件二進製文件 .bin 來完成 files.
將您剛剛建置的二進位檔案(bootloader.bin、partition-table.bin 和 hello_world.bin)刷入 ESP32 開發板,執行下列命令:
idf.py -p 端口 [-b 波特率] 閃存
將 PORT 替換為您的 ESP32 開發板串列埠名稱。您也可以將 BAUD 替換為所需的波特率來變更燒錄器的波特率。預設波特率為 460800。有關 idf.py 參數的更多信息,請參閱 idf.py 檔案。
注意:flash 選項會自動建置並燒錄項目,因此無需執行 idf.py build。

樂鑫系統

40. 提交文檔回饋

發布 v5.0.9

第一章 開始

刷寫過程中遇到問題?如果您在執行給定命令後看到類似「連線失敗」的錯誤,可能有多種原因。其中一個原因可能是 esptool.py 出現問題。 esptool.py 是建構系統呼叫的實用程序,用於重置晶片、與 ROM 引導程式互動以及刷寫韌體。一個簡單的解決方法是嘗試下文所述的手動重置,如果問題仍然存在,您可以在「故障排除」部分找到更多相關資訊。
esptool.py 透過置位 USB 轉串口轉換晶片(例如 FTDI 或 CP210x)的 DTR 和 RTS 控制線來自動重設 ESP32(更多資訊請參閱「與 ESP32 建立串列埠連接」)。 DTR 和 RTS 控制線分別連接到 ESP32 的 GPIO0 和 CHIP_PU (EN) 接腳,因此,電壓的變化會影響 ESP32 的重設。tag達到一定的 DTR 和 RTS 電平將使 ESP32 進入韌體下載模式。例如amp請參閱 ESP32 DevKitC 開發板的原理圖。
一般來說,使用官方的 esp-idf 開發板不會有問題。但是,在以下情況下,esptool.py 無法自動重設您的硬體:
· 您的硬體未將 DTR 和 RTS 線連接到 GPIO0 和 CHIP_PU。 · DTR 和 RTS 線的配置不同。 · 根本沒有這些串列控制線。
根據您所使用的硬體類型,也可以手動將 ESP32 板置於韌體下載模式(重設)。
· 對於樂鑫(Espressif)生產的開發板,您可以在對應的入門指南或使用者指南中找到這些資訊。例如:amp例如,若要手動重設 ESP-IDF 開發板,請按住 Boot 按鈕 (GPIO0) 並按下 EN 按鈕 (CHIP_PU)。
· 對於其他類型的硬件,請嘗試將 GPIO0 拉低。

正常操作:刷寫韌體時,您將看到類似如下的輸出日誌:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x80dio –flash_freq 40m –flash_size 2MB 0x80000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev 串列埠 /dev/ttyUSB0 正在連接…晶片為 ESP32D0WDQ6(版本 0) 特性:WiFi、藍牙、雙核心、無編碼方案 晶振頻率為 4002:400:005:0024:0024:0024:00024:00024:005:0024:2024:2024:2024:2024:2024:2024:002正在上傳存根… 正在運行存根… 存根正在運行… 波特率已更改為 460800 已更改。正在配置快閃記憶體大小…已將 3072 位元組壓縮為 103 位元組…正在寫入位址 0x00008000…(100%)已在 0x00008000 寫入 3072 位元組(壓縮後 103 位元組),耗時 0.0 秒已將 26096 位元組壓縮為 15408 位元組…正在寫入位址 0x00001000…(100%)已在 0x00001000 寫入 26096 位元組(壓縮後 15408 位元組),耗時 0.4 秒值(Cap)已將 147104 位元組壓縮至 77364 位元組… 正在寫入位址 0x00010000… (20%) 正在寫入位址 0x00014000… (40%) 正在寫入位址 0x000180001400% (60%) 正在寫入位址
(下一頁)

樂鑫系統

41. 提交文檔回饋

發布 v5.0.9

第一章 開始
(接上頁)正在寫入 0x00020000… (100 %) 在 0x00010000 處寫入 147104 位元組(壓縮後為 77364 位元組),耗時 1.9 秒(有效速度為 615.5 kbit/s)…已驗證資料…已驗證資料。
離開…通過 RTS 引腳硬重置…完成
如果在刷寫過程結束時沒有出現任何問題,開發板將重新啟動並啟動 ohello_world 應用程式。如果您想使用 Eclipse 或 VS Code IDE 而不是執行 idf.py,請查看 Eclipse 外掛程式和 VS Code 擴充功能。
監控輸出:要檢查 ohello_worldpis 是否正在運行,請鍵入 idf.py -p PORT monitor(請務必將 PORT 替換為您的串列埠名稱)。此命令將啟動 IDF Monitor 應用程式:
$ idf.py -p監控程式正在目錄 […]/esp/hello_world/build 中執行 idf_monitor 執行「python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf」itor — idfmono…hello_world. 115200 —– 退出:Ctrl+] | 選單:Ctrl+T | 幫助:Ctrl+T 然後按 Ctrl+H –ets 2016年6月8日 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57 …
啟動和診斷日誌向上捲動後,您應該會看到應用程式列印出 oHello world!p。
……你好,世界! 10秒後重開機…這是ESP32晶片,2個CPU核心,支援WiFi/藍牙/BLE,晶片版本1,2MB外部快閃記憶體。最小可用堆大小:298968位元組。 9秒後重啟…8秒後重啟…7秒後重啟…
若要退出 IDF 監視器,請使用快速鍵 Ctrl+]。如果 IDF 監視器在上傳後不久出現故障,或者您看到的不是上述訊息,而是類似下面所示的隨機亂碼,則您的開發板可能正在使用 26 MHz 晶振。大多數開發板設計使用 40 MHz 晶振,因此 ESP-IDF 預設使用此頻率。

如果遇到此類問題,請按以下步驟操作:
1. 退出顯示器。 2. 返回選單配置。 3. 進入組件配置 > 硬體設定 > 主晶振配置 > 主晶振
然後將 CONFIG_XTAL_FREQ_SEL 頻率改為 26 MHz。 4. 之後,再次建置並燒錄應用程式。

樂鑫系統

42. 提交文檔回饋

發布 v5.0.9

第一章 開始
在目前版本的 ESP-IDF 中,ESP32 支援的主要晶振頻率如下:
· 26 MHz · 40 MHz
注意:您可以透過執行以下命令將建置、刷寫和監控合併為一個步驟:idf.py -p PORT flash monitor
另請參閱:· IDF Monitor,其中包含便捷的快捷方式和更多關於使用 IDF Monitor 的詳細資訊。 · idf.py,其中包含 idf.py 指令和選項的完整參考。
這就是開始使用 ESP32 所需的一切!現在你可以嘗試一些其他的例子了。amp或直接開發你自己的應用程式。
重要提示:部分​​內容amples 不支援 ESP32,因為 ESP32 本身不包含所需的硬件,所以無法提供支援。如果建置一個 examp請查看 README 文件。 file 對於「支援的目標」表。如果該表存在(包括 ESP32 目標),或該表根本不存在,則表示該目標不存在。amp它可以用於 ESP32。
額外提示
權限問題 /dev/ttyUSB0 在某些 Linux 發行版中,燒錄 ESP32 時可能會出現「無法開啟連接埠 /dev/ttyUSB0」的錯誤訊息。可以透過將目前使用者新增至 dialout 群組來解決此問題。
Python 相容性:ESP-IDF 支援 Python 3.7 或更高版本。建議您將作業系統升級到滿足此要求的最新版本。其他選項包括從原始程式碼安裝 Python 或使用 Python 版本管理系統,例如 pyenv。
首先使用板級支援包 (BSP) 為了加快某些開發板的原型開發速度,您可以使用板級支援包 (BSP),它只需呼叫幾個函數即可輕鬆初始化特定開發板。 BSP 通常支援開發板上提供的所有硬體組件。除了引腳定義和初始化函數之外,BSP 還包含外部元件(例如感測器、顯示器、音訊編解碼器等)的驅動程式。 BSP 透過 IDF 元件管理器分發,因此可以在 IDF 元件註冊表中找到它們。以下是一個範例amp如何將 ESP-WROVER-KIT BSP 新增至您的專案:idf.py add-dependency esp_wrover_kit
更多前ampBSP 的使用範例可以在 BSP 範例中找到。amp文件夾。
提示:ESP-IDF 更新 建議您定期更新 ESP-IDF,因為新版本會修復錯誤和/或提供新功能。請注意,每個 ESP-IDF 主版本和次版本都有其支援期限。當某個版本分支即將停止維護 (EOL) 時,我們鼓勵所有使用者將其項目升級到更新的 ESP-IDF 版本。有關支援期限的更多信息,請參閱 ESP-IDF 版本說明。

樂鑫系統

43. 提交文檔回饋

發布 v5.0.9

第一章 開始
最簡單的更新方法是刪除現有的 esp-idf 資料夾並重新克隆,就像執行步驟 2「取得 ESP-IDF」中所述的初始安裝一樣。另一種方法是僅更新已更改的部分。更新過程取決於您使用的 ESP-IDF 版本。更新 ESP-IDF 後,如果新版本需要不同版本的工具,請再次執行安裝腳本。請參閱步驟 3「設定工具」中的說明。安裝新工具後,使用匯出腳本更新環境。請參閱步驟 4「設定環境變數」中的說明。
相關文件 · 與 ESP32 建立串列連接 · Eclipse 外掛程式 · VSCode 擴充功能 · IDF 監視器
1.4 建構你的第一個項目
如果您已經安裝了 ESP-IDF 但未使用 IDE,則可以按照「在 Windows 上啟動專案」或「在 Linux 和 macOS 上啟動專案」的步驟,從命令列建置您的第一個專案。
1.5 卸載 ESP-IDF
如果要移除 ESP-IDF,請依照解除安裝 ESP-IDF 的步驟操作。

樂鑫系統

44. 提交文檔回饋

發布 v5.0.9

第2章
API參考
2.1 API約定
本文檔描述了ESP-IDF應用程式介面(API)的通用約定和假設。 ESP-IDF提供多種程式設計介面:
· 在公共頭檔中宣告的 C 函數、結構體、枚舉、型別定義和預處理器宏 fileESPIDF 組件。程式指南的 API 參考部分包含這些函數、結構和類型的描述。
· 建置系統功能、預先定義變數和選項。這些內容在建置系統指南中有詳細說明。 · Kconfig 選項既可以在程式碼中使用,也可以在建置系統(CMakeLists.txt)中使用。 file主機工具及其命令列參數也是 ESP-IDF 介面的一部分。 ESP-IDF 由專門為其編寫的元件以及第三方函式庫組成。在某些情況下,會在第三方程式庫中新增 ESP-IDF 特定的封裝層,從而提供一個更簡潔或與 ESP-IDF 其他功能更好地整合的介面。在其他情況下,則會向應用程式開發人員提供第三方程式庫的原始 API。以下章節將解釋 ESP-IDF API 的一些面向及其用法。
2.1.1 錯誤處理
大多數 ESP-IDF API 會傳回 esp_err_t 類型的錯誤代碼。有關錯誤處理方法的更多信息,請參閱“錯誤處理”部分。 「錯誤代碼參考」包含 ESP-IDF 元件傳回的錯誤代碼清單。
2.1.2 配置結構
重要提示:正確初始化配置結構是使應用程式與未來版本的 ESP-IDF 相容的重要部分。
ESP-IDF 中的大多數初始化或配置函數都接受一個指向配置結構的指標作為參數。例如:amp樂:
45

第二章 API 參考

const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = “my_timer”
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
初始化函數永遠不會儲存指向配置結構的指針,因此可以安全地在堆疊上分配該結構。
應用程式必須初始化結構體的所有欄位。以下寫法不正確:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* 錯誤!字段 .arg 和 .name 未初始化 */ esp_timer_create(&my_timer_args, &my_timer);
大多數 ESP-IDF 範例amples 使用 C99 指定的初始化器進行結構體初始化,因為它們提供了一種簡潔的方法來設定字段子集,並將剩餘字段初始化為零:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* 正確,欄位 .arg 和 .name 已初始化為零 */
};
C++ 語言直到 C++20 才支援指定初始化器語法,但 GCC 編譯器透過擴充部分支援該語法。在 C++ 程式碼中使用 ESP-IDF API 時,您可以考慮使用下列模式:
esp_timer_create_args_t my_timer_args = {}; /* 所有欄位都初始化為零 */ my_timer_args.callback = &my_timer_callback;

預設初始化程式
對於某些配置結構,ESP-IDF 提供了用於設定欄位預設值的巨集:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG 展開為指定的初始化程序。
現在所有欄位都已設定為預設值。任何欄位仍可修改:*/ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
建議在特定配置結構提供預設初始化巨集時,使用這些巨集。

2.1.3 私有 API
特定標題 fileESP-IDF 中的 s 包含僅供 ESP-IDF 原始碼使用,而非供應用程式使用的 API。此類頭文件 file元件名稱或路徑中通常包含 private 或 esp_private。某些元件(例如 hal)僅包含私有 API。私有 API 可能會在次要版本或修補程式版本之間移除或以不相容的方式變更。

2.1.4 組件amp項目
ESP-IDF examp這些範例包含各種示範 ESP-IDF API 用法的項目。為了減少範例中的程式碼重複,amp例如,一些常用的輔助函數定義在多個元件使用的元件內部。amp萊斯。

樂鑫系統

46. 提交文檔回饋

發布 v5.0.9

第二章 API 參考
這包括位於

文件/資源

Espressif Systems ESP32 Dev Kitc 開發板 [pdf] 使用者指南
ESP32 Dev Kitc 開發板,ESP32,Dev Kitc 開發板,Kitc 開發板,開發板,板

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *