Placa de desenvolupament ESP32 Dev Kitc
Informació del producte
Especificacions
- Producte: ESP32
- Guia de programació: ESP-IDF
- Versió de llançament: v5.0.9
- Fabricant: Espressif Systems
- Data de llançament: 16 de maig de 2025
Instruccions d'ús del producte
1. Comenceu
Abans de començar amb l'ESP32, familiaritzeu-vos amb el
següent:
1.1 Introducció
Coneix les funcionalitats i capacitats bàsiques de
ESP32.
1.2 El que necessites
Assegureu-vos que teniu el maquinari i el programari necessaris:
- Maquinari: Reviseu la llista de maquinari necessari
components. - Programari: Instal·leu el programari necessari
components.
1.3 Instal·lació
Segueix aquests passos per instal·lar l'IDE i configurar el
medi ambient:
- IDE: Instal·leu l'IDE recomanat per a
programació de l'ESP32. - Instal·lació manual: Configura manualment el
medi ambient si cal.
1.4 Crea el teu primer projecte
Crea i construeix el teu projecte inicial utilitzant l'ESP32.
1.5 Desinstal·leu ESP-IDF
Si cal, apreneu a desinstal·lar l'ESP-IDF del vostre
sistema.
2. Referència de l'API
Consulteu la documentació de l'API per obtenir informació detallada sobre
protocols d'aplicació, gestió d'errors i configuració
estructures.
Preguntes freqüents (FAQ)
P: Com puc solucionar problemes comuns amb ESP32?
A: Consulteu la secció de resolució de problemes de la guia de programació.
o visiteu el fabricant weblloc de recursos de suport.
P: Puc utilitzar ESP-IDF amb altres microcontroladors?
A: L'ESP-IDF està dissenyat específicament per a ESP32, però és possible que trobeu
compatibilitat amb altres microcontroladors Espressif.
ESP32
Guia de programació ESP-IDF
Llançament v5.0.9 Espressif Systems 16 de maig de 2025
Taula de continguts
Taula de continguts
i
1 Comenceu
3
1.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 El que necessiteu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Maquinari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Programari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Instal·lació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Instal·lació manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Crea el teu primer projecte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5 Desinstal·leu l'ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 Referència de l'API
45
2.1 Convencions de l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.1 Gestió d'errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 Estructures de configuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 API privades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 Components en exampels projectes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Estabilitat de l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 Protocols d'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 Port ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.2.5 Client HTTP ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Control local de l'ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 Enllaç esclau sèrie ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Paquet de certificats ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 Servidor HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 Servidor HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 Ressò ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 Servei mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 TLS de Mbed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 Capa de xarxa IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 API de Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Bluetooth® Comú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® de baix consum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Clàssic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 Controlador i HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 API d'amfitrió basades en NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 Referència dels codis d'error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 API de xarxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936
i
2.5.4 ESP-NETIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Capa de xarxa IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Capa d'aplicació. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API de perifèrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Controlador de mode únic del convertidor analògic-digital (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Controlador de mode continu del convertidor analògic-digital (ADC). . . . . . . . . . . . . . . 986 2.6.3 Controlador de calibratge del convertidor analògic-digital (ADC). . . . . . . . . . . . . . . . . . . 993 2.6.4 Arbre de rellotges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Convertidor digital-analògic (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO i RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Temporitzador d'ús general (GPTimer). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Circuit interintegrat (I2C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 So inter-IC (I2S). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Control de LED (LEDC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulador d'amplada d'impulsos de control del motor (MCPWM). . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Comptador d'impulsos (PCNT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Transceptor de control remot (RMT). . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Requisits de pull-up de SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Controlador d'amfitrió SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Controlador d'amfitrió SPI SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Controlador esclau de la targeta SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulació Sigma-Delta (SDM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Controlador mestre SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Controlador esclau SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Element segur). . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Sensor tàctil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Interfície d'automoció de dos cables (TWAI). . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Receptor/transmissor asíncron universal (UART). . . . . . . . . . . . . . . . . . 1317 2.7 Configuració del projecte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Introducció. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menú de configuració del projecte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Ús de sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Regles de formatació del Kconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Compatibilitat amb versions anteriors de les opcions de Kconfig. . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Referència d'opcions de configuració. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API de provisionament. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Comunicació per protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Aprovisionament unificat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Aprovisionament de Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API d'emmagatzematge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileSuport del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Utilitat de fabricació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Biblioteca d'emmagatzematge no volàtil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Utilitat del generador de particions NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Controlador SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 API Flash SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 SPIFFS Filesistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Virtual filecomponent del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API de nivellació de desgast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Format d'imatge de l'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Traçat a nivell d'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Funció de crida amb pila externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Revisió del xip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 Gestor d'eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Codis d'error i funcions d'ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Biblioteca de bucles d'esdeveniments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (Més deview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (Funcions addicionals) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Assignació de memòria en muntanyes (Heap Time) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Depuració de memòria en muntanyes (Heap Time) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 Temporitzador d'alta resolució (temporitzador ESP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032 2.10.16 API internes i inestables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Crida entre processadors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 Assignació d'interrupcions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Biblioteca de registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 API del sistema diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Actualitzacions per aire (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Monitor de rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 Gestió d'energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 Compatibilitat amb fils POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Generació de nombres aleatoris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 Modes de repòs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 Capacitats del SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Hora del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 L'API d'assignació de himem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Programació de coprocessadors ULP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 Controladors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3 Referència de maquinari
2167
3.1 Comparació de sèries de xips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 Documents relacionats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 Guies de l'API
2171
4.1 Biblioteca de traçat a nivell d'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1 Acabatview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Modes de funcionament . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 Opcions de configuració i dependències. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Com s'utilitza aquesta biblioteca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Flux d'inici de l'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 Primer stage carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 segon stage carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Inici de l'aplicació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® Clàssic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1 Acabatview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® de baix consum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Acabatview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Començar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Gestor d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 Compatibilitat del carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Nivell de registre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 Restabliment de fàbrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 Arrencada des del firmware de prova. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Reversió . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 Organisme de vigilància . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 Mida del carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 Arrencada ràpida des del mode de repòs profund. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Gestor d'arrencada personalitzat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 Sistema de compilació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1 Acabatview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Ús del sistema de compilació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
Ex. 4.6.3ampel Projecte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Projecte CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Components CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Configuració de components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 Definicions del preprocessador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 Requisits dels components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Substitució de parts del projecte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Components només de configuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Depuració de CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Example Component CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Valors per defecte de sdkconfig personalitzats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 Arguments Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 Compilació del carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Escriure components CMake purs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Ús de projectes CMake de tercers amb components . . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Ús de biblioteques precompilades amb components . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Ús d'ESP-IDF en projectes personalitzats de CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API del sistema de compilació ESP-IDF de CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Compil·lacions globals i incrementals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Metadades del sistema de compilació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 Components interns del sistema de compilació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 Migració des d'ESP-IDF GNU Make System . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Abocament del nucli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Configuracions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.3 Desar el volcat del nucli a la memòria flaix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2317 4.7.4 Imprimir un abocament de memòria del nucli a UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funcions ROM en traces inverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 Abocar variables sota demanda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 Execució d'espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Esquemes de vigília de son profund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 Regles per als esquemes de vigília . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementació d'un stub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 Càrrega de codi a la memòria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 Càrrega de dades a la memòria RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 CRC Comprovació de fragments d'activació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Gestió d'errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.2 Codis d'error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.3 Conversió de codis d'error en missatges d'error . . . . . . . . . . . . . . . . . . . . . . . . . . 2324 4.9.4 Macro ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Macro ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Macro ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Macro ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Macro ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Macro ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 COMPROVAR MACROS Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Patrons de gestió d'errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 Excepcions de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328 4.10.3 Conceptes d'ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2329 4.10.4 Construcció d'una xarxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Gestió d'una xarxa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Transmissió de dades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Canvi de canal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 Rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Notes addicionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11 Gestió d'esdeveniments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Esdeveniments Wi-Fi, Ethernet i IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 Esdeveniments de malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Esdeveniments Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 Errors fatals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Gestor de pànic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Dump de registre i traça inversa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Fitxa GDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Temps d'espera del watchdog RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Errors de meditació del gurú. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Altres errors fatals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Xifratge Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Introducció. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Fusibles electrònics rellevants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Procés de xifratge flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Configuració del xifratge Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Possibles errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Estat del xifratge flash de l'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Lectura i escriptura de dades en memòria flash xifrada. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Actualització de la memòria flash xifrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Desactivació del xifratge Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Punts clau sobre el xifratge flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Limitacions del xifratge Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Xifratge flash i arrencada segura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funcions avançades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Detalls tècnics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Abstracció de maquinari. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Arquitectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Capa LL (de baix nivell). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Capa d'abstracció de maquinari). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Interrupcions d'alt nivell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Nivells d'interrupció. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Notes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Depuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378 4.16.2 Com funciona? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Seleccionant JTAG Adaptador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Configuració d'OpenOCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 Configuració de l'objectiu ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 Inici del depurador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Depuració d'exemplarsamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Compilació d'OpenOCD a partir de les fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 Consells i peculiaritats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 Documents relacionats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Generació de scripts d'enllaçadors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Inici ràpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.3 Components interns de la generació de scripts d'enllaçadors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 API compatibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.2 API de sockets BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API de Netconn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 Tasca lwIP FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 Compatibilitat amb IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 Modificacions personalitzades d'esp-lwip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 Optimització del rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Tipus de memòria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (RAM de dades) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (RAM d'instruccions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (codi executat des de la memòria flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (dades emmagatzemades a la memòria flash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Memòria RTC lenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 Memòria RTC RÀPIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Requisit de compatibilitat amb DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Memòria intermèdia DMA a la pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Modes de la pila OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Com escriure una aplicació OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 L'encaminador de frontera OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Taules de particions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Taules de particions integrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 Creació de taules personalitzades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.4 Generació d'una taula de particions binàries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Comprovació de la mida de la partició . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 Flaix de la taula de particions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 Eina de partició (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 Com optimitzar el rendiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Guies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451 4.23 Calibratge de RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.1 Calibratge parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2468 4.23.2 Calibratge complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.3 Sense calibratge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Dades d'inicialització de PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Referència de l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 Arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Antecedents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 Procés d'arrencada segura mitjançantview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Claus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 Mida del carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.5 Com habilitar l'arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Carregador d'arrencada de programari reinstal·lable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Generació de la clau de signatura d'arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Signatura remota d'imatges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Pràctiques recomanades per a l'arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 Detalls tècnics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 Arrencada segura i xifratge de flaix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Verificació d'aplicacions signades sense arrencada segura per maquinari . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funcions avançades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Arrencada segura V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Antecedents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.2 Avançattages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Procés d'arrencada segura V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.4 Format del bloc de signatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.5 Farciment segur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Verificació d'un bloc de signatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 Verificació d'una imatge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Mida del carregador d'arrencada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 Ús d'eFuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 Com habilitar l'arrencada segura V2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Restriccions després que l'arrencada segura estigui habilitada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Generació de la clau de signatura d'arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 Signatura remota d'imatges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Pràctiques recomanades per a l'arrencada segura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 Detalls tècnics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 Arrencada segura i xifratge de flaix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Verificació d'aplicacions signades sense arrencada segura per maquinari . . . . . . . . . . . . . . . . . . . 2484 4.25.18 Funcions avançades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Suport per a RAM externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Introducció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 Maquinari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Configuració de la RAM externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Restriccions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 Error en inicialitzar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Revisions de xips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27 Emmagatzematge local de fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 API nativa de FreeRTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 API de Pthread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 Estàndard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28 Eines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.1 Interfície d'IDF: idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Imatge de Docker d'IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Instal·lador de Windows d'IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Gestor de components IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 Eines descarregables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Proves unitàries en ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 Casos de prova normals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 Casos de prova multidispositiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 Multi-stage Casos de prova. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Proves per a diferents objectius. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Creació d'aplicacions de prova unitària. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Execució de proves unitàries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Codi de temporització amb temporitzador compensat per memòria cau. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Simulacions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Proves unitàries a Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Proves de programari integrat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Proves unitàries IDF en un amfitrió Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlador Wi-Fi 2520 4.31. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Llista de funcions Wi-Fi de l'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Com escriure una aplicació Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Codi d'error de l'API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inicialització dels paràmetres de l'API Wi-Fi d'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Model de programació Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Descripció de l'esdeveniment Wi-Fi de l'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Escenari general de l'estació Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Escenari general del punt d'accés Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Escaneig Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Escenari de connexió de l'estació Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Connexió de l'estació Wi-Fi ESP32 quan es troben diversos punts d'accés. . . . . . . . . . . . . 2543 4.31.12 Reconnexió Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Temps d'espera de la balisa Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Configuració Wi-Fi de l'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy Connect™ (DPP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Gestió de xarxes sense fil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Mesura de recursos radioelèctrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Transició ràpida de BSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Mode d'estalvi d'energia del Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Rendiment de la transmissió Wi-Fi de l'ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
4.31.21 Enviament de paquets Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Mode rastrejador Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Antenes múltiples Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Informació sobre l'estat del canal Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Informació sobre l'estat del canal Wi-Fi Configura . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 QoS Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Fragment de Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Usuari inscrit a WPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Ús de la memòria intermèdia de Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Com millorar el rendiment del Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Configuració del menú Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 Resolució de problemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Seguretat Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.1 Funcions de seguretat Wi-Fi de l'ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2568 4.32.2 Trames de gestió protegides (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Empresa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Coexistència de RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 Més deview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Escenari de coexistència compatible per a ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Mecanisme i política de coexistència . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Com s'utilitza la funció de coexistència. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Compil·lacions reproduïbles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 Introducció. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 Motius de les compilacions no reproduïbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Habilitació de compilacions reproduïbles a ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 Com s'aconsegueixen compilacions reproduïbles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 Compil·lacions reproduïbles i depuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Factors que encara afecten les compil·lacions reproduïbles . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Guia de l'usuari del mode de baix consum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578
5 Guies de Migració
2579
5.1 Guia de migració d'ESP-IDF 5.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 Migració de 4.4 a 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 Biblioteques i Frameworks
2611
6.1 Marc de treball al núvol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.4 Nucli de Google IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.8 IoT de Tencentyun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.9 Baidu IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2 Marcs d'estructura expressius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Marc de desenvolupament d'àudio Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Biblioteca DSP Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 Marc de desenvolupament ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-OMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.7 Solució ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.8 Protocols ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
viii
6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614
Guia de 7 contribucions
2615
7.1 Com contribuir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 Abans de contribuir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 Procés de sol·licitud d'extracció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 Part legal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5 Documents relacionats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Guia d'estil del marc de desenvolupament d'Espressif IoT . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Instal·leu el hook de pre-commit per al projecte ESP-IDF. . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Documentació del codi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Creació d'Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Plantilla de documentació de l'API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Acord de col·laborador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 Guia de la capçalera de drets d'autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 Proves ESP-IDF amb la guia Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Versions ESP-IDF
2645
8.1 Llançaments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 Amb quina versió he de començar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Esquema de versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 Períodes de suport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 Comprovació de la versió actual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Flux de treball de Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 Actualització de l'ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 Actualització a la versió estable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Actualització a una versió preliminar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Actualització a la branca mestra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Actualització a una branca de llançament . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Recursos
2651
9.1 Plataforma d'EIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 Què és PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Instal·lació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 Configuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 Projecte Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Propers passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 Enllaços útils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 Drets d'autor i llicències
2653
10.1 Drets d'autor del programari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 Components del firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 Documentació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 Drets d'autor del codi font de la ROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Llicència MIT Xtensa libhal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 Llicència MIT TinyBasic Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 Llicència TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 Quant a
2657
12 Canviar entre idiomes
2659
Índex
2661
Índex
2661
ix
x
Taula de continguts
Aquesta és la documentació per a Espressif IoT Development Framework (esp-idf). ESP-IDF és el marc de desenvolupament oficial per als SoC de les sèries ESP32, ESP32-S i ESP32-C. Aquest document descriu l'ús d'ESP-IDF amb el SoC ESP32.
Comença
Referència de l'API
Guies de l'API
Sistemes Espressif
1 Enviar comentaris sobre el document
Versió v5.0.9
Taula de continguts
Sistemes Espressif
2 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1
Comença
Aquest document pretén ajudar-vos a configurar l'entorn de desenvolupament de programari per al maquinari basat en el xip ESP32 d'Espressif. Després d'això, un exemple senzillampUs mostrarem com utilitzar ESP-IDF (Espressif IoT Development Framework) per a la configuració del menú i, a continuació, per compilar i instal·lar el firmware en una placa ESP32.
Nota: Aquesta és la documentació de la versió estable v5.0.9 d'ESP-IDF. També hi ha disponibles altres versions d'ESP-IDF.
1.1 Introducció
L'ESP32 és un sistema en un xip que integra les següents característiques: · Wi-Fi (banda de 2.4 GHz) · Bluetooth · Dual nucli de CPU Xtensa® LX6 de 32 bits d'alt rendiment · Coprocessador de consum ultrabaix · Múltiples perifèrics
Amb tecnologia de 40 nm, ESP32 proporciona una plataforma robusta i altament integrada que ajuda a satisfer les demandes contínues d'ús eficient de l'energia, disseny compacte, seguretat, alt rendiment i fiabilitat. Espressif proporciona recursos bàsics de maquinari i programari per ajudar els desenvolupadors d'aplicacions a fer realitat les seves idees utilitzant el maquinari de la sèrie ESP32. El marc de desenvolupament de programari d'Espressif està pensat per al desenvolupament d'aplicacions de la Internet de les Coses (IoT) amb Wi-Fi, Bluetooth, gestió d'energia i diverses altres funcions del sistema.
1.2 El que necessites
1.2.1 Maquinari
· Una placa ESP32. · Cable USB – USB A / micro USB B. · Ordinador amb Windows, Linux o macOS.
Nota: Actualment, algunes de les plaques de desenvolupament utilitzen connectors USB tipus C. Assegureu-vos que teniu el cable correcte per connectar la placa!
Si teniu una de les plaques de desenvolupament oficials d'ESP32 que es mostren a continuació, podeu fer clic a l'enllaç per obtenir més informació sobre el maquinari.
3
Capítol 1. Començar
ESP32-DevKitS(-R)
Aquesta guia d'usuari proporciona informació sobre ESP32-DevKitS(-R), una placa intermitent basada en ESP32 produïda per Espressif. ESP32-DevKitS(-R) és una combinació de dos noms de placa: ESP32-DevKitS i ESP32-DevKitS-R. S significa molles i R significa WROVER.
Kits de desenvolupament ESP32
ESP32-DevKitS-R
El document consta de les següents seccions principals: · Introducció: Ofereix una visió generalview d'ESP32-DevKitS(-R) i instruccions de configuració del maquinari/programari per començar. · Referència de maquinari: Proporciona informació més detallada sobre el maquinari d'ESP32-DevKitS(-R)ns. · Documents relacionats: Proporciona enllaços a documentació relacionada.
Introducció Aquesta secció descriu com començar amb ESP32-DevKitS(-R). Comença amb unes quantes seccions introductòries sobre ESP32-DevKitS(-R) i, a continuació, la secció Com flashejar una placa proporciona instruccions sobre com muntar un mòdul a ESP32-DevKitS(-R), preparar-lo i flashejar-hi el firmware.
Acabatview ESP32-DevKitS(-R) és una placa de flasheig d'Espressifns dissenyada específicament per a ESP32. Es pot utilitzar per flashejar un mòdul ESP32 sense soldar-lo a la font d'alimentació i a les línies de senyal. Amb un mòdul muntat, ESP32-DevKitS(-R) també es pot utilitzar com a mini placa de desenvolupament com ESP32-DevKitC.
Les plaques ESP32-DevKitS i ESP32-DevKitS-R només varien en la disposició dels pins de ressort per adaptar-se als següents mòduls ESP32.
· Kits de desenvolupament 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 i IPEX) ESP32-WROVER-B (PCB i IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Per obtenir informació sobre els mòduls anteriors, consulteu els mòduls de la sèrie ESP32.
Descripció dels components
Sistemes Espressif
4 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 1: ESP32-DevKits – part frontal
Sistemes Espressif
Fig. 2: ESP32-DevKitS-R – frontal 5
Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Component clau: passadors de ressort de 2.54 mm, capçaleres femelles
Pont USB a UART Connector micro-USB LDO/Port micro-USB Botó EN Botó d'arrencada
LED d’encesa
Descripció Enganxeu el mòdul. Els pins encaixaran als forats acanalats del mòdul. Aquests capçaleres femella estan connectats als pins del mòdul muntat en aquesta placa. Per obtenir la descripció dels capçaleres femella, consulteu Blocs de capçalera. El pont USB a UART d'un sol xip proporciona velocitats de transferència de fins a 3 Mbps.
Volum de baixa caiguda de 5V a 3.3Vtagregulador e (LDO).
Interfície USB. Font d'alimentació per a la placa, així com la interfície de comunicació entre un ordinador i la placa.
Botó de restabliment.
Botó de descàrrega. Mantenint premuda la tecla d'arrencada i després prement EN s'inicia el mode de descàrrega de firmware per descarregar firmware a través del port sèrie.
S'encén quan l'USB o la font d'alimentació està connectat a la placa.
Com flashejar una placa Abans d'engegar el vostre ESP32-DevKitS(-R), assegureu-vos que estigui en bon estat i sense signes evidents de danys.
Maquinari necessari · Un mòdul ESP32 de la vostra elecció · Cable USB 2.0 (estàndard A a Micro B) · Ordinador amb Windows, Linux o macOS
Configuració del maquinari Si us plau, munteu un mòdul de la vostra elecció al vostre ESP32-DevKitS(-R) segons els passos següents:
· Col·loca amb cura el mòdul a la placa ESP32-DevKitS(-R). Assegura't que els forats alveolats del mòdul estiguin alineats amb els passadors de ressort de la placa.
· Premeu el mòdul cap avall contra la placa fins que faci clic. · Comproveu si tots els passadors de molla estan inserits als forats alveolats. Si hi ha alguns passadors de molla desalineats,
col·loqueu-les en forats alveolats amb unes pinces.
Configuració del programari
Mètode preferit El marc de desenvolupament ESP-IDF proporciona una manera preferida de flashejar binaris a ESP32-DevKitS(-R). Si us plau, aneu a Començar, on la secció Instal·lació us ajudarà ràpidament a configurar l'entorn de desenvolupament i després a flashejar un exemple d'aplicació.ample al vostre ESP32-DevKitS(-R).
Mètode alternatiu Com a alternativa, els usuaris de Windows poden flashejar els binaris mitjançant l'eina de descàrrega Flash. Només cal que la descarregueu, la descomprimiu i seguiu les instruccions de la carpeta doc.
Nota: 1. Per flashejar el binari files, l'ESP32 hauria d'estar configurat en mode de descàrrega de firmware. Això es pot fer mitjançant l'eina de flasheig automàticament o mantenint premut el botó d'arrencada i tocant el botó EN. 2. Després de flashejar el binari files, l'eina de descàrrega Flash reinicia el mòdul ESP32 i inicia l'aplicació flashejada per defecte.
Dimensions de la placa Contingut i embalatge
Sistemes Espressif
6 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Introducció Fig. 3: Dimensions de la placa ESP32-DevKitS – part posterior
Sistemes Espressif
Fig. 4: Dimensions de la placa ESP32-DevKitS-R – part posterior 7
Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Comandes al detall Si demaneu unes quantesamples, cada ESP32-DevKitS(-R) ve en un paquet individual, ja sigui en una bossa antiestàtica o en qualsevol embalatge, depenent del distribuïdor. Per a comandes al detall, visiteu https://www.espressif.com/en/contact-us/get-samples.
Comandes a l'engròs Si feu comandes a l'engròs, les plaques vénen en caixes de cartró grans. Per a comandes a l'engròs, visiteu https://www.espressif.com/en/contact-us/sales-questions.
Referència de maquinari
Diagrama de blocs Un diagrama de blocs a continuació mostra els components de l'ESP32-DevKitS(-R) i les seves interconnexions.
Fig. 5: ESP32-DevKitS(-R) (feu clic per ampliar)
Opcions de font d'alimentació Hi ha tres maneres mútuament excloents de proporcionar energia a la placa: · Port micro USB, font d'alimentació per defecte · Pins de capçalera de 5 V i GND · Pins de capçalera de 3 V i GND
Es recomana utilitzar la primera opció: port micro USB.
Sistemes Espressif
.
Etiqueta de senyal
L1 3V3 VDD 3V3
L2 EN CHIP_PU
SENSOR_VP de L3 VP
SENSOR_VN L4 VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
continua a la pàgina següent
8 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
La taula 1 continua de la pàgina anterior
.
Etiqueta de senyal
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 GND GND
L15 13
GPIO13
L16 D2 SD_DATA2
L17 D3 SD_DATA3
L18 CMD SD_CMD
L19 5V
5V extern
R1 GND GND
R2 23
GPIO23
R3 22
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21
GPIO21
R7 GND GND
R8 19
GPIO19
R9 18
GPIO18
R10 5
GPIO5
R11 17
GPIO17
R12 16
GPIO16
R13 4
GPIO4
R14 0
GPIO0
R15 2
GPIO2
R16 15
GPIO15
R17 D1 SD_DATA1
R18 D0 SD_DATA0
R19 CLK SD_CLK
Blocs de capçalera Per veure la imatge dels blocs de capçalera, consulteu la Descripció dels components.
Documents relacionats
· Esquema tècnic ESP32-DevKitS(-R) (PDF) · Fitxa tècnica ESP32 (PDF) · Fitxa tècnica ESP32-WROOM-32 (PDF) · Fitxa tècnica ESP32-WROOM-32D i ESP32-WROOM-32U (PDF) · Fitxa tècnica ESP32-SOLO-1 (PDF) · Fitxa tècnica ESP32-WROVER (PDF) · Fitxa tècnica ESP32-WROVER-B (PDF) · Selector de productes ESP
ESP32-DevKitM-1
Aquesta guia d'usuari us ajudarà a començar amb ESP32-DevKitM-1 i també us proporcionarà informació més detallada.
L'ESP32-DevKitM-1 és una placa de desenvolupament basada en l'ESP32-MINI-1(1U) produïda per Espressif. La majoria dels pins d'E/S estan desconnectats als connectors de pins a banda i banda per facilitar la interfície. Els usuaris poden connectar perifèrics amb cables de connexió o muntar l'ESP32-DevKitM-1 en una placa de proves.
Sistemes Espressif
9 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
ESP32-DevKitM-1 - frontal
ESP32-DevKitM-1 – isomètric
El document consta de les següents seccions principals: · Introducció: Ofereix una visió generalview de l'ESP32-DevKitM-1 i les instruccions de configuració del maquinari/programari per començar. · Referència de maquinari: Proporciona informació més detallada sobre el maquinari de l'ESP32-DevKitM-1ns. · Documents relacionats: Proporciona enllaços a documentació relacionada.
Introducció Aquesta secció descriu com començar amb ESP32-DevKitM-1. Comença amb unes quantes seccions introductòries sobre l'ESP32-DevKitM-1 i, a continuació, la secció Inici de desenvolupament d'aplicacions proporciona instruccions sobre com fer la configuració inicial del maquinari i, a continuació, com instal·lar el firmware a l'ESP32-DevKitM-1.
Acabatview Aquesta és una placa de desenvolupament petita i còmoda que inclou:
· Mòdul ESP32-MINI-1 o ESP32-MINI-1U · Interfície de programació USB-a-sèrie que també proporciona alimentació a la placa · Connectors de connexió · Botons per reiniciar i activar el mode de descàrrega de firmware · Alguns altres components
Continguts i embalatge
Comandes al detall Si demaneu unes quantesamples, cada ESP32-DevKitM-1 ve en un paquet individual, ja sigui en una bossa antiestàtica o en qualsevol embalatge, segons el vostre distribuïdor.
Per a comandes al detall, visiteu https://www.espressif.com/en/contact-us/get-samples.
Comandes a l'engròs Si feu comandes a l'engròs, les plaques vénen en caixes de cartró grans. Per a comandes a l'engròs, visiteu https://www.espressif.com/en/contact-us/sales-questions.
Descripció dels components La figura i la taula següents descriuen els components, les interfícies i els controls clau de la placa ESP32-DevKitM-1. Prenem la placa amb un mòdul ESP32-MINI-1 com a exemple.ample en els apartats següents.
Sistemes Espressif
10 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 6: ESP32-DevKitM-1 – frontal
Component clau Mòdul integrat
Botó d'arrencada LDO de 5 V a 3.3 V
Botó de restabliment Port micro-USB
Pont USB a UART de 3.3 V LED d'encesa
Connector d'E/S
Descripció
Mòdul ESP32-MINI-1 o mòdul ESP32-MINI-1U. L'ESP32-MINI-1 inclou una antena de PCB integrada. L'ESP32-MINI-1U inclou un connector d'antena extern. Els dos mòduls tenen un paquet de memòria flaix de 4 MB. Per a més informació, consulteu la fitxa tècnica d'ESP32-MINI-1 i ESP32-MINI-1U.
El regulador de potència converteix 5 V a 3.3 V.
Botó de descàrrega. Mantenint premut el botó d'arrencada i després prement Reinicia s'inicia el mode de descàrrega de firmware per descarregar firmware a través del port sèrie.
Botó de restabliment
Interfície USB. Font d'alimentació per a la placa, així com la interfície de comunicació entre un ordinador i el xip ESP32.
Un sol xip de pont USB-UART proporciona velocitats de transferència de fins a 3 Mbps.
S'encén quan l'USB està connectat a la placa. Per a més detalls, consulteu els esquemes als Documents relacionats. Tots els pins GPIO disponibles (excepte el bus SPI per a la memòria flaix) estan desglossats als connectors de pins de la placa. Els usuaris poden programar el xip ESP32 per habilitar múltiples funcions.
Inicieu el desenvolupament d'aplicacions Abans d'engegar l'ESP32-DevKitM-1, assegureu-vos que estigui en bon estat i sense signes evidents de danys.
Maquinari necessari · ESP32-DevKitM-1 · Cable USB 2.0 (estàndard A a Micro B) · Ordinador amb Windows, Linux o macOS
Configuració del programari Si us plau, aneu a Començar, on la secció Instal·lació us ajudarà ràpidament a configurar l'entorn de desenvolupament i, a continuació, a instal·lar un exemple d'aplicació.ample al vostre ESP32-DevKitM-1.
Sistemes Espressif
11 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Atenció: Les plaques ESP32-DevKitM-1 fabricades abans del 2 de desembre de 2021 tenen un mòdul de nucli únic instal·lat. Per verificar quin mòdul teniu, consulteu la informació de marcatge de mòduls a PCN-2021-021. Si la vostra placa té un mòdul de nucli únic instal·lat, activeu el mode de nucli únic (CONFIG_FREERTOS_UNICORE) a menuconfig abans de flashejar les vostres aplicacions.
Diagrama de blocs de referència del maquinari Un diagrama de blocs a continuació mostra els components de l'ESP32-DevKitM-1 i les seves interconnexions.
Figura 7: ESP32-DevKitM-1
Selecció de la font d'alimentació Hi ha tres maneres mútuament excloents de proporcionar energia a la placa: · Port micro USB, font d'alimentació per defecte · Pins de capçalera de 5V i GND · Pins de capçalera de 3V3 i GND
Avís: · L'alimentació s'ha de proporcionar mitjançant una i només una de les opcions anteriors; en cas contrari, la placa i/o la font d'alimentació es poden fer malbé. · Es recomana l'alimentació mitjançant un port micro USB.
Descripcions dels pins La taula següent proporciona el nom i la funció dels pins a banda i banda de la placa. Per a les configuracions dels pins perifèrics, consulteu la fitxa tècnica de l'ESP32.
No.
Nom
Tipus
1
GND
P
2
3V3
P
Funció Terra Font d'alimentació de 3.3 V
continua a la pàgina següent
Sistemes Espressif
12 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
La taula 2 continua de la pàgina anterior
No.
Nom
Tipus
Funció
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
RST
I
Restablir; Alt: activar; Baix: s'apaga
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
E/S
GPIO32, XTAL_32K_P (entrada d'oscil·lador de cristall de 32.768 kHz),
ADC1_CH4, TOUCH9, RTC_GPIO9
11
IO33
E/S
GPIO33, XTAL_32K_N (sortida d'oscil·lador de cristall de 32.768 kHz),
ADC1_CH5, TOUCH8, RTC_GPIO8
12
IO25
E/S
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
E/S
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
E/S
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
E/S
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
Font d'alimentació de 5 V
17
IO12
E/S
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
18
IO13
E/S
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
E/S
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
E/S
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
E/S
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
E/S
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
E/S
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
E/S
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
E/S
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
E/S
GPIO18, HS1_DATA7, VSPICLK
27
IO23
E/S
GPIO23, HS1_STROBE, VSPID
28
IO19
E/S
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
E/S
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
E/S
GPIO21, VSPIHD, EMAC_TX_EN
31
TXD0
E/S
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
E/S
GPIO3, U0RXD, CLK_OUT2
Detalls de la revisió del maquinari No hi ha versions anteriors disponibles.
Documents relacionats
· Fitxa tècnica de l'ESP32-MINI-1 i l'ESP32-MINI-1U (PDF) · Esquema tècnic de l'ESP32-DevKitM-1 (PDF) · Disseny de la placa de circuit imprès de l'ESP32-DevKitM-1 (PDF) · Disseny de l'ESP32-DevKitM-1 (DXF) – Podeu view amb Autodesk Viewen línia · Fitxa tècnica d'ESP32 (PDF) · Selector de productes ESP
Per a altra documentació de disseny de la placa, poseu-vos en contacte amb nosaltres a sales@espressif.com.
Sistemes Espressif
13 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
1.2.2 Programari
Per començar a utilitzar ESP-IDF en ESP32, instal·leu el programari següent: · Toolchain per compilar codi per a ESP32 · Eines de creació: CMake i Ninja per crear una aplicació completa per a ESP32 · ESP-IDF que essencialment conté l'API (biblioteques de programari i codi font) per a ESP32 i scripts per fer funcionar la Toolchain
1.3 Instal·lació
Per instal·lar tot el programari necessari, oferim diverses maneres de facilitar aquesta tasca. Trieu una de les opcions disponibles.
1.3.1 IDE
Nota: Us recomanem que instal·leu l'ESP-IDF a través del vostre IDE preferit.
· Complement d'Eclipse · Extensió VSCode
1.3.2 Instal·lació manual
Per al procediment manual, seleccioneu segons el vostre sistema operatiu.
Sistemes Espressif
14 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Configuració estàndard de Toolchain per a Windows
Introducció L'ESP-IDF requereix la instal·lació d'algunes eines prèvies per poder compilar firmware per als xips compatibles. Les eines prèvies inclouen Python, Git, compiladors creuats, eines de compilació CMake i Ninja. Per a aquest Introducció, utilitzarem la línia d'ordres, però després d'instal·lar l'ESP-IDF podeu utilitzar el complement Eclipse o un altre IDE gràfic compatible amb CMake. Nota: Limitacions: – La ruta d'instal·lació d'ESP-IDF i les eines ESP-IDF no ha de tenir més de 90 caràcters. Les rutes d'instal·lació massa llargues poden provocar un error de compilació. – La ruta d'instal·lació de Python o ESP-IDF no ha de contenir espais en blanc ni parèntesis. – La ruta d'instal·lació de Python o ESP-IDF no ha de contenir caràcters especials (no ASCII) tret que el sistema operatiu estigui configurat amb compatibilitat amb Unicode UTF-8. L'administrador del sistema pot habilitar la compatibilitat mitjançant el Tauler de control – Canvia els formats de data, hora o número – Pestanya Administrador – Canvia la configuració regional del sistema – marca l'opció o Beta: Utilitza Unicode UTF-8 per a la compatibilitat amb idiomes a tot el món – D'acord i reinicia l'ordinador.
Instal·lador d'eines ESP-IDF La manera més fàcil d'instal·lar els requisits previs d'ESP-IDFns és descarregar un dels instal·ladors d'eines ESP-IDF.
Descàrrega de l'instal·lador de Windows
Quin és el cas d'ús de l'instal·lador en línia i fora de línia? L'instal·lador en línia és molt petit i permet la instal·lació de totes les versions disponibles d'ESP-IDF. L'instal·lador només descarregarà les dependències necessàries, inclòs Git per a Windows, durant el procés d'instal·lació. L'instal·lador emmagatzema els fitxers descarregats. files al directori de memòria cau %userprofile%. espresso
L'instal·lador fora de línia no requereix cap connexió de xarxa. L'instal·lador conté totes les dependències necessàries, inclòs Git per a Windows.
Components de la instal·lació L'instal·lador desplega els components següents:
· Python incrustat · Compiladors creuats · OpenOCD · Eines de compilació CMake i Ninja · ESP-IDF
L'instal·lador també permet reutilitzar el directori existent amb ESP-IDF. El directori recomanat és %userprofile%Desktopesp-idf on %userprofile% és el vostre directori d'inici.
Sistemes Espressif
15 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Inici de l'entorn ESP-IDF Al final del procés d'instal·lació, podeu marcar l'opció Executar l'entorn ESP-IDF PowerShell o Executar l'indicador d'ordres ESP-IDF (cmd.exe). L'instal·lador iniciarà l'entorn ESP-IDF a l'indicador seleccionat. Executeu l'entorn ESP-IDF PowerShell:
Fig. 8: Completar l'assistent de configuració de les eines ESP-IDF amb Executar l'entorn PowerShell d'ESP-IDF
Executeu l'indicador d'ordres d'ESP-IDF (cmd.exe):
Ús de la línia d'ordres Per als passos d'introducció restants, farem servir la línia d'ordres de Windows. L'instal·lador d'eines ESP-IDF també crea una drecera al menú Inici per iniciar la línia d'ordres d'ESP-IDF. Aquesta drecera inicia la línia d'ordres (cmd.exe) i executa l'script export.bat per configurar les variables d'entorn (PATH, IDF_PATH i altres). Dins d'aquesta línia d'ordres, totes les eines instal·lades estan disponibles. Tingueu en compte que aquesta drecera és específica del directori ESP-IDF seleccionat a l'instal·lador d'eines ESP-IDF. Si teniu diversos directoris ESP-IDF a l'ordinador (per exemple,ampés a dir, per treballar amb diferents versions d'ESP-IDF), teniu dues opcions per utilitzar-les:
1. Creeu una còpia de la drecera creada per l'instal·lador d'eines ESP-IDF i canvieu el directori de treball de la nova drecera al directori ESP-IDF que voleu utilitzar.
2. Alternativament, executeu cmd.exe, després canvieu al directori ESP-IDF que voleu utilitzar i executeu export.bat. Tingueu en compte que, a diferència de l'opció anterior, aquesta manera requereix que Python i Git siguin presents a PATH. Si rebeu errors relacionats amb la incapacitat de trobar Python o Git, utilitzeu la primera opció.
Primers passos sobre ESP-IDF Ara que es compleixen tots els requisits, el següent tema us guiarà sobre com iniciar el vostre primer projecte.
Sistemes Espressif
16 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Introducció Fig. 9: PowerShell ESP-IDF
Fig. 10: Completar l'assistent de configuració de les eines ESP-IDF amb Executar línia d'ordres ESP-IDF (cmd.exe)
Sistemes Espressif
17 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 11: Indicador d'ordres ESP-IDF
Sistemes Espressif
18 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Aquesta guia us ajudarà en els primers passos utilitzant ESP-IDF. Seguiu aquesta guia per iniciar un nou projecte a l'ESP32 i compilar, flashejar i monitoritzar la sortida del dispositiu. Nota: Si encara no heu instal·lat ESP-IDF, aneu a Instal·lació i seguiu les instruccions per obtenir tot el programari necessari per utilitzar aquesta guia.
Inicia un projecte Ara ja esteu a punt per preparar la vostra aplicació per a ESP32. Podeu començar amb el projecte getstarted/hello_world des de l'exempleamples directori a ESP-IDF.
Important: El sistema de compilació ESP-IDF no admet espais a les rutes d'accés a ESP-IDF ni als projectes.
Copieu el projecte get-started/hello_world al directori ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhola_món hola_món
Nota: Hi ha una gamma d'exemplesample projectes a l'examples directori a ESP-IDF. Podeu copiar qualsevol projecte de la mateixa manera que s'ha presentat anteriorment i executar-lo. També és possible construir examples al seu lloc sense copiar-los primer.
Connecteu el vostre dispositiu Ara connecteu la placa ESP32 a l'ordinador i comproveu sota quin port sèrie és visible la placa. Els noms dels ports sèrie comencen per COM a Windows. Si no esteu segurs de com comprovar el nom del port sèrie, consulteu Establir connexió sèrie amb ESP32 per obtenir més informació.
Nota: Mantingueu el nom del port a mà, ja que el necessitareu als passos següents.
Configura el teu projecte Navega al directori hello_world, defineix ESP32 com a objectiu i executa la utilitat de configuració del projecte menuconfig.
CD de Windows %userprofile%esphello_world idf.py estableix l'objectiu esp32 idf.py menúconfig
Després d'obrir un projecte nou, primer heu de definir l'objectiu amb idf.py set-target esp32. Tingueu en compte que les compilacions i configuracions existents al projecte, si n'hi ha, s'esborraran i s'inicialitzaran en aquest procés. L'objectiu es pot desar a la variable d'entorn per ometre aquest pas. Vegeu Seleccioneu el xip de destinació: set-target per obtenir més informació. Si els passos anteriors s'han fet correctament, apareixerà el menú següent: Esteu utilitzant aquest menú per configurar variables específiques del projecte, per exemple, el nom i la contrasenya de la xarxa Wi-Fi, la velocitat del processador, etc. La configuració del projecte amb menuconfig es pot ometre per a ohello_wordp, ja que aquest example s'executa amb la configuració per defecte.
Atenció: Si feu servir la placa ESP32-DevKitC amb el mòdul ESP32-SOLO-1 o la placa ESP32-DevKitM-1 amb el mòdul ESP32-MIN1-1(1U), activeu el mode de nucli únic (CONFIG_FREERTOS_UNICORE) a menuconfig abans de flashejar ex.amples.
Sistemes Espressif
19 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 12: Configuració del projecte: finestra d'inici
Nota: Els colors del menú poden ser diferents al vostre terminal. Podeu canviar l'aspecte amb l'opció –style. Executeu idf.py menuconfig –help per obtenir més informació.
Si feu servir una de les plaques de desenvolupament compatibles, podeu accelerar el desenvolupament utilitzant el paquet de suport de plaques. Vegeu Consells addicionals per obtenir més informació.
Construeix el projecte Construeix el projecte executant:
compilació idf.py
Aquesta ordre compilarà l'aplicació i tots els components ESP-IDF, i després generarà el carregador d'arrencada, la taula de particions i els binaris de l'aplicació.
$ idf.py build Executant cmake al directori /path/to/hello_world/build Executant “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Avisa sobre valors no inicialitzats. — S'ha trobat Git: /usr/bin/git (versió “2.17.0” trobada) — Construint un component aws_iot buit a causa de la configuració — Noms dels components: … — Rutes dels components: …
… (més línies de sortida del sistema de compilació)
[527/527] Generant hello_world.bin esptool.py v2.3.1
Compilació del projecte completada. Per flashejar, executeu aquesta ordre: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin o executeu 'idf.py -p PORT flash'
Si no hi ha errors, la construcció finalitzarà generant el .bin binari del microprogramari files.
Sistemes Espressif
20 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Instal·leu al dispositiu Instal·leu els binaris que acabeu de crear (bootloader.bin, partition-table.bin i hello_world.bin) a la placa ESP32 executant: idf.py -p PORT [-b BAUD] flash
Substitueix PORT pel nom del port sèrie de la teva placa ESP32. També pots canviar la velocitat en bauds del flasher substituint BAUD per la velocitat en bauds que necessitis. La velocitat en bauds per defecte és de 460800. Per obtenir més informació sobre els arguments idf.py, consulta idf.py.
Nota: L'opció flash compila i flasheja automàticament el projecte, de manera que no cal executar idf.py build.
Heu trobat problemes durant el flasheig? Si executeu l'ordre donada i veieu errors com ara "Failed to connectp", hi pot haver diverses raons per a això. Una de les raons pot ser que es trobi amb esptool.py, la utilitat que crida el sistema de compilació per restablir el xip, interactuar amb el carregador d'arrencada de la ROM i flashejar el firmware. Una solució senzilla que podeu provar és el restabliment manual que es descriu a continuació, i si no us ajuda, podeu trobar més detalls sobre possibles problemes a la secció Resolució de problemes.
esptool.py reinicia l'ESP32 automàticament activant les línies de control DTR i RTS del xip convertidor USB a sèrie, és a dir, FTDI o CP210x (per a més informació, vegeu Establir connexió sèrie amb ESP32). Les línies de control DTR i RTS estan connectades als pins GPIO0 i CHIP_PU (EN) de l'ESP32, cosa que canvia el volum.tagEls nivells de DTR i RTS arrencaran l'ESP32 en mode de descàrrega de firmware. Com a exempleampés a dir, comproveu l'esquema de la placa de desenvolupament ESP32 DevKitC.
En general, no hauríeu de tenir problemes amb les plaques de desenvolupament oficials esp-idf. Tanmateix, esptool.py no pot restablir el maquinari automàticament en els casos següents:
· El vostre maquinari no té les línies DTR i RTS connectades a GPIO0 i CHIP_PU · Les línies DTR i RTS estan configurades de manera diferent · No hi ha cap línia de control sèrie d'aquest tipus
Depenent del tipus de maquinari que tingueu, també és possible posar manualment la placa ESP32 en mode de descàrrega de firmware (reinici).
· Per a les plaques de desenvolupament produïdes per Espressif, aquesta informació es pot trobar a les respectives guies d'inici o guies d'usuari. Per exempleampÉs a dir, per reiniciar manualment una placa de desenvolupament ESP-IDF, manteniu premut el botó d'arrencada (GPIO0) i premeu el botó EN (CHIP_PU).
· Per a altres tipus de maquinari, proveu de desactivar GPIO0.
Funcionament normal Quan parpelleja, veureu el registre de sortida similar al següent:
... 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 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Port sèrie /dev/ttyUSB0 Connectant…….._ El xip és ESP32D0WDQ6 (revisió 0) Característiques: WiFi, BT, Dual Core, Esquema de codificació Cap El cristall és de 40MHz MAC: 24:0a:c4:05:b9:14 Pujant l'stub... Executant l'stub... S'està executant l'stub... Canviant la velocitat en bauds a 460800 Canviat.
(continua a la pàgina següent)
Sistemes Espressif
21 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
(continuació de la pàgina anterior) Configuració de la mida de la memòria flaix... S'han comprimit 3072 bytes a 103... S'està escrivint a 0x00008000... (100 %) S'han escrit 3072 bytes (103 comprimits) a 0x00008000 en 0.0 segons (5962.8 kbit/s efectius)... Hash de dades verificat. S'han comprimit 26096 bytes a 15408... S'està escrivint a 0x00001000... (100 %) S'han escrit 26096 bytes (15408 comprimits) a 0x00001000 en 0.4 segons (546.7 kbit/s efectius)... Hash de dades verificat. S'han comprimit 147104 bytes a 77364... S'està escrivint a 0x00010000... (20 %) S'està escrivint a 0x00014000... (40 %) S'està escrivint a 0x00018000... (60 %) S'està escrivint a 0x0001c000... (80 %) S'està escrivint a 0x00020000... (100 %) S'han escrit 147104 bytes (77364 comprimits) a 0x00010000 en 1.9 segons (615,5 kbit/s efectius)... Hash de dades verificat.
Sortint... Restabliment dur mitjançant el pin RTS... Fet
Si no hi ha problemes al final del procés de flash, la placa es reiniciarà i iniciarà l'aplicació thehello_worldp. Si voleu utilitzar l'IDE Eclipse o VS Code en comptes d'executar idf.py, consulteu el complement Eclipse, l'extensió VSCode.
Monitoritzar la sortida Per comprovar si ohello_worldpis realment s'està executant, escriviu idf.py -p PORT monitor (No us oblideu de substituir PORT pel nom del vostre port sèrie).
Aquesta ordre llança l'aplicació IDF Monitor:
$ idf.py -p monitor Executant idf_monitor al directori […]/esp/hello_world/build Executant “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor activat 115200 —– Sortir: Ctrl+] | Menú: Ctrl+T | Ajuda: Ctrl+T seguit de Ctrl+H –ets 8 de juny de 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de juny de 2016 00:22:57 …
Després que els registres d'inici i diagnòstic es desplacin cap amunt, hauríeu de veure l'aplicació que ha imprès oHello world!p.
... Hola món! Reiniciant en 10 segons... Aquest és un xip esp32 amb 2 nuclis de CPU, WiFi/BT/BLE, revisió 1 de silici, memòria flaix externa de 2 MB Mida mínima de memòria dins del sistema: 298968 bytes Reiniciant en 9 segons... Reiniciant en 8 segons... Reiniciant en 7 segons...
Per sortir del monitor IDF, utilitzeu la drecera Ctrl+].
Sistemes Espressif
22 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Si el monitor IDF falla poc després de la càrrega, o si, en comptes dels missatges anteriors, veieu errors aleatoris similars als que es mostren a continuació, és probable que la placa utilitzi un cristall de 26 MHz. La majoria de dissenys de plaques de desenvolupament utilitzen 40 MHz, de manera que l'ESP-IDF utilitza aquesta freqüència com a valor per defecte.
Si teniu aquest problema, feu el següent: 1. Sortiu del monitor. 2. Torneu a menuconfig. 3. Aneu a Configuració de components > Configuració de maquinari > Configuració XTAL principal > Freqüència XTAL principal i, a continuació, canvieu CONFIG_XTAL_FREQ_SEL a 26 MHz. 4. Després d'això, torneu a compilar i flashejar l'aplicació.
A la versió actual d'ESP-IDF, les principals freqüències XTAL compatibles amb ESP32 són les següents:
· 26 MHz · 40 MHz
Nota: Podeu combinar la compilació, el flasheig i la monitorització en un sol pas executant: idf.py -p PORT flash monitor
Vegeu també: · Monitor IDF per a dreceres pràctiques i més detalls sobre l'ús del monitor IDF. · idf.py per a una referència completa de les ordres i opcions d'idf.py.
Això és tot el que necessites per començar amb ESP32! Ara ja estàs a punt per provar altres exemples.amples, o passar directament a desenvolupar les vostres pròpies aplicacions.
Important: Alguns dels exampEls fitxers no admeten ESP32 perquè el maquinari necessari no està inclòs a l'ESP32, de manera que no es pot suportar. Si es crea un exampSi us plau, reviseu el fitxer README. file per a la taula Objectius compatibles. Si això és present, inclòs l'objectiu ESP32, o la taula no existeix en absolut, l'exampFuncionarà amb ESP32.
Consells addicionals
Problemes de permisos /dev/ttyUSB0 Amb algunes distribucions de Linux, és possible que rebeu el missatge d'error Error en obrir el port /dev/ttyUSB0 en flashejar l'ESP32. Això es pot solucionar afegint l'usuari actual al grup de sortida telefònica.
Compatibilitat amb Python ESP-IDF admet Python 3.7 o posterior. Es recomana actualitzar el sistema operatiu a una versió recent que compleixi aquest requisit. Altres opcions inclouen la instal·lació de Python des dels codis font o l'ús d'un sistema de gestió de versions de Python com ara pyenv.
Comenceu amb el paquet de suport de placa Per accelerar la creació de prototips en algunes plaques de desenvolupament, podeu utilitzar els paquets de suport de placa (BSP), que fan que la inicialització d'una placa en particular sigui tan fàcil com unes poques crides de funció.
Sistemes Espressif
23 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Un BSP normalment admet tots els components de maquinari proporcionats a la placa de desenvolupament. A part de la definició del pinout i les funcions d'inicialització, un BSP inclou controladors per als components externs com ara sensors, pantalles, còdecs d'àudio, etc. Els BSP es distribueixen a través del Gestor de components d'IDF, de manera que es poden trobar al Registre de components d'IDF. Aquí teniu un exemple.ampIlustració de com afegir ESP-WROVER-KIT BSP al vostre projecte: idf.py add-dependency esp_wrover_kit
Més exampLes dades d'ús de BSP es poden trobar a l'exemple de BSP.amples carpeta.
Documents relacionats Per a usuaris avançats que vulguin personalitzar el procés d'instal·lació: · Actualització de les eines ESP-IDF a Windows · Establir una connexió sèrie amb ESP32 · Complement d'Eclipse · Extensió VSCode · Monitor IDF
Actualització de les eines ESP-IDF a Windows
Instal·leu les eines ESP-IDF mitjançant un script Des de la línia d'ordres de Windows, aneu al directori on està instal·lat ESPIDF. A continuació, executeu:
install.bat
Per a Powershell, canvieu al directori on està instal·lat ESP-IDF. A continuació, executeu:
instal·lació.ps1
Això descarregarà i instal·larà les eines necessàries per utilitzar ESP-IDF. Si la versió específica de l'eina ja està instal·lada, no es durà a terme cap acció. Les eines es descarreguen i s'instal·len en un directori especificat durant el procés d'instal·lació d'eines ESP-IDF. Per defecte, aquest és C:Nomd'usuarid'usuari.espressif.
Afegiu les eines ESP-IDF a PATH mitjançant un script d'exportació. L'instal·lador d'eines ESP-IDF crea una drecera al menú Inici per a l'indicador d'ordres d'ESP-IDF. Aquesta drecera obre una finestra de l'indicador d'ordres on ja hi ha totes les eines.
disponible. En alguns casos, és possible que vulgueu treballar amb ESP-IDF en una finestra de la línia d'ordres que no s'ha iniciat amb aquesta drecera. Si aquest és el cas, seguiu les instruccions següents per afegir les eines ESP-IDF a PATH. A la línia d'ordres on heu d'utilitzar ESP-IDF, canvieu al directori on està instal·lat ESP-IDF i, a continuació, executeu export.bat:
cd %userprofile%espesp-idf export.bat
Alternativament, al Powershell on necessiteu utilitzar ESP-IDF, canvieu al directori on està instal·lat ESP-IDF i executeu export.ps1:
cd ~/esp/esp-idf export.ps1
Quan això estigui fet, les eines estaran disponibles en aquesta línia d'ordres.
Establir una connexió sèrie amb l'ESP32 Aquesta secció proporciona orientació sobre com establir una connexió sèrie entre l'ESP32 i el PC.
Sistemes Espressif
24 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Connecteu l'ESP32 al PC Connecteu la placa ESP32 al PC amb el cable USB. Si el controlador del dispositiu no s'instal·la automàticament, identifiqueu el xip del convertidor USB a sèrie a la placa ESP32 (o al dongle del convertidor extern), cerqueu controladors a Internet i instal·leu-los. A continuació es mostra la llista dels xips del convertidor USB a sèrie instal·lats a la majoria de les plaques ESP32 produïdes per Espressif juntament amb enllaços als controladors:
· CP210x: Controladors VCP del pont USB a UART del CP210x · FTDI: Controladors de port COM virtual FTDI Consulteu la guia de l'usuari de la placa per conèixer el xip convertidor USB a sèrie específic que s'utilitza. Els controladors anteriors són principalment de referència. En circumstàncies normals, els controladors s'haurien d'incloure amb un sistema operatiu i s'haurien d'instal·lar automàticament en connectar la placa al PC.
Comproveu el port a Windows. Comproveu la llista de ports COM identificats al Gestor de dispositius de Windows. Desconnecteu l'ESP32 i torneu-lo a connectar per verificar quin port desapareix de la llista i torna a aparèixer. Les figures següents mostren el port sèrie per a ESP32 DevKitC i ESP32 WROVER KIT.
Fig. 13: Pont USB a UART de l'ESP32-DevKitC al Gestor de dispositius de Windows
Comprovació del port a Linux i macOS Per comprovar el nom del dispositiu per al port sèrie de la placa ESP32 (o dongle del convertidor extern), executeu aquesta ordre dues vegades, primer amb la placa/dongle desconnectat i després amb connectat. El port que apareix la segona vegada és el que necessiteu: Linux
ls /dev/tty*
macOS
Sistemes Espressif
25 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 14: Dos ports sèrie USB de l'ESP-WROVER-KIT al Gestor de dispositius de Windows
Sistemes Espressif
26 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
ls /dev/cu.* Nota: Usuaris de macOS: si no veieu el port sèrie, comproveu que teniu instal·lats els controladors USB/serial. Vegeu la secció Connectar ESP32 al PC per obtenir enllaços als controladors. Per a macOS High Sierra (10.13), també és possible que hàgiu de permetre explícitament que es carreguin els controladors. Obriu Preferències del sistema -> Seguretat i privadesa -> General i comproveu si hi ha un missatge sobre oSystem Software del desenvolupador lp on el nom del desenvolupador és Silicon Labs o FTDI.
Afegir un usuari al grup de sortida telefònica a Linux L'usuari que ha iniciat sessió actualment hauria de tenir accés de lectura i escriptura al port sèrie a través d'USB. A la majoria de distribucions de Linux, això es fa afegint l'usuari al grup de sortida telefònica amb l'ordre següent:
sudo usermod -a -G dialout $USER
a Arch Linux això es fa afegint l'usuari al grup uucp amb l'ordre següent:
sudo usermod -a -G uucp $USER
Assegureu-vos de tornar a iniciar sessió per habilitar els permisos de lectura i escriptura per al port sèrie.
Verifiqueu la connexió sèrie Ara verifiqueu que la connexió sèrie funciona correctament. Podeu fer-ho mitjançant un programa de terminal sèrie comprovant si obteniu alguna sortida al terminal després de reiniciar l'ESP32. La velocitat de transmissió per defecte de la consola a l'ESP32 és de 115200.
Windows i Linux en aquest exempleampPer exemple, utilitzarem el client PuTTY SSH que està disponible tant per a Windows com per a Linux. Podeu utilitzar altres programes sèrie i definir paràmetres de comunicació com es mostra a continuació. Executeu el terminal i definiu el port sèrie identificat. Velocitat en bauds = 115200 (si cal, canvieu-la a la velocitat en bauds predeterminada del xip en ús), bits de dades = 8, bits d'aturada = 1 i paritat = N. A continuació es mostren exemples.ampCaptures de pantalla de la configuració del port i aquests paràmetres de transmissió (descrits abreujadament com a 115200-8-1-N) a Windows i Linux. Recordeu seleccionar exactament el mateix port sèrie que heu identificat als passos anteriors. A continuació, obriu el port sèrie al terminal i comproveu si veieu algun registre imprès per ESP32. El contingut del registre dependrà de l'aplicació carregada a ESP32, vegeu Ex.ampla sortida.
Nota: Tanqueu el terminal sèrie després de verificar que la comunicació funciona. Si manteniu la sessió del terminal oberta, el port sèrie serà inaccessible per carregar el firmware més tard.
macOS Per estalviar-vos la molèstia d'instal·lar un programa de terminal sèrie, macOS ofereix l'ordre screen. · Tal com s'ha comentat a Comprova el port a Linux i macOS, executeu:
ls /dev/cu.* · Hauries de veure una sortida similar:
/dev/cu.Port-d'entrada-Bluetooth /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· La sortida variarà segons el tipus i el nombre de plaques connectades al vostre PC. A continuació, trieu el nom del dispositiu de la vostra placa i executeu (si cal, canvieu o115200 a la velocitat de bauds predeterminada del xip que esteu utilitzant):
screen /dev/cu.device_name 115200 Substitueix device_name pel nom que es troba en executar ls /dev/cu.*.
Sistemes Espressif
27 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 15: Configuració de la comunicació sèrie al PuTTY a Windows
Sistemes Espressif
28 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Fig. 16: Configuració de la comunicació sèrie al PuTTY a Linux
Sistemes Espressif
29 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
· El que busqueu és un registre que es mostri a la pantalla. El contingut del registre dependrà de l'aplicació carregada a ESP32, vegeu Ex.ampSortida. Per sortir de la sessió de pantalla, escriviu Ctrl-A + .
Nota: No us oblideu de sortir de la sessió de pantalla després de verificar que la comunicació funciona. Si no ho feu i només tanqueu la finestra del terminal, el port sèrie serà inaccessible per carregar el firmware més tard.
ExampSortida Un exempleampEl registre es mostra a continuació. Reinicieu la placa si no veieu res. ets 8 de juny de 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de juny de 2016 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 carregador d'arrencada I (45) arrencada: temps de compilació 18:48:10
…
Si podeu veure la sortida del registre llegible, vol dir que la connexió sèrie funciona i que esteu a punt per continuar amb la instal·lació i finalment carregar l'aplicació a ESP32.
Nota: Per a algunes configuracions de cablejat del port sèrie, cal desactivar els pins sèrie RTS i DTR al programa del terminal abans que l'ESP32 s'iniciï i produeixi una sortida sèrie. Això depèn del maquinari en si; la majoria de plaques de desenvolupament (incloses totes les plaques Espressif) no tenen aquest problema. El problema es presenta si RTS i DTR es connecten directament als pins EN i GPIO0. Consulteu la documentació d'esptool per obtenir més detalls.
Si heu arribat aquí des del pas 5. Primers passos sobre ESP-IDF en instal·lar programari per al desenvolupament d'ESP32, podeu continuar amb el pas 5. Primers passos sobre ESP-IDF.
IDF Monitor IDF Monitor és principalment un programa de terminal sèrie que retransmet dades sèrie cap al port sèrie del dispositiu de destinació i des d'aquest. També proporciona algunes funcions específiques d'IDF. IDF Monitor es pot iniciar des d'un projecte IDF executant idf.py monitor.
Dreceres de teclat Per a una interacció fàcil amb IDF Monitor, feu servir les dreceres de teclat que es mostren a la taula.
Sistemes Espressif
30 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Drecera de teclat Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (o A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (o I)
· Ctrl+H (o H)
· Ctrl+X (o X)
Ctrl+C
Acció
Descripció
Sortir del programa Tecla d'escapada del menú Enviar el caràcter del menú al comandament a distància
Envia el caràcter de sortida al control remot
Restableix l'objectiu al carregador d'arrencada per pausar l'aplicació mitjançant la línia RTS
Reinicia el tauler de diana via RTS
Construeix i flasheja el projecte
Només compila i flasheja l'aplicació
Atura/reprèn la impressió de la sortida del registre a la pantalla
Atura/reprèn la sortida del registre desada a file
Temps d'aturada/represaamps
impressió
Mostra totes les tecles de drecera
Premeu i seguiu-la amb una de les tecles que s'indiquen a continuació.
Reinicia la placa de destinació, al carregador d'arrencada a través de la línia RTS (si està connectada), de manera que la placa no executa res. Útil quan cal esperar que s'iniciï un altre dispositiu. Reinicia la placa de destinació i reinicia l'aplicació a través de la línia RTS (si està connectada).
Posa en pausa idf_monitor per executar la destinació flash del projecte i després el reprèn. Qualsevol font modificada. fileEls s es recompilen i després es tornen a flashejar. L'objectiu encrypted-flash s'executa si idf_monitor s'ha iniciat amb l'argument -E. Posa en pausa idf_monitor per executar l'objectiu app-flash i després el reprèn idf_monitor. Similar a l'objectiu flash, però només es compila i es torna a flashejar l'aplicació principal. L'objectiu encrypted-app-flash s'executa si idf_monitor s'ha iniciat amb l'argument -E. Descarta totes les dades sèrie entrants mentre està activat. Permet pausar i examinar ràpidament la sortida del registre sense tancar el monitor. Crea un file al directori del projecte i la sortida s'hi escriu file fins que això es desactivi amb la mateixa drecera de teclat (o IDF Monitor es tanqui). IDF Monitor pot imprimir un tempsamp al principi de cada línia. El més momentamp el format es pot canviar segons el temps més ajustat.amp-format argument de la línia d'ordres.
Sortiu del programa
Interrompre l'aplicació en execució
Posa en pausa el monitor IDF i executa el depurador del projecte GDB per depurar l'aplicació en temps d'execució. Això requereix que l'opció :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME estigui habilitada.
Qualsevol tecla premuda, excepte Ctrl-] i Ctrl-T, s'enviarà a través del port sèrie.
Característiques específiques de l'IDF
Descodificació automàtica d'adreces Sempre que ESP-IDF genera una adreça de codi hexadecimal del format 0x4_______, IDF Monitor utilitza addr2line_ per cercar la ubicació al codi font i trobar el nom de la funció.
Si una aplicació ESP-IDF falla i entra en pànic, es genera un abocament de registre i un backtrace, com ara el següent:
Sistemes Espressif
31 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
S'ha produït un error de meditació del gurú de tipus StoreProhibited al nucli 0. L'excepció era
sense gestionar.
Abocament de registre:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0 x 00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 EXCAUSA:
0x0000001d
EXCVADR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0 x 00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor afegeix més detalls al dump:
S'ha produït un error de meditació del gurú de tipus StoreProhibited al nucli 0. L'excepció era
sense gestionar.
Abocament de registre:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: fes_alguna_cosa_per_fallar a /home/gus/esp/32/idf/examples/començar/
hola_món/main/./hello_world_main.c:57
(inline per) inner_dont_crash a /home/gus/esp/32/idf/examples/començar/hola_
món/principal/./hola_món_main.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0 x 00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 EXCAUSA:
0x0000001d
EXCVADR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0 x 00000000
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 (inlined by) inner_dont_crash a /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash a /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash a /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main a /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task a /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Per descodificar cada adreça, IDF Monitor executa l'ordre següent en segon pla: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Nota: Establiu la variable d'entorn ESP_MONITOR_DECODE a 0 o crideu idf_monitor.py amb una línia d'ordres específica.
Sistemes Espressif
32 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
opció: idf_monitor.py –disable-address-decoding per desactivar la descodificació d'adreces.
Restabliment de l'objectiu en connectar-se Per defecte, IDF Monitor restablirà l'objectiu en connectar-s'hi. El restabliment del xip de l'objectiu es realitza mitjançant les línies sèrie DTR i RTS. Per evitar que IDF Monitor restableixi automàticament l'objectiu en connectar-se, crideu IDF Monitor amb l'opció –no-reset (per exemple, idf_monitor.py –no-reset).
Nota: L'opció –no-reset aplica el mateix comportament fins i tot quan es connecta IDF Monitor a un port concret (per exemple, idf.py monitor –no-reset -p [PORT]).
Inici de GDB amb GDBStub GDBStub és una funció útil de depuració en temps d'execució que s'executa a la destinació i es connecta a l'amfitrió a través del port sèrie per rebre ordres de depuració. GDBStub admet ordres com ara llegir memòria i variables, examinar marcs de pila de crides, etc. Tot i que GDBStub és menys versàtil que JTAG depuració, no requereix cap maquinari especial (com ara un JTAG al pont USB) ja que la comunicació es fa completament a través del port sèrie. Es pot configurar un objectiu per executar GDBStub en segon pla establint CONFIG_ESP_SYSTEM_PANIC a GDBStub en temps d'execució. GDBStub s'executarà en segon pla fins que s'enviï un missatge Ctrl+C a través del port sèrie i faci que GDBStub trenqui (és a dir, aturi l'execució) del programa, permetent així que GDBStub gestioni les ordres de depuració. A més, es pot configurar el controlador de pànic per executar GDBStub en cas de fallada establint CONFIG_ESP_SYSTEM_PANIC a GDBStub en cas de pànic. Quan es produeix una fallada, GDBStub generarà un patró de cadena especial a través del port sèrie per indicar que s'està executant. En ambdós casos (és a dir, enviant el missatge Ctrl+C o rebent el patró de cadena especial), IDF Monitor iniciarà automàticament GDB per permetre a l'usuari enviar ordres de depuració. Després que GDB surti, l'objectiu es reinicia a través de la línia sèrie RTS. Si aquesta línia no està connectada, els usuaris poden restablir el seu objectiu (prement el botó Restablir de la placa).
Nota: En segon pla, IDF Monitor executa l'ordre següent per iniciar GDB:
xtensa-esp32-elf-gdb -ex “defineix la velocitat de transmissió en sèrie BAUD” -ex “port remot de destinació” -ex interrupció build/PROJECT.elf :idf_target:`Hola NOM xip`
Filtratge de sortida El monitor IDF es pot invocar com a idf.py monitor –print-filter=”xyz”, on –print-filter és el paràmetre per al filtratge de sortida. El valor per defecte és una cadena buida, cosa que significa que s'imprimeix tot.
Les restriccions sobre què imprimir es poden especificar com una sèrie detag>: elements ontag> és el tag corda i és un caràcter del conjunt {N, E, W, I, D, V, *} que fa referència a un nivell per al registre.
Per example, PRINT_FILTER="tag1:W” coincideix i imprimeix només les sortides escrites amb ESP_LOGW(“tag1”, …) o a un nivell de verbositat inferior, és a dir, ESP_LOGE(“tag1″, …). No especificant un o si s'utilitza *, es fixa per defecte al nivell Detallat.
Nota: Feu servir el registre primari per desactivar durant la compilació les sortides que no necessiteu a través de la biblioteca de registre. El filtratge de sortides amb el monitor IDF és una solució secundària que pot ser útil per ajustar les opcions de filtratge sense haver de tornar a compilar l'aplicació.
La teva aplicació tags no ha de contenir espais, asteriscs * ni dos punts : per ser compatible amb la funció de filtratge de sortida.
Si l'última línia de la sortida de l'aplicació no va seguida d'un retorn de carro, el filtratge de sortida es pot confondre, és a dir, el monitor comença a imprimir la línia i més tard descobreix que la línia no s'hauria d'haver escrit. Aquest és un problema conegut i es pot evitar afegint sempre un retorn de carro (sobretot quan no hi ha cap sortida immediatament després).
Sistemes Espressif
33 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Examples regles de filtratge:
· * es pot utilitzar per combinar amb qualsevol tags. Tanmateix, la cadena PRINT_FILTER=”*:I tag1:E” pel que fa a tag1 només imprimeix errors, perquè la regla per a tag1 té una prioritat més alta que la regla per a *.
· La regla per defecte (buida) és equivalent a *:V perquè coincideix amb cada tag al nivell Verbose o inferior vol dir que coincideix amb tot.
· «*:N» suprimeix no només les sortides de les funcions de registre, sinó també les impressions fetes per printf, etc. Per evitar-ho, utilitzeu *:E o un nivell de verbositat més alt.
· Normes “tag1:V”, “tag1:v”, “tag1:”, “tag1:*”, i “tag1” són equivalents. · Regla “tag1:W tag1:E” és equivalent a “tag1:E” perquè qualsevol ocurrència consegüent del mateix tag
el nom sobreescriu l'anterior. · Regla “tag1: I tagNomés s'imprimeix 2:W tag1 al nivell de verbositat d'informació o inferior i tag2 a l'avís
nivell de verbositat o inferior. · Regla “tag1: I tag2:W tag3:N” és essencialment equivalent a l'anterior perquè tag3:N especifica
això tagNo s'ha d'imprimir el número 3. tag3:N a la regla “tag1: I tag2:W tag3:N *:V” té més sentit perquè sense tag3:N el
tagEs podrien haver imprès 3 missatges; els errors per a tag1 i tag2 s'imprimirà al nivell de verbositat especificat (o inferior) i tota la resta s'imprimirà per defecte.
Un exemple de filtratge més complexampEl següent fragment de registre s'ha adquirit sense cap opció de filtratge:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: la imatge a 0x30000 té un byte màgic no vàlid W (31) esp_image: la imatge a 0x30000 té un mode SPI no vàlid 255 E (39) boot: la partició de l'aplicació de fàbrica no és arrencable I (568) cpu_start: CPU Pro activada. I (569) heap_init: Inicialitzant. RAM disponible per a l'assignació dinàmica: I (603) cpu_start: Codi d'usuari d'inici de la CPU Pro D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range s'ha executat correctament per a un rang <54; 64) i VFS ID 1 I (328) wifi: tasca del controlador wifi: 3ffdbf84, prio:23, pila:4096, nucli=0
La sortida capturada per a les opcions de filtratge PRINT_FILTER=”wifi esp_image:E light_driver:I” es mostra a continuació:
E (31) esp_image: la imatge a 0x30000 té un byte màgic no vàlid I (328) wifi: tasca del controlador wifi: 3ffdbf84, prio:23, pila:4096, nucli=0
Les opcions “PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" mostren la sortida següent:
càrrega: 0x40078000, len: 13564 entrada 0x40078d4c I (569) heap_init: Inicialitzant. RAM disponible per a assignació dinàmica: D (309) light_driver: [light_init, 74]: estat: 1, mode: 2
Problemes coneguts amb el monitor IDF
Problemes observats a Windows
· Les tecles de fletxa, així com algunes altres tecles, no funcionen a GDB a causa de les limitacions de la consola de Windows. · De vegades, quan oidf.pypex surt, es pot aturar fins a 30 segons abans que el monitor IDF es reprengui. · Quan ogdbpis s'executa, es pot aturar durant un curt període de temps abans de començar a comunicar-se amb el GDBStub.
Sistemes Espressif
34 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Introducció Configuració estàndard de la cadena d'eines per a Linux i macOS
Instal·lació pas a pas Aquesta és una guia detallada que us guiarà pel procés d'instal·lació.
Configuració de l'entorn de desenvolupament Aquests són els passos per configurar l'ESP-IDF per al vostre ESP32. · Pas 1. Requisits previs d'instal·lació · Pas 2. Obtenir ESP-IDF · Pas 3. Configurar les eines · Pas 4. Configurar les variables d'entorn · Pas 5. Primers passos sobre ESP-IDF
Pas 1. Requisits previs d'instal·lació Per utilitzar ESP-IDF amb l'ESP32, cal instal·lar alguns paquets de programari basats en el sistema operatiu. Aquesta guia de configuració us ajudarà a instal·lar-ho tot en sistemes basats en Linux i macOS.
Per a usuaris de Linux Per compilar amb ESP-IDF, necessitareu els paquets següents. L'ordre a executar depèn de la distribució de Linux que utilitzeu:
· Ubuntu i 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 i 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 encara és compatible, però es recomana la versió 8 de CentOS per a una millor experiència d'usuari. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Nota: · Cal la versió 3.16 o posterior de CMake per utilitzar-lo amb ESP-IDF. Executeu otools/idf_tools.py install cmakepto per instal·lar una versió adequada si les versions del vostre sistema operatiu no en tenen una. · Si no veieu la vostra distribució de Linux a la llista anterior, consulteu la seva documentació per saber quina ordre heu d'utilitzar per a la instal·lació del paquet.
Per a usuaris de macOS, ESP-IDF utilitzarà la versió de Python instal·lada per defecte a macOS. · Instal·leu CMake i Ninja build: Si teniu HomeBrew, podeu executar: brew install cmake ninja dfu-util Si teniu MacPorts, podeu executar: sudo port install cmake ninja dfu-util Si no, consulteu les pàgines d'inici de CMake i Ninja per a les descàrregues d'instal·lació de macOS.
Sistemes Espressif
35 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
· Es recomana fermament instal·lar també ccache per a compilacions més ràpides. Si teniu HomeBrew, això es pot fer mitjançant brew install ccache o sudo port install ccache a MacPorts.
Nota: Si es mostra un error com aquest durant qualsevol pas: xcrun: error: ruta de desenvolupament activa no vàlida (/Library/Developer/CommandLineTools), falta xcrun a: /Library/Developer/CommandLineTools/usr/bin/xcrun
Aleshores, haureu d'instal·lar les eines de línia d'ordres de XCode per continuar. Podeu instal·lar-les executant xcode-select –install.
Usuaris d'Apple M1 Si feu servir la plataforma Apple M1 i veieu un error com aquest: AVÍS: hi ha el directori de l'eina xtensa-esp32-elf versió esp-2021r2-patch3-8.4.0, però no s'ha trobat l'eina ERROR: l'eina xtensa-esp32-elf no té cap versió instal·lada. Executeu "install.sh" per instal·lar-la.
o: zsh: tipus de CPU incorrecte a l'executable: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
A continuació, haureu d'instal·lar Apple Rosetta 2 executant /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Instal·lació de Python 3 Segons les notes de la versió de macOS Catalina 10.15, no es recomana l'ús de Python 2.7 i Python 2.7 no s'inclourà per defecte a les futures versions de macOS. Comproveu quin Python teniu actualment: python –version
Si la sortida és com Python 2.7.17, el vostre intèrpret per defecte és Python 2.7. Si és així, comproveu també si Python 3 no està instal·lat a l'ordinador: python3 –version
Si l'ordre anterior retorna un error, vol dir que Python 3 no està instal·lat. A continuació es mostra una imatge superiorview dels passos per instal·lar Python 3.
· La instal·lació amb HomeBrew es pot fer de la següent manera: brew install python3
· Si teniu MacPorts, podeu executar: sudo port install python38
Pas 2. Obtenir ESP-IDF Per crear aplicacions per a l'ESP32, necessiteu les biblioteques de programari proporcionades per Espressif al repositori ESP-IDF. Per obtenir ESP-IDF, navegueu fins al directori d'instal·lació i cloneu el repositori amb git clone, seguint les instruccions següents específiques per al vostre sistema operatiu. Obriu el Terminal i executeu les ordres següents:
Sistemes Espressif
36 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF es baixarà a ~/esp/esp-idf. Consulteu les versions d'ESP-IDF per obtenir informació sobre quina versió d'ESP-IDF cal utilitzar en una situació determinada.
Pas 3. Configuració de les eines A part de l'ESP-IDF, també cal instal·lar les eines que utilitza l'ESP-IDF, com ara el compilador, el depurador, els paquets Python, etc., per a projectes compatibles amb ESP32. cd ~/esp/esp-idf ./install.sh esp32
o amb el CD de Fish shell ~/esp/esp-idf ./install.fish esp32
Les ordres anteriors instal·len eines només per a ESP32. Si teniu la intenció de desenvolupar projectes per a més objectius de xip, hauríeu de llistar-los tots i executar-los per exemple.ampfitxer: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
o amb el CD de Fish shell ~/esp/esp-idf ./install.fish esp32,esp32s2
Per instal·lar eines per a tots els objectius compatibles, executeu l'ordre següent: cd ~/esp/esp-idf ./install.sh all
o amb el CD de Fish shell ~/esp/esp-idf ./install.fish all
Nota: Per als usuaris de macOS, si es mostra un error com aquest durant qualsevol pas:urlerror d'obertura [SSL: CERTIFICATE_VERIFY_FAILED] ha fallat la verificació del certificat: no s'ha pogut obtenir el certificat de l'emissor local (_ssl.c:xxx)
Podeu executar l'ordre Install Certificates.a la carpeta Python de l'ordinador per instal·lar certificats. Per obtenir més informació, consulteu Error de descàrrega en instal·lar les eines ESP-IDF.
Alternativa File Descàrregues L'instal·lador d'eines descarrega diverses files'adjunta a GitHub Releases. Si l'accés a GitHub és lent, és possible definir una variable d'entorn per preferir el servidor de baixades d'Espressifns per a les baixades de recursos de GitHub.
Nota: Aquesta configuració només controla les eines individuals descarregades de les versions de GitHub, no canvia el URLs'utilitza per accedir a qualsevol repositori de Git.
Per preferir el servidor de descàrregues d'Espressif a l'hora d'instal·lar eines, feu servir la seqüència d'ordres següent quan executeu install.sh:
Sistemes Espressif
37 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Personalització de la ruta d'instal·lació de les eines Els scripts introduïts en aquest pas instal·len les eines de compilació requerides per ESP-IDF dins del directori d'inici de l'usuari: $HOME/.espressif a Linux. Si voleu instal·lar les eines en un directori diferent, definiu la variable d'entorn IDF_TOOLS_PATH abans d'executar els scripts d'instal·lació. Assegureu-vos que el vostre compte d'usuari tingui prou permisos per llegir i escriure en aquesta ruta. Si canvieu IDF_TOOLS_PATH, assegureu-vos que estigui definit al mateix valor cada vegada que s'executin l'script d'instal·lació (install.bat, install.ps1 o install.sh) i un script d'exportació (export.bat, export.ps1 o export.sh).
Pas 4. Configureu les variables d'entorn Les eines instal·lades encara no s'han afegit a la variable d'entorn PATH. Perquè les eines es puguin utilitzar des de la línia d'ordres, cal definir algunes variables d'entorn. ESP-IDF proporciona un altre script que fa això. Al terminal on utilitzareu ESP-IDF, executeu:
. $HOME/esp/esp-idf/export.sh
o per a peixos (només compatible des de la versió 3.0.0 de peixos):
. $HOME/esp/esp-idf/export.fish
Fixeu-vos en l'espai entre el punt inicial i la ruta! Si teniu previst utilitzar esp-idf amb freqüència, podeu crear un àlies per executar export.sh:
1. Copieu i enganxeu l'ordre següent al vostre shellns profile (.profile, .bashrc, .zprofile, etc.)
àlies get_idf='. $HOME/esp/esp-idf/export.sh' 2. Actualitzeu la configuració reiniciant la sessió del terminal o executant source [path to profile],
per example, font ~/.bashrc. Ara podeu executar get_idf per configurar o actualitzar l'entorn esp-idf en qualsevol sessió de terminal. Tècnicament, podeu afegir export.sh al vostre programa de shellns.file directament; tanmateix, no es recomana. Fer-ho activa l'entorn virtual IDF a cada sessió de terminal (incloses aquelles en què no cal IDF), cosa que frustra la finalitat de l'entorn virtual i probablement afecta altres programes.
Pas 5. Primers passos amb ESP-IDF Ara, com que es compleixen tots els requisits, el següent tema us guiarà sobre com iniciar el vostre primer projecte. Aquesta guia us ajudarà en els primers passos utilitzant ESP-IDF. Seguiu aquesta guia per iniciar un nou projecte a l'ESP32 i compilar, flashejar i monitoritzar la sortida del dispositiu.
Nota: Si encara no heu instal·lat ESP-IDF, aneu a Instal·lació i seguiu les instruccions per obtenir tot el programari necessari per utilitzar aquesta guia.
Inicia un projecte Ara ja esteu a punt per preparar la vostra aplicació per a ESP32. Podeu començar amb el projecte getstarted/hello_world des de l'exempleamples directori a ESP-IDF.
Important: El sistema de compilació ESP-IDF no admet espais a les rutes d'accés a ESP-IDF ni als projectes.
Copieu el projecte get-started/hello_world al directori ~/esp:
Sistemes Espressif
38 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
cd ~/esp cp -r $IDF_PATH/examples/get-started/hello_world .
Nota: Hi ha una gamma d'exemplesample projectes a l'examples directori a ESP-IDF. Podeu copiar qualsevol projecte de la mateixa manera que s'ha presentat anteriorment i executar-lo. També és possible construir examples al seu lloc sense copiar-los primer.
Connecteu el vostre dispositiu Ara connecteu la placa ESP32 a l'ordinador i comproveu sota quin port sèrie és visible la placa. Els ports sèrie tenen els patrons de noms següents:
· Linux: començant per /dev/tty · macOS: començant per /dev/cu. Si no esteu segurs de com comprovar el nom del port sèrie, consulteu Establir connexió sèrie amb ESP32 per obtenir més informació.
Nota: Mantingueu el nom del port a mà, ja que el necessitareu als passos següents.
Configura el teu projecte Navega al directori hello_world, defineix ESP32 com a objectiu i executa la utilitat de configuració del projecte menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Després d'obrir un projecte nou, primer heu de definir l'objectiu amb idf.py set-target esp32. Tingueu en compte que les compilacions i configuracions existents al projecte, si n'hi ha, s'esborraran i s'inicialitzaran en aquest procés. L'objectiu es pot desar a la variable d'entorn per ometre aquest pas. Vegeu Seleccionar el xip de destí: set-target per obtenir més informació. Si els passos anteriors s'han fet correctament, apareixerà el menú següent:
Fig. 17: Configuració del projecte – Finestra d'inici Feu servir aquest menú per configurar variables específiques del projecte, per exemple, el nom i la contrasenya de la xarxa Wi-Fi, la velocitat del processador, etc. La configuració del projecte amb menuconfig es pot ometre a forhello_worldp, ja que aquest example corre amb
Sistemes Espressif
39 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
configuració per defecte.
Atenció: Si feu servir la placa ESP32-DevKitC amb el mòdul ESP32-SOLO-1 o la placa ESP32-DevKitM-1 amb el mòdul ESP32-MIN1-1(1U), activeu el mode de nucli únic (CONFIG_FREERTOS_UNICORE) a menuconfig abans de flashejar ex.amples.
Nota: Els colors del menú poden ser diferents al vostre terminal. Podeu canviar l'aspecte amb l'opció –style. Executeu idf.py menuconfig –help per obtenir més informació.
Si feu servir una de les plaques de desenvolupament compatibles, podeu accelerar el desenvolupament utilitzant el paquet de suport de plaques. Vegeu Consells addicionals per obtenir més informació.
Construeix el projecte Construeix el projecte executant:
compilació idf.py
Aquesta ordre compilarà l'aplicació i tots els components ESP-IDF, i després generarà el carregador d'arrencada, la taula de particions i els binaris de l'aplicació.
$ idf.py build Executant cmake al directori /path/to/hello_world/build Executant “cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Avisa sobre valors no inicialitzats. — S'ha trobat Git: /usr/bin/git (versió “2.17.0” trobada) — Construint un component aws_iot buit a causa de la configuració — Noms dels components: … — Rutes dels components: …
… (més línies de sortida del sistema de compilació)
[527/527] Generant hello_world.bin esptool.py v2.3.1
Compilació del projecte completada. Per flashejar, executeu aquesta ordre: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin o executeu 'idf.py -p PORT flash'
Si no hi ha errors, la construcció finalitzarà generant el .bin binari del microprogramari files.
Instal·leu al dispositiu Instal·leu els binaris que acabeu de crear (bootloader.bin, partition-table.bin i hello_world.bin) a la placa ESP32 executant:
idf.py -p PORT [-b BAUD] flash
Substitueix PORT pel nom del port sèrie de la teva placa ESP32. També pots canviar la velocitat en bauds del flasher substituint BAUD per la velocitat en bauds que necessitis. La velocitat en bauds per defecte és de 460800. Per obtenir més informació sobre els arguments idf.py, consulta idf.py.
Nota: L'opció flash compila i flasheja automàticament el projecte, de manera que no cal executar idf.py build.
Sistemes Espressif
40 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
Heu trobat problemes durant el flasheig? Si executeu l'ordre donada i veieu errors com ara "Failed to connectp", hi pot haver diverses raons per a això. Una de les raons pot ser que es trobi amb esptool.py, la utilitat que crida el sistema de compilació per restablir el xip, interactuar amb el carregador d'arrencada de la ROM i flashejar el firmware. Una solució senzilla que podeu provar és el restabliment manual que es descriu a continuació, i si no us ajuda, podeu trobar més detalls sobre possibles problemes a la secció Resolució de problemes.
esptool.py reinicia l'ESP32 automàticament activant les línies de control DTR i RTS del xip convertidor USB a sèrie, és a dir, FTDI o CP210x (per a més informació, vegeu Establir connexió sèrie amb ESP32). Les línies de control DTR i RTS estan connectades als pins GPIO0 i CHIP_PU (EN) de l'ESP32, cosa que canvia el volum.tagEls nivells de DTR i RTS arrencaran l'ESP32 en mode de descàrrega de firmware. Com a exempleampés a dir, comproveu l'esquema de la placa de desenvolupament ESP32 DevKitC.
En general, no hauríeu de tenir problemes amb les plaques de desenvolupament oficials esp-idf. Tanmateix, esptool.py no pot restablir el maquinari automàticament en els casos següents:
· El vostre maquinari no té les línies DTR i RTS connectades a GPIO0 i CHIP_PU · Les línies DTR i RTS estan configurades de manera diferent · No hi ha cap línia de control sèrie d'aquest tipus
Depenent del tipus de maquinari que tingueu, també és possible posar manualment la placa ESP32 en mode de descàrrega de firmware (reinici).
· Per a les plaques de desenvolupament produïdes per Espressif, aquesta informació es pot trobar a les respectives guies d'inici o guies d'usuari. Per exempleampÉs a dir, per reiniciar manualment una placa de desenvolupament ESP-IDF, manteniu premut el botó d'arrencada (GPIO0) i premeu el botó EN (CHIP_PU).
· Per a altres tipus de maquinari, proveu de desactivar GPIO0.
Funcionament normal Quan parpelleja, veureu el registre de sortida similar al següent:
... 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 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Port sèrie /dev/ttyUSB0 Connectant…….._ El xip és ESP32D0WDQ6 (revisió 0) Característiques: WiFi, BT, Dual Core, Esquema de codificació Cap El cristall és de 40MHz MAC: 24:0a:c4:05:b9:14 Pujant l'stub... Executant l'stub... S'està executant l'stub... Canviant la velocitat en bauds a 460800 Canviat. Configurant la mida de la memòria flaix... S'han comprimit 3072 bytes a 103... Escrivint a 0x00008000... (100 %) S'han escrit 3072 bytes (103 comprimits) a 0x00008000 en 0.0 segons (5962.8 kbit/s efectius)... Hash de dades verificat. S'han comprimit 26096 bytes a 15408... Escrivint a 0x00001000... (100 %) S'han escrit 26096 bytes (15408 comprimits) a 0x00001000 en 0.4 segons (546.7 kbit/s efectius)... Hash de dades verificat. Comprimit 147104 bytes a 77364… Escrivint a 0x00010000… (20 %) Escrivint a 0x00014000… (40 %) Escrivint a 0x00018000… (60 %) Escrivint a 0x0001c000… (80 %)
(continua a la pàgina següent)
Sistemes Espressif
41 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
(continuació de la pàgina anterior) Escrivint a 0x00020000… (100 %) S'han escrit 147104 bytes (77364 comprimits) a 0x00010000 en 1.9 segons (615,5 kbit/s efectius)… Hash de dades verificat.
Sortint... Restabliment dur mitjançant el pin RTS... Fet
Si no hi ha problemes al final del procés de flash, la placa es reiniciarà i iniciarà l'aplicació thehello_worldp. Si voleu utilitzar l'IDE Eclipse o VS Code en comptes d'executar idf.py, consulteu el complement Eclipse, l'extensió VSCode.
Monitoritzar la sortida Per comprovar si ohello_worldpis realment s'està executant, escriviu idf.py -p PORT monitor (No us oblideu de substituir PORT pel nom del vostre port sèrie). Aquesta ordre inicia l'aplicació IDF Monitor:
$ idf.py -p monitor Executant idf_monitor al directori […]/esp/hello_world/build Executant “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf”… — idf_monitor activat 115200 —– Sortir: Ctrl+] | Menú: Ctrl+T | Ajuda: Ctrl+T seguit de Ctrl+H –ets 8 de juny de 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 de juny de 2016 00:22:57 …
Després que els registres d'inici i diagnòstic es desplacin cap amunt, hauríeu de veure l'aplicació que ha imprès oHello world!p.
... Hola món! Reiniciant en 10 segons... Aquest és un xip esp32 amb 2 nuclis de CPU, WiFi/BT/BLE, revisió 1 de silici, memòria flaix externa de 2 MB Mida mínima de memòria dins del sistema: 298968 bytes Reiniciant en 9 segons... Reiniciant en 8 segons... Reiniciant en 7 segons...
Per sortir del monitor IDF, feu servir la drecera Ctrl+]. Si el monitor IDF falla poc després de la càrrega o, si en comptes dels missatges anteriors, veieu missatges aleatoris similars als que es mostren a continuació, és probable que la placa utilitzi un cristall de 26 MHz. La majoria de dissenys de plaques de desenvolupament utilitzen 40 MHz, de manera que l'ESP-IDF utilitza aquesta freqüència com a valor per defecte.
Si teniu aquest problema, feu el següent:
1. Sortiu del monitor. 2. Torneu al menú de configuració. 3. Aneu a Configuració de components > Configuració de maquinari > Configuració principal de l'XTAL > XTAL principal
freqüència i, a continuació, canvieu CONFIG_XTAL_FREQ_SEL a 26 MHz. 4. Després d'això, torneu a compilar i flashejar l'aplicació.
Sistemes Espressif
42 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
A la versió actual d'ESP-IDF, les principals freqüències XTAL compatibles amb ESP32 són les següents:
· 26 MHz · 40 MHz
Nota: Podeu combinar la compilació, el flasheig i la monitorització en un sol pas executant: idf.py -p PORT flash monitor
Vegeu també: · Monitor IDF per a dreceres pràctiques i més detalls sobre l'ús del monitor IDF. · idf.py per a una referència completa de les ordres i opcions d'idf.py.
Això és tot el que necessites per començar amb ESP32! Ara ja estàs a punt per provar altres exemples.amples, o passar directament a desenvolupar les vostres pròpies aplicacions.
Important: Alguns dels exampEls fitxers no admeten ESP32 perquè el maquinari necessari no està inclòs a l'ESP32, de manera que no es pot suportar. Si es crea un exampSi us plau, reviseu el fitxer README. file per a la taula Objectius compatibles. Si això és present, inclòs l'objectiu ESP32, o la taula no existeix en absolut, l'exampFuncionarà amb ESP32.
Consells addicionals
Problemes de permisos /dev/ttyUSB0 Amb algunes distribucions de Linux, és possible que rebeu el missatge d'error Error en obrir el port /dev/ttyUSB0 en flashejar l'ESP32. Això es pot solucionar afegint l'usuari actual al grup de sortida telefònica.
Compatibilitat amb Python ESP-IDF admet Python 3.7 o posterior. Es recomana actualitzar el sistema operatiu a una versió recent que compleixi aquest requisit. Altres opcions inclouen la instal·lació de Python des dels codis font o l'ús d'un sistema de gestió de versions de Python com ara pyenv.
Comenceu amb el paquet de suport de placa Per accelerar la creació de prototips en algunes plaques de desenvolupament, podeu utilitzar paquets de suport de placa (BSP), que fan que la inicialització d'una placa en particular sigui tan fàcil com unes poques crides de funció. Un BSP normalment admet tots els components de maquinari proporcionats a la placa de desenvolupament. A part de la definició del pinout i les funcions d'inicialització, un BSP inclou controladors per als components externs com ara sensors, pantalles, còdecs d'àudio, etc. Els BSP es distribueixen a través del Gestor de components d'IDF, de manera que es poden trobar al Registre de components d'IDF. Aquí teniu un exemple.ampIlustració de com afegir ESP-WROVER-KIT BSP al vostre projecte: idf.py add-dependency esp_wrover_kit
Més exampLes dades d'ús de BSP es poden trobar a l'exemple de BSP.amples carpeta.
Consell: Actualització d'ESP-IDF Es recomana actualitzar ESP-IDF de tant en tant, ja que les versions més noves corregeixen errors i/o proporcionen noves funcions. Tingueu en compte que cada versió major i menor d'ESP-IDF té un període de suport associat, i quan una branca de llançament s'acosta al final de la seva vida útil (EOL), s'anima a tots els usuaris a actualitzar els seus projectes a versions més recents d'ESP-IDF. Per obtenir més informació sobre els períodes de suport, consulteu Versions d'ESP-IDF.
Sistemes Espressif
43 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 1. Començar
La manera més senzilla de fer l'actualització és suprimir la carpeta esp-idf existent i clonar-la de nou, com si estiguéssiu realitzant la instal·lació inicial descrita al pas 2. Obteniu ESP-IDF. Una altra solució és actualitzar només el que ha canviat. El procediment d'actualització depèn de la versió d'ESP-IDF que utilitzeu. Després d'actualitzar ESP-IDF, executeu de nou l'script d'instal·lació, en cas que la nova versió d'ESP-IDF requereixi versions diferents de les eines. Vegeu les instruccions del pas 3. Configureu les eines. Un cop instal·lades les noves eines, actualitzeu l'entorn mitjançant l'script d'exportació. Vegeu les instruccions del pas 4. Configureu les variables d'entorn.
Documents relacionats · Establir connexió sèrie amb ESP32 · Complement d'Eclipse · Extensió VSCode · Monitor IDF
1.4 Crea el teu primer projecte
Si ja teniu instal·lat l'ESP-IDF i no feu servir l'IDE, podeu crear el vostre primer projecte des de la línia d'ordres seguint els passos Inicia un projecte a Windows o Inicia un projecte a Linux i macOS.
1.5 Desinstal·leu ESP-IDF
Si voleu eliminar ESP-IDF, seguiu Desinstal·la ESP-IDF.
Sistemes Espressif
44 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 2
Referència de l'API
2.1 Convencions de l'API
Aquest document descriu les convencions i els supòsits comuns a les interfícies de programació d'aplicacions (API) d'ESP-IDF. L'ESP-IDF proporciona diversos tipus d'interfícies de programació:
· Funcions, estructures, enumeracions, definicions de tipus i macros de preprocessador de C declarades a la capçalera pública files de components ESPIDF. Diverses pàgines de la secció de referència de l'API de la guia de programació contenen descripcions d'aquestes funcions, estructures i tipus.
· Funcions del sistema de compilació, variables predefinides i opcions. Aquestes estan documentades a la guia del sistema de compilació. · Les opcions de Kconfig es poden utilitzar al codi i al sistema de compilació (CMakeLists.txt) files. · Les eines d'amfitrió i els seus paràmetres de línia d'ordres també formen part de la interfície ESP-IDF. ESP-IDF consta de components escrits específicament per a ESP-IDF, així com per a biblioteques de tercers. En alguns casos, s'afegeix un contenidor específic d'ESP-IDF a la biblioteca de tercers, proporcionant una interfície més senzilla o millor integrada amb la resta de recursos d'ESP-IDF. En altres casos, l'API original de la biblioteca de tercers es presenta als desenvolupadors d'aplicacions. Les seccions següents expliquen alguns dels aspectes de les API d'ESP-IDF i el seu ús.
Maneig d'errors 2.1.1
La majoria de les API ESP-IDF retornen codis d'error definits amb el tipus esp_err_t. Vegeu la secció Gestió d'errors per obtenir més informació sobre els mètodes de gestió d'errors. La Referència de codis d'error conté la llista de codis d'error retornats pels components ESP-IDF.
2.1.2 Estructures de configuració
Important: La inicialització correcta de les estructures de configuració és una part important per fer que l'aplicació sigui compatible amb les futures versions d'ESP-IDF.
La majoria de funcions d'inicialització o configuració d'ESP-IDF prenen com a argument un punter a una estructura de configuració. Per exemple,ampLI:
45
Capítol 2. Referència de l'API
const esp_timer_create_args_t els_meus_arguments_temporitzador = { .callback = &el_meu_temporitzador_callback, .arg = argument_callback, .name = “el_meu_temporitzador”
}; esp_timer_handle_t el_meu_temporitzador; esp_err_t err = esp_timer_create(&arguments_del_meu_temporitzador, &el_meu_temporitzador);
Les funcions d'inicialització mai emmagatzemen el punter a l'estructura de configuració, per la qual cosa és segur assignar l'estructura a la pila.
L'aplicació ha d'inicialitzar tots els camps de l'estructura. El següent és incorrecte:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Incorrecte! Els camps .arg i .name no s'han inicialitzat */ esp_timer_create(&my_timer_args, &my_timer);
La majoria d'ex ESP-IDFampEls fitxers utilitzen inicialitzadors designats per C99 per a la inicialització de l'estructura, ja que proporcionen una manera concisa de definir un subconjunt de camps i inicialitzar a zero els camps restants:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Correcte, els camps .arg i .name s'inicialitzen amb zero */
};
El llenguatge C++ no admet la sintaxi dels inicialitzadors designats fins a C++ 20, però el compilador GCC l'admet parcialment com a extensió. Quan utilitzeu API ESP-IDF en codi C++, podeu considerar utilitzar el patró següent:
esp_timer_create_args_t my_timer_args = {}; /* Tots els camps s'inicialitzen amb zero */ my_timer_args.callback = &my_timer_callback;
Inicialitzadors predeterminats
Per a algunes estructures de configuració, ESP-IDF proporciona macros per establir valors predeterminats dels camps:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG s'expandeix a un inicialitzador designat.
Ara tots els camps estan definits als valors per defecte. Qualsevol camp encara es pot modificar: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Es recomana utilitzar macros d'inicialitzador predeterminades sempre que es proporcionin per a una estructura de configuració concreta.
2.1.3 API privades
Capçalera determinada fileLes s a ESP-IDF contenen API pensades per ser utilitzades només al codi font d'ESP-IDF i no per les aplicacions. Aquesta capçalera fileLes s sovint contenen private o esp_private al seu nom o ruta. Alguns components, com ara hal, només contenen API privades. Les API privades es poden eliminar o canviar de manera incompatible entre versions menors o pegats.
2.1.4 Components en exampels projectes
ESP-IDF exampEls fitxers contenen una varietat de projectes que demostren l'ús de les API ESP-IDF. Per tal de reduir la duplicació de codi a l'examples, alguns ajudants comuns es defineixen dins dels components que utilitzen diversos examples.
Sistemes Espressif
46 Enviar comentaris sobre el document
Versió v5.0.9
Capítol 2. Referència de l'API
Això inclou components ubicats
Documents/Recursos
![]() |
Placa de desenvolupament del kit de desenvolupament ESP32 de Espressif Systems [pdfGuia de l'usuari Placa de desenvolupament ESP32 Dev Kitc, ESP32, Placa de desenvolupament Dev Kitc, Placa de desenvolupament Kitc, Placa de desenvolupament, Placa |
