Płyta rozwojowa ESP32 Dev Kitc
Informacje o produkcie
Specyfikacje
- Produkt: ESP32
- Przewodnik programowania: ESP-IDF
- Wersja wydania: v5.0.9
- Producent: Espressif Systems
- Data wydania: 16 maja 2025 r.
Instrukcje użytkowania produktu
1. Rozpocznij
Przed rozpoczęciem pracy z ESP32 należy zapoznać się z
następny:
1.1 Wprowadzenie
Poznaj podstawowe funkcjonalności i możliwości
ESP32.
1.2 Czego potrzebujesz
Upewnij się, że posiadasz niezbędny sprzęt i oprogramowanie:
- Sprzęt komputerowy: Sprawdź listę wymaganego sprzętu
składniki. - Oprogramowanie: Zainstaluj wymagane oprogramowanie
składniki.
1.3 Instalacja
Aby zainstalować środowisko IDE i je skonfigurować, wykonaj następujące kroki:
środowisko:
- Środowisko programistyczne: Zainstaluj zalecane środowisko IDE
programowanie ESP32. - Instalacja ręczna: Skonfiguruj ręcznie
środowisko, jeśli zajdzie taka potrzeba.
1.4 Zbuduj swój pierwszy projekt
Utwórz i zbuduj swój początkowy projekt korzystając z ESP32.
1.5 Odinstaluj ESP-IDF
W razie potrzeby dowiedz się, jak odinstalować ESP-IDF z komputera
system.
2. Odwołanie do API
Aby uzyskać szczegółowe informacje na ten temat, zapoznaj się z dokumentacją API
protokoły aplikacji, obsługa błędów i konfiguracja
struktury.
Często zadawane pytania (FAQ)
P: Jak mogę rozwiązać typowe problemy z ESP32?
A: Zapoznaj się z sekcją rozwiązywania problemów w przewodniku programowania
lub odwiedź stronę producenta webwitryna zawierająca zasoby pomocy.
P: Czy mogę używać ESP-IDF z innymi mikrokontrolerami?
A: ESP-IDF jest specjalnie zaprojektowany dla ESP32, ale może się okazać, że
kompatybilność z innymi mikrokontrolerami Espressif.
ESP32
Przewodnik programowania ESP-IDF
Wersja 5.0.9 Espressif Systems 16 maja 2025 r.
Spis treści
Spis treści
i
1 Rozpocznij
3
1.1 Wprowadzenie . ...
1.2 Czego potrzebujesz . ...
1.2.1 Sprzęt . ...
1.2.2 Oprogramowanie . ...
1.3 Instalacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.2 Instalacja ręczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Zbuduj swój pierwszy projekt . ...
1.5 Odinstaluj ESP-IDF . ...
2 Odniesienie do API
45
2.1 Konwencje API . ...
2.1.1 Obsługa błędów . ...
2.1.2 Struktury konfiguracji . ...
2.1.3 Prywatne interfejsy API . ...
2.1.4 Komponenty w exampprojekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 Stabilność API . ...
2.2 Protokoły aplikacji . ...
2.2.1 Port ASIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 ESP-Modbus . ...
2.2.3 ESP-MQTT . ...
2.2.4 ESP-TLS . ...
2.2.5 Klient ESP HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 Sterowanie lokalne ESP . ...
2.2.7 Łącze szeregowe podrzędne ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 Pakiet certyfikatów ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 Serwer HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 Serwer HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 Echo ICMP . ...
2.2.12 Usługa mDNS . ...
2.2.13 Mbed TLS . ...
2.2.14 Warstwa sieciowa IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 Interfejs API Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.1 Bluetooth® Common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® Classic . ...
2.3.4 Kontroler i HCI . ...
2.3.5 SIATKA ESP-BLE . ...
2.3.6 Interfejsy API hosta oparte na NimBLE . ...
2.4 Odwołanie do kodów błędów . ...
2.5 Interfejsy API sieciowe . ...
2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.2 Sieć Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
2.5.3 Wątek . ...
i
2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Warstwa sieciowa IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Warstwa aplikacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 Interfejs API urządzeń peryferyjnych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Sterownik trybu jednorazowego przetwornika analogowo-cyfrowego (ADC). . . . . . . . . . . . . . . . . 977 2.6.2 Sterownik trybu ciągłego przetwornika analogowo-cyfrowego (ADC) . . . . . . . . . . . . . . . 986 2.6.3 Sterownik kalibracji przetwornika analogowo-cyfrowego (ADC) . . . . . . . . . . . . . . . . . . . 993 2.6.4 Drzewo zegarowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Przetwornik cyfrowo-analogowy (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO i RTC GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Uniwersalny timer (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Układ scalony (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Dźwięk między układami scalonymi (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 Wyświetlacz LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Sterowanie diodami LED (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Modulator szerokości impulsu sterującego silnikiem (MCPWM) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Licznik impulsów (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Nadajnik-odbiornik zdalnego sterowania (RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Wymagania dotyczące podciągania SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Sterownik hosta SDMMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Sterownik hosta SD SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Sterownik podrzędny karty SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Modulacja sigma-delta (SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Sterownik główny SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Sterownik podrzędny SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (element bezpieczny) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Czujnik dotykowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Dwuprzewodowy interfejs samochodowy (TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Uniwersalny asynchroniczny odbiornik/nadajnik (UART) . . . . . . . . . . . . . . . . . . 1317 2.7 Konfiguracja projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Menu konfiguracji projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Korzystanie z sdkconfig.defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Reguły formatowania Kconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Wsteczna zgodność opcji Kconfig . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Odniesienie do opcji konfiguracji. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 Interfejs API udostępniania. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Komunikacja protokołowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Ujednolicone udostępnianie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Udostępnianie sieci Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 Interfejs API pamięci masowej. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileWsparcie systemu . ... 1703 2.9.4 Narzędzie generatora partycji NVS . ... . . . . . . . . . . 1744 2.9.7 SPIFFS Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Wirtualny fileelement systemu . ... . . . . . . . . . . 1803 2.10.1 Format obrazu aplikacji . ... . . . . . . . . . . . . 1813 2.10.4 Wersja układu scalonego . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Kody błędów i funkcje pomocnicze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . ...view) . ... . . 1988 2.10.13 Alokacja pamięci sterty . ... . . . . . 2032 2.10.16 Wewnętrzne i niestabilne interfejsy API . ... . . . . . . . . . . . . . . . . . . . . . . 2045 2.10.19 Biblioteka rejestrowania . ... . ... 2087 2.10.24 Obsługa wątków POSIX . ... . . . . . . . . . . . . . 2099 2.10.27 Możliwości SoC . ... . ...
3 informacje o sprzęcie
2167
3.1 Porównanie serii układów scalonych . ...
3.1.1 Dokumenty powiązane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4 przewodniki API
2171
4.1 Biblioteka śledzenia na poziomie aplikacji . ...
4.1.1 Ponadview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.2 Tryby działania . ...
4.1.3 Opcje konfiguracji i zależności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 Jak korzystać z tej biblioteki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 Przebieg uruchamiania aplikacji . ...
4.2.1 Pierwsza stage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2 sekundytage bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 Uruchamianie aplikacji . ...
4.3 Bluetooth® Classic . ...
4.3.1 Ponadview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.4 Bluetooth® Low Energy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1 Ponadview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.2 Rozpoczęcie pracy . ...
4.4.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240
4.5 Program ładujący . ...
4.5.1 Zgodność bootloadera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 Poziom logowania . ...
4.5.3 Przywracanie ustawień fabrycznych . ...
4.5.4 Rozruch z oprogramowania testowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 Wycofywanie . ...
4.5.6 Organ nadzorujący . ...
4.5.7 Rozmiar bootloadera . ...
4.5.8 Szybkie uruchamianie z głębokiego uśpienia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 Niestandardowy bootloader . ...
4.6 System kompilacji . ...
4.6.1 Ponadview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.2 Korzystanie z systemu kompilacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
4.6.3ampProjekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Projekt CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Komponent CMakeLists Files . ... 2295 4.6.8 Wymagania dotyczące komponentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Nadpisywanie części projektu . ... 2300 4.6.11 Debugowanie CMake . ...ampKomponent CMakeLists . ... . . . 2305 4.6.15 Budowanie bootloadera . ... 2306 4.6.18 Korzystanie z gotowych bibliotek ze składnikami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Korzystanie z ESP-IDF w niestandardowych projektach CMake . ... File Globbing i kompilacje przyrostowe . ... 2313 4.6.24 Migracja z systemu ESP-IDF GNU Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Zrzut pamięci . ...view . ... . . . . . . . . . . . 2317 4.7.4 Wydruk zrzutu pamięci do UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Funkcje ROM w śladach wstecznych . ... . . . . . . . . . . . . . . 2318 4.7.7 Uruchamianie espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Szczyty wybudzania w trybie głębokiego uśpienia . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Implementacja szczątkowego . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 Sprawdzenie CRC dla szczątków wybudzania . ...ample . ...view . ... . . . . 2324 4.9.4 Makro ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Makro ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Makro ESP_RETURN_ON_ERROR . ... . 2325 4.9.7 Makro ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Makro ESP_RETURN_ON_FALSE . ... . . 2325 4.9.10 SPRAWDŹ MAKRA Examples . ... . 2327 4.10 ESP-WIFI-MESH . ...view . ... . . . . . . . . . . . . . 2329 4.10.4 Budowanie sieci . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Przełączanie kanałów . ...
iv
4.10.8 Wydajność . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 Zdarzenia Wi-Fi, Ethernet i IP . ... . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Osoba zarządzająca sytuacjami paniki. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Zrzut rejestru i śledzenie wsteczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Stub GDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Przekroczenie limitu czasu zegara RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Błędy w medytacji guru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Inne błędy krytyczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Szyfrowanie pamięci Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Odpowiednie bezpieczniki elektroniczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Proces szyfrowania pamięci flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Konfiguracja szyfrowania pamięci Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Możliwe awarie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Stan szyfrowania pamięci flash ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Odczyt i zapis danych w zaszyfrowanej pamięci Flash. . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Aktualizacja zaszyfrowanej pamięci Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Wyłączanie szyfrowania Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Najważniejsze informacje o szyfrowaniu Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Ograniczenia szyfrowania Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Szyfrowanie pamięci Flash i bezpieczny rozruch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Funkcje zaawansowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Szczegóły techniczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Abstrakcja sprzętowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Warstwa LL (niskiego poziomu). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Warstwa abstrakcji sprzętowej) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Przerwania wysokiego poziomu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Poziomy przerwań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Uwagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Debugowanie . ... . . . . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Wybieranie JTAG Adapter . ... . . . . . 2380 4.16.6 Uruchamianie debugera . ...amples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Kompilacja OpenOCD ze źródeł . ... . . . 2391 4.16.10 Powiązane dokumenty . ...view . ... . . . . . . . . 2424 4.18 lwIP . ... . ... . . . . . . 2435 4.18.5 Obsługa protokołu IPv6 . ...
v
4.18.7 Optymalizacja wydajności . ...
4.19.1 DRAM (pamięć danych RAM) . ... . . . . . . . 2441 4.19.4 DROM (dane przechowywane w pamięci flash) . ... . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 Wymagania dotyczące obsługi DMA . ... . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Tabele partycji . ...view . ... . . . . . . . . . 2445 4.21.4 Generowanie binarnej tabeli partycji . ... . . . . . . . . . . . . . 2449 4.21.7 Narzędzie partycjonowania (parttool.py) . ... . ... . . . 2468 4.23.1 Częściowa kalibracja . ... . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 Dane inicjalizacji PHY . ... . ...view . ... . . . . . . . . . . 2474 4.24.5 Jak włączyć bezpieczny rozruch . ... . . . . 2475 4.24.8 Zdalne podpisywanie obrazów . ... . . . . . . . . . . . 2476 4.24.11 Bezpieczny rozruch i szyfrowanie pamięci Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Weryfikacja podpisanej aplikacji bez sprzętowego bezpiecznego rozruchu . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Funkcje zaawansowane . ... . 2478 4.25 Bezpieczny rozruch V2 . ...tages . ... . . . . . . . . 2480 4.25.5 Bezpieczne wypełnienie . ... . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Rozmiar bootloadera . ... 2481 4.25.10 Jak włączyć Bezpieczny rozruch V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Ograniczenia po włączeniu Bezpiecznego rozruchu . ...
vi
4.25.13 Zdalne podpisywanie obrazów . ... . . . . . . . 2484 4.25.16 Bezpieczny rozruch i szyfrowanie pamięci Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Weryfikacja podpisanej aplikacji bez sprzętowego bezpiecznego rozruchu . ... 2485 4.26 Obsługa pamięci RAM zewnętrznej . ... . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 Konfigurowanie pamięci RAM zewnętrznej . ... . ... . . 2488 4.27.1 Ponadview . ... . . . . . . . . . . . . . . . . . . 2489 4.27.4 Norma C11 . ... 2489 4.28.1 Interfejs IDF – idf.py . ... . . . . . . . . . . . . . . . 2495 4.28.4 Menedżer komponentów IDF . ... . ... 2512 4.29.2 Przypadki testowe obejmujące wiele urządzeń . ...tage Przypadki testowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Testy dla różnych celów. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Tworzenie aplikacji testu jednostkowego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Uruchamianie testów jednostkowych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Kod czasowy z timerem kompensującym pamięć podręczną. . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Mocki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Testowanie jednostkowe w systemie Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Testy oprogramowania wbudowanego. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Testy jednostkowe IDF na hoście Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Sterownik Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Lista funkcji Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Jak napisać aplikację Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Kod błędu interfejsu API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Inicjalizacja parametrów interfejsu API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Model programowania Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Opis zdarzenia Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Ogólny scenariusz stacji Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Scenariusz ogólny punktu dostępowego Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 Skanowanie Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Scenariusz łączenia stacji Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Stacja Wi-Fi ESP32 łączy się po znalezieniu wielu punktów dostępowych. . . . . . . . . . . . . 2543 4.31.12 Ponowne połączenie z siecią Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Przekroczenie limitu czasu sygnału Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Konfiguracja Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Zarządzanie siecią bezprzewodową . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Pomiar zasobów radiowych. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Szybkie przejście na BSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 Tryb oszczędzania energii Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Przepustowość Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VII
4.31.21 Wysyłanie pakietów Wi-Fi 80211 . ... . . . . . . . . . . . . . . . . 2554 4.31.24 Informacje o stanie kanału Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Informacje o stanie kanału Wi-Fi Konfiguruj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 sieci Wi-Fi . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Jak poprawić wydajność Wi-Fi . ... . ... . 2568 4.32.2 Chronione ramki zarządzania (PMF) . ... . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Współistnienie częstotliwości radiowych . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Obsługiwany scenariusz współistnienia dla ESP32 . ... 2574 4.33.4 Jak korzystać z funkcji współistnienia . ... . . . . . . . . . . . . . . . 2577 4.34.2 Powody niemożności powtórzenia kompilacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Włączanie możliwości powtórzenia kompilacji w ESP-IDF . ... . . . . . . . . . 2578 4.34.5 Powtarzalne kompilacje i debugowanie . ... . . . . 2578
5 przewodników po migracji
2579
5.1 Przewodnik po migracji ESP-IDF 5.x . ...
5.1.1 Migracja z wersji 4.4 do 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6 Biblioteki i frameworki
2611
6.1 Struktury chmurowe . ...
6.1.1 ESP RainMaker . ...
6.1.2 AWS IoT . ...
6.1.3 Azure IoT . ...
6.1.4 Google IoT Core . ...
6.1.5 Aliyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.6 Joylink IoT . ...
6.1.7 Tencent IoT . ...
6.1.8 Tencentyun IoT . ...
6.1.9 Baidu IoT . ...
6.2 Frameworki Espressifns . ...
6.2.1 Struktura programistyczna Espressif Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . ...
6.2.3 Biblioteka Espressif DSP . ...
6.2.4 Struktura programistyczna ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-WHO . ...
6.2.6 ESP RainMaker . ...
6.2.7 Rozwiązanie ESP-IoT . ...
6.2.8 Protokoły ESP . ...
VIII
6.2.9 ESP-BSP . ...
7 Przewodnik po wkładach
2615
7.1 Jak wnieść swój wkład . ...
7.2 Przed wniesieniem wkładu . ...
7.3 Proces żądania ściągnięcia . ...
7.4 Część prawna . ...
7.5 Dokumenty powiązane . ...
7.5.1 Przewodnik po stylach środowiska programistycznego IoT Espressif . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 Zainstaluj hak pre-commit dla projektu ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 Dokumentowanie kodu . ...
7.5.4 Tworzenie Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629
7.5.5 Szablon dokumentacji API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 Umowa o współudziale . ...
7.5.7 Przewodnik po nagłówkach dotyczących praw autorskich . ...
7.5.8 Testy ESP-IDF z przewodnikiem Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 Wersje ESP-IDF
2645
8.1 Wydania . ...
8.2 Od której wersji powinienem zacząć? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 Schemat wersjonowania . ...
8.4 Okresy wsparcia . ...
8.5 Sprawdzanie aktualnej wersji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Przepływ pracy w Git . ...
8.7 Aktualizacja ESP-IDF . ...
8.7.1 Aktualizacja do wersji stabilnej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 Aktualizacja do wersji przedpremierowej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 Aktualizacja do gałęzi głównej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 Aktualizacja do gałęzi wydania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 Zasoby
2651
9.1 PlatformaIO . ...
9.1.1 Czym jest PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 Instalacja . ...
9.1.3 Konfiguracja . ...
9.1.4 Samouczki . ...
9.1.5 Projekt Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 Następne kroki . ...
9.2 Przydatne linki . ...
10 Prawa autorskie i licencje
2653
10.1 Prawa autorskie do oprogramowania . ...
10.1.1 Komponenty oprogramowania sprzętowego . ...
10.1.2 Dokumentacja . ...
10.2 Prawa autorskie do kodu źródłowego ROM . ...
10.3 Licencja Xtensa libhal MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.4 Licencja TinyBasic Plus MIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
10.5 Licencja TJpgDec . ...
11 O nas
2657
12 Przełączanie między językami
2659
Indeks
2661
Indeks
2661
ix
x
Spis treści
To jest dokumentacja środowiska programistycznego Espressif IoT Development Framework (esp-idf). ESP-IDF to oficjalne środowisko programistyczne dla układów SoC serii ESP32, ESP32-S i ESP32-C. W tym dokumencie opisano korzystanie z ESP-IDF z układem SoC ESP32.
Rozpocznij
Odniesienie do API
Przewodniki API
Systemy Espressif
1 Prześlij opinię o dokumencie
Wersja v5.0.9
Spis treści
Systemy Espressif
2 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1
Rozpocznij
Niniejszy dokument ma pomóc w skonfigurowaniu środowiska programistycznego dla sprzętu opartego na układzie ESP32 firmy Espressif. Następnie wystarczy wykonać prosty eksperyment.amppokażemy, jak używać ESP-IDF (Espressif IoT Development Framework) do konfiguracji menu, a następnie do tworzenia i flashowania oprogramowania sprzętowego na płytce ESP32.
Uwaga: To jest dokumentacja stabilnej wersji 5.0.9 ESP-IDF. Dostępne są również inne wersje ESP-IDF.
1.1 Wprowadzenie
ESP32 to system na chipie, który integruje następujące funkcje: · Wi-Fi (pasmo 2.4 GHz) · Bluetooth · Dwa wydajne rdzenie procesora Xtensa® 32-bit LX6 · Koprocesor o bardzo niskim poborze mocy · Wiele urządzeń peryferyjnych
Oparty na technologii 40 nm, ESP32 zapewnia solidną, wysoce zintegrowaną platformę, która pomaga sprostać ciągłym wymaganiom w zakresie efektywnego zużycia energii, kompaktowej konstrukcji, bezpieczeństwa, wysokiej wydajności i niezawodności. Espressif zapewnia podstawowe zasoby sprzętowe i programowe, aby pomóc twórcom aplikacji w realizacji ich pomysłów z wykorzystaniem sprzętu z serii ESP32. Platforma programistyczna Espressif jest przeznaczona do tworzenia aplikacji Internetu Rzeczy (IoT) z Wi-Fi, Bluetooth, zarządzaniem energią i wieloma innymi funkcjami systemowymi.
1.2 Czego potrzebujesz
1.2.1 Sprzęt
· Płytka ESP32. · Kabel USB – USB A / micro USB B. · Komputer z systemem Windows, Linux lub macOS.
Uwaga: Obecnie niektóre płytki programistyczne wykorzystują złącza USB typu C. Upewnij się, że masz odpowiedni kabel do podłączenia płytki!
Jeśli posiadasz jedną z oficjalnych płyt deweloperskich ESP32 wymienionych poniżej, możesz kliknąć na link, aby dowiedzieć się więcej o sprzęcie.
3
Rozdział 1. Rozpoczęcie pracy
ESP32-DevKitS(-R)
W niniejszym podręczniku użytkownika znajdują się informacje na temat ESP32-DevKitS(-R), płytki flash opartej na ESP32, wyprodukowanej przez firmę Espressif. ESP32-DevKitS(-R) to połączenie dwóch nazw płytek: ESP32-DevKitS i ESP32-DevKitS-R. S oznacza sprężyny, a R oznacza WROVER.
ESP32-DevKitS
ESP32-DevKitS-R
Dokument składa się z następujących głównych sekcji: · Wprowadzenie: Zawiera przeglądview Aby rozpocząć, zapoznaj się z instrukcjami konfiguracji sprzętu/oprogramowania ESP32-DevKitS(-R). · Dokumentacja sprzętowa: Zawiera bardziej szczegółowe informacje o sprzęcie ESP32-DevKitS(-R)ns. · Powiązane dokumenty: Zawiera linki do powiązanej dokumentacji.
Wprowadzenie W tej sekcji opisano, jak rozpocząć pracę z ESP32-DevKitS(-R). Rozpoczyna się ona kilkoma wstępnymi sekcjami dotyczącymi ESP32-DevKitS(-R), a następnie sekcja „Jak wgrać płytkę” zawiera instrukcje dotyczące montażu modułu w ESP32-DevKitS(-R), przygotowania go i wgrania oprogramowania układowego.
Nadview ESP32-DevKitS(-R) to płytka flash firmy Espressifns zaprojektowana specjalnie dla ESP32. Umożliwia flashowanie modułu ESP32 bez lutowania go do linii zasilania i sygnału. Po zamontowaniu modułu, ESP32-DevKitS(-R) może być również używana jako miniaturowa płytka rozwojowa, taka jak ESP32-DevKitC.
Płytki ESP32-DevKitS i ESP32-DevKitS-R różnią się jedynie układem pinów sprężynowych, aby pasowały do następujących modułów ESP32.
· ESP32-DevKitS: 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
Więcej informacji na temat powyższych modułów znajdziesz w sekcji Moduły serii ESP32.
Opis komponentów
Systemy Espressif
4 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 1: ESP32-DevKitS – przód
Systemy Espressif
Rys. 2: ESP32-DevKitS-R – przód 5
Prześlij opinię na temat dokumentu
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Kluczowe elementy: sworznie sprężynowe, złącza żeńskie 2.54 mm
Mostek USB-UART Złącze LDO Micro-USB/Port Micro USB Przycisk EN Przycisk rozruchu
Dioda LED zasilania
Opis: Wciśnij moduł. Piny będą pasować do otworów w module. Te żeńskie złącza są podłączone do pinów modułu zamontowanego na tej płytce. Opis żeńskich złączy znajduje się w sekcji "Bloki nagłówkowe". Jednoprocesorowy mostek USB-UART zapewnia prędkość transferu do 3 Mb/s.
5V-3.3V o niskim spadku napięciatagregulatora (LDO).
Interfejs USB. Zasilanie płytki oraz interfejs komunikacyjny między komputerem a płytką.
Przycisk resetowania.
Przycisk Pobierz. Przytrzymanie przycisku Boot, a następnie naciśnięcie EN uruchamia tryb pobierania oprogramowania układowego, umożliwiający pobranie oprogramowania układowego przez port szeregowy.
Włącza się po podłączeniu płytki do portu USB lub zasilacza.
Jak wgrać oprogramowanie do płytki Przed uruchomieniem urządzenia ESP32-DevKitS(-R) należy upewnić się, że jest ono w dobrym stanie i nie ma na nim widocznych śladów uszkodzeń.
Wymagany sprzęt · Moduł ESP32 według własnego wyboru · Kabel USB 2.0 (Standard-A do Micro-B) · Komputer z systemem Windows, Linux lub macOS
Konfiguracja sprzętu Zamontuj wybrany moduł na urządzeniu ESP32-DevKitS(-R) zgodnie z poniższymi krokami:
· Delikatnie umieść moduł na płytce ESP32-DevKitS(-R). Upewnij się, że otwory w module są wyrównane z kołkami sprężynowymi na płytce.
· Dociśnij moduł do płytki, aż usłyszysz kliknięcie. · Sprawdź, czy wszystkie kołki sprężynowe są wsunięte w otwory z ząbkami. Jeśli niektóre kołki sprężynowe są nieprawidłowo ustawione,
umieść je w otworach z ząbkami za pomocą pęsety.
Konfiguracja oprogramowania
Preferowana metoda. Środowisko programistyczne ESP-IDF zapewnia preferowany sposób flashowania plików binarnych na ESP32-DevKitS(-R). Przejdź do sekcji „Rozpoczęcie”, gdzie sekcja „Instalacja” szybko pomoże Ci skonfigurować środowisko programistyczne, a następnie flashować aplikację, np.ampna swoim ESP32-DevKitS(-R).
Alternatywna metoda: Użytkownicy systemu Windows mogą również wgrać pliki binarne za pomocą narzędzia Flash Download Tool. Wystarczy je pobrać, rozpakować i postępować zgodnie z instrukcjami w folderze doc.
Uwaga: 1. Aby flashować pliki binarne files, ESP32 powinien być ustawiony w tryb pobierania oprogramowania układowego. Można to zrobić automatycznie za pomocą narzędzia flash lub przytrzymując przycisk Boot i naciskając przycisk EN. 2. Po wgraniu pliku binarnego files, Flash Download Tool ponownie uruchamia moduł ESP32 i domyślnie uruchamia sflashowaną aplikację.
Wymiary deski Zawartość i opakowanie
Systemy Espressif
6 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy Rys. 3: Wymiary płytki ESP32-DevKitS – tył
Systemy Espressif
Rys. 4: Wymiary płytki ESP32-DevKitS-R – tył 7
Prześlij opinię na temat dokumentu
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Zamówienia detaliczne Jeśli zamówisz kilka sztukampKażdy zestaw ESP32-DevKitS(-R) jest dostarczany w indywidualnym opakowaniu w torebce antystatycznej lub innym opakowaniu, w zależności od sprzedawcy. Zamówienia detaliczne można składać na stronie https://www.espressif.com/en/contact-us/get-samples.
Zamówienia hurtowe. Jeśli zamawiasz hurtowo, deski są dostarczane w dużych kartonach. Zamówienia hurtowe można składać na stronie https://www.espressif.com/en/contact-us/sales-questions.
Informacje o sprzęcie
Schemat blokowy Poniższy schemat blokowy przedstawia komponenty ESP32-DevKitS(-R) i ich połączenia.
Rys. 5: ESP32-DevKitS(-R) (kliknij, aby powiększyć)
Opcje zasilania Istnieją trzy wzajemnie wykluczające się sposoby dostarczania zasilania do płytki: · Port Micro USB, domyślne zasilanie · Piny nagłówkowe 5 V i GND · Piny nagłówkowe 3 V 3 i GND
Zaleca się korzystanie z pierwszej opcji: portu micro USB.
Systemy Espressif
.
Sygnał etykiety
L1 3V3 VDD 3V3
L2 EN CHIP_PU
L3 VP SENSOR_VP
L4 VN SENSOR_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
ciąg dalszy na następnej stronie
8 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Tabela 1 ciąg dalszy z poprzedniej strony
.
Sygnał etykiety
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 5 V
Zewnętrzne 5V
R1 GND GND
2 zł 23 zł
GPIO23
3 zł 22 zł
GPIO22
R4 TX U0TXD
R5 RX U0RXD
6 zł 21 zł
GPIO21
R7 GND GND
8 zł 19 zł
GPIO19
9 zł 18 zł
GPIO18
10 zł 5 zł
GPIO5
11 zł 17 zł
GPIO17
12 zł 16 zł
GPIO16
13 zł 4 zł
GPIO4
14 zł 0 zł
GPIO0
15 zł 2 zł
GPIO2
16 zł 15 zł
GPIO15
R17 D1 SD_DATA1
R18 D0 SD_DATA0
R19 ZEGAR SD_ZEGAR
Bloki nagłówkowe Aby zobaczyć obraz bloków nagłówkowych, zapoznaj się z Opisem komponentów.
Powiązane dokumenty
· Schematy ESP32-DevKitS(-R) (PDF) · Karta katalogowa ESP32 (PDF) · Karta katalogowa ESP32-WROOM-32 (PDF) · Karta katalogowa ESP32-WROOM-32D i ESP32-WROOM-32U (PDF) · Karta katalogowa ESP32-SOLO-1 (PDF) · Karta katalogowa ESP32-WROVER (PDF) · Karta katalogowa ESP32-WROVER-B (PDF) · Selektor produktów ESP
ESP32-DevKitM-1
Ten podręcznik użytkownika pomoże Ci rozpocząć pracę z ESP32-DevKitM-1 i dostarczy Ci bardziej szczegółowych informacji.
ESP32-DevKitM-1 to płytka rozwojowa oparta na układzie ESP32-MINI-1(1U), wyprodukowana przez Espressif. Większość pinów I/O jest wyprowadzona na złącza po obu stronach, co ułatwia łączenie. Użytkownicy mogą podłączać urządzenia peryferyjne za pomocą przewodów połączeniowych lub zamontować ESP32-DevKitM-1 na płytce stykowej.
Systemy Espressif
9 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
ESP32-DevKitM-1 – przód
ESP32-DevKitM-1 – izometryczny
Dokument składa się z następujących głównych sekcji: · Wprowadzenie: Zapewnia przeglądview instrukcji konfiguracji sprzętu/oprogramowania ESP32-DevKitM-1, aby rozpocząć pracę. · Informacje o sprzęcie: Zawiera bardziej szczegółowe informacje o sprzęcie ESP32-DevKitM-1ns. · Powiązane dokumenty: Zawiera linki do powiązanej dokumentacji.
Wprowadzenie. Ta sekcja opisuje, jak rozpocząć pracę z ESP32-DevKitM-1. Rozpoczyna się od kilku sekcji wprowadzających dotyczących ESP32-DevKitM-1, a następnie sekcja „Rozpoczęcie tworzenia aplikacji” zawiera instrukcje dotyczące początkowej konfiguracji sprzętu oraz wgrywania oprogramowania układowego do ESP32-DevKitM-1.
Nadview Jest to mała i wygodna płytka rozwojowa, która oferuje:
· Moduł ESP32-MINI-1 lub ESP32-MINI-1U · Interfejs programowania USB-szeregowy, który zapewnia również zasilanie płytki · Złącza pinowe · Przyciski do resetowania i aktywacji trybu pobierania oprogramowania sprzętowego · Kilka innych komponentów
Zawartość i opakowanie
Zamówienia detaliczne Jeśli zamówisz kilka sztukampKażdy zestaw ESP32-DevKitM-1 jest dostarczany w indywidualnym opakowaniu, w torebce antystatycznej lub innym opakowaniu, w zależności od sprzedawcy.
Zamówienia detaliczne można składać na stronie https://www.espressif.com/en/contact-us/get-samples.
Zamówienia hurtowe. Jeśli zamawiasz hurtowo, deski są dostarczane w dużych kartonach. Zamówienia hurtowe można składać na stronie https://www.espressif.com/en/contact-us/sales-questions.
Opis komponentów Poniższy rysunek i tabela przedstawiają kluczowe komponenty, interfejsy i elementy sterujące płytki ESP32-DevKitM-1. Jako przykład wykorzystano płytkę z modułem ESP32-MINI-1.ampw poniższych sekcjach.
Systemy Espressif
10 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 6: ESP32-DevKitM-1 – przód
Kluczowy komponent Moduł pokładowy
Przycisk rozruchu LDO 5 V do 3.3 V
Przycisk resetowania Port micro-USB
Mostek USB-UART 3.3 V, dioda LED zasilania
Złącze I/O
Opis
Moduł ESP32-MINI-1 lub ESP32-MINI-1U. ESP32-MINI-1 jest wyposażony we wbudowaną antenę PCB. ESP32-MINI-1U jest wyposażony w zewnętrzne złącze antenowe. Oba moduły posiadają 4 MB pamięci Flash w obudowie chip. Szczegółowe informacje można znaleźć w karcie katalogowej ESP32-MINI-1 i ESP32-MINI-1U.
Regulator mocy przetwarza napięcie 5 V na 3.3 V.
Przycisk Pobierz. Przytrzymanie przycisku Boot, a następnie naciśnięcie przycisku Reset uruchamia tryb pobierania oprogramowania sprzętowego, umożliwiający pobranie oprogramowania sprzętowego przez port szeregowy.
Przycisk resetowania
Interfejs USB. Zasilanie płytki oraz interfejs komunikacyjny między komputerem a chipem ESP32.
Pojedynczy układ mostkowy USB-UART zapewnia prędkość transferu do 3 Mb/s.
Włącza się po podłączeniu USB do płytki. Szczegóły można znaleźć w schematach w dokumentach powiązanych. Wszystkie dostępne piny GPIO (z wyjątkiem magistrali SPI dla pamięci flash) są wyprowadzone na złącza pinowe na płytce. Użytkownicy mogą programować układ ESP32, aby włączyć wiele funkcji.
Rozpocznij tworzenie aplikacji Przed uruchomieniem ESP32-DevKitM-1 upewnij się, że jest w dobrym stanie i nie ma na nim widocznych śladów uszkodzeń.
Wymagany sprzęt · ESP32-DevKitM-1 · Kabel USB 2.0 (Standard-A do Micro-B) · Komputer z systemem Windows, Linux lub macOS
Konfiguracja oprogramowania Przejdź do sekcji Rozpoczęcie pracy, gdzie sekcja Instalacja pomoże Ci szybko skonfigurować środowisko programistyczne, a następnie zainstalować aplikację np.ampdo swojego ESP32-DevKitM-1.
Systemy Espressif
11 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Uwaga: Płytki ESP32-DevKitM-1 wyprodukowane przed 2 grudnia 2021 roku mają zainstalowany moduł jednordzeniowy. Aby sprawdzić, jaki moduł posiadasz, sprawdź informacje o jego oznaczeniu w dokumencie PCN-2021-021. Jeśli Twoja płytka ma zainstalowany moduł jednordzeniowy, włącz tryb jednordzeniowy (CONFIG_FREERTOS_UNICORE) w menuconfig przed flashowaniem aplikacji.
Schemat blokowy sprzętu Poniższy schemat blokowy przedstawia komponenty ESP32-DevKitM-1 i ich połączenia.
Rys. 7: ESP32-DevKitM-1
Wybór źródła zasilania Istnieją trzy wzajemnie wykluczające się sposoby dostarczania zasilania do płytki: · Port Micro USB, domyślne zasilanie · Piny nagłówkowe 5 V i GND · Piny nagłówkowe 3 V 3 i GND
Ostrzeżenie: · Zasilanie musi być dostarczone za pomocą jednego i tylko jednego z powyższych sposobów, w przeciwnym razie może dojść do uszkodzenia płytki i/lub źródła zasilania. · Zalecane jest zasilanie za pomocą portu micro USB.
Opisy pinów. Poniższa tabela zawiera nazwy i funkcje pinów po obu stronach płytki. Konfiguracje pinów peryferyjnych można znaleźć w karcie katalogowej ESP32.
NIE.
Nazwa
Typ
1
GND
P
2
3V3
P
Funkcja uziemienia Zasilanie 3.3 V
ciąg dalszy na następnej stronie
Systemy Espressif
12 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Tabela 2 ciąg dalszy z poprzedniej strony
NIE.
Nazwa
Typ
Funkcjonować
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
Resetuj; Wysoki: włącz; Niski: wyłącz
8
I34
I
GPIO34, ADC1_CH6, RTC_GPIO4
9
I35
I
GPIO35, ADC1_CH7, RTC_GPIO5
10
IO32
Wejście/Wyjście
GPIO32, XTAL_32K_P (wejście oscylatora kwarcowego 32.768 kHz),
ADC1_CH4, DOTYK9, RTC_GPIO9
11
IO33
Wejście/Wyjście
GPIO33, XTAL_32K_N (wyjście oscylatora kwarcowego 32.768 kHz),
ADC1_CH5, DOTYK8, RTC_GPIO8
12
IO25
Wejście/Wyjście
GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
13
IO26
Wejście/Wyjście
GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
14
IO27
Wejście/Wyjście
GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV
15
IO14
Wejście/Wyjście
GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
HS2_CLK, SD_CLK, EMAC_TXD2
16
5V
P
Zasilacz 5 V
17
IO12
Wejście/Wyjście
GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
HS2_DATA2, SD_DATA2, EMAC_TXD3
18
IO13
Wejście/Wyjście
GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
HS2_DATA3, SD_DATA3, EMAC_RX_ER
19
IO15
Wejście/Wyjście
GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,
HS2_CMD, SD_CMD, EMAC_RXD3
20
IO2
Wejście/Wyjście
GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,
HS2_DATA0, SD_DATA0
21
IO0
Wejście/Wyjście
GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
EMAC_TX_CLK
22
IO4
Wejście/Wyjście
GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,
HS2_DATA1, SD_DATA1, EMAC_TX_ER
23
IO9
Wejście/Wyjście
GPIO9, HS1_DATA2, U1RXD, SD_DATA2
24
IO10
Wejście/Wyjście
GPIO10, HS1_DATA3, U1TXD, SD_DATA3
25
IO5
Wejście/Wyjście
GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK
26
IO18
Wejście/Wyjście
GPIO18, HS1_DATA7, VSPICLK
27
IO23
Wejście/Wyjście
GPIO23, HS1_STROBE, VSPID
28
IO19
Wejście/Wyjście
GPIO19, VSPIQ, U0CTS, EMAC_TXD0
29
IO22
Wejście/Wyjście
GPIO22, VSPIWP, U0RTS, EMAC_TXD1
30
IO21
Wejście/Wyjście
GPIO21, VSPIHD, EMAC_TX_EN
31
TXD0
Wejście/Wyjście
GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
32
RXD0
Wejście/Wyjście
GPIO3, U0RXD, CLK_OUT2
Szczegóły dotyczące wersji sprzętu Brak poprzednich wersji.
Powiązane dokumenty
· Arkusz danych ESP32-MINI-1 i ESP32-MINI-1U (PDF) · Schematy ESP32-DevKitM-1 (PDF) · Układ PCB ESP32-DevKitM-1 (PDF) · Układ ESP32-DevKitM-1 (DXF) – Możesz view z Autodesk Viewer online · Arkusz danych ESP32 (PDF) · Selektor produktów ESP
Jeśli chcesz otrzymać pozostałą dokumentację projektową płytki, skontaktuj się z nami pod adresem sales@espressif.com.
Systemy Espressif
13 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Oprogramowanie 1.2.2
Aby rozpocząć korzystanie z ESP-IDF na ESP32, zainstaluj następujące oprogramowanie: · Zestaw narzędzi do kompilacji kodu dla ESP32 · Narzędzia do kompilacji – CMake i Ninja do kompilacji pełnej aplikacji dla ESP32 · ESP-IDF, który zawiera zasadniczo API (biblioteki oprogramowania i kod źródłowy) dla ESP32 oraz skrypty do obsługi zestawu narzędzi
1.3 Instalacja
Aby zainstalować całe niezbędne oprogramowanie, oferujemy kilka sposobów, które ułatwią to zadanie. Wybierz jedną z dostępnych opcji.
1.3.1 IDE
Uwaga: Zdecydowanie zalecamy zainstalowanie ESP-IDF za pomocą ulubionego środowiska IDE.
· Wtyczka Eclipse · Rozszerzenie VSCode
1.3.2 Instalacja ręczna
W przypadku procedury ręcznej wybierz opcję odpowiadającą Twojemu systemowi operacyjnemu.
Systemy Espressif
14 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Standardowa konfiguracja Toolchain dla Windows
Wprowadzenie ESP-IDF wymaga zainstalowania pewnych niezbędnych narzędzi, aby można było kompilować oprogramowanie układowe dla obsługiwanych układów. Wymagane narzędzia obejmują Pythona, Gita, kompilatory krzyżowe, narzędzia do kompilacji CMake i Ninja. W tym rozdziale Wprowadzenie będziemy używać wiersza poleceń, ale po zainstalowaniu ESP-IDF można użyć wtyczki Eclipse lub innego graficznego środowiska IDE z obsługą CMake. Uwaga: Ograniczenia: – Ścieżka instalacji ESP-IDF i narzędzi ESP-IDF nie może być dłuższa niż 90 znaków. Zbyt długie ścieżki instalacji mogą spowodować niepowodzenie kompilacji. – Ścieżka instalacji Pythona lub ESP-IDF nie może zawierać spacji ani nawiasów. – Ścieżka instalacji Pythona lub ESP-IDF nie powinna zawierać znaków specjalnych (spoza ASCII), chyba że system operacyjny jest skonfigurowany z obsługą Unicode UTF-8p. Administrator systemu może włączyć obsługę za pomocą Panelu sterowania – Zmień format daty, godziny lub liczb – Karta Administracyjne – Zmień ustawienia regionalne systemu – zaznacz opcję oBeta: Użyj Unicode UTF-8 w celu zapewnienia obsługi języków na całym świeciep – OK i uruchom ponownie komputer.
Instalator narzędzi ESP-IDF Najprostszym sposobem zainstalowania wymagań wstępnych ESP-IDF jest pobranie jednego z instalatorów narzędzi ESP-IDF.
Pobierz instalator systemu Windows
Jakie jest zastosowanie instalatora online i offline? Instalator online jest bardzo mały i umożliwia instalację wszystkich dostępnych wersji ESP-IDF. Podczas instalacji instalator pobiera tylko niezbędne zależności, w tym Git dla systemu Windows. Instalator przechowuje pobrane pliki. files w katalogu pamięci podręcznej %userprofile%. espressif
Instalator offline nie wymaga połączenia sieciowego. Zawiera wszystkie wymagane zależności, w tym Git dla systemu Windows.
Składniki instalacji Instalator wdraża następujące składniki:
· Wbudowany Python · Kompilatory krzyżowe · OpenOCD · Narzędzia do kompilacji CMake i Ninja · ESP-IDF
Instalator umożliwia również ponowne wykorzystanie istniejącego katalogu z ESP-IDF. Zalecany katalog to %userpro.file%Desktopesp-idf gdzie %userprofile% jest Twoim katalogiem domowym.
Systemy Espressif
15 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Uruchamianie środowiska ESP-IDF Na koniec procesu instalacji możesz zaznaczyć opcję Uruchom środowisko ESP-IDF PowerShell lub Uruchom wiersz poleceń ESP-IDF (cmd.exe). Instalator uruchomi środowisko ESP-IDF w wybranym wierszu poleceń. Uruchom środowisko ESP-IDF PowerShell:
Rys. 8: Kończenie pracy Kreatora konfiguracji narzędzi ESP-IDF za pomocą opcji Uruchom środowisko ESP-IDF PowerShell
Uruchom wiersz poleceń ESP-IDF (cmd.exe):
Korzystanie z wiersza poleceń W pozostałych krokach przewodnika Pierwsze kroki będziemy korzystać z wiersza poleceń systemu Windows. Instalator narzędzi ESP-IDF tworzy również skrót w menu Start do uruchamiania wiersza poleceń ESP-IDF. Ten skrót uruchamia wiersz poleceń (cmd.exe) i uruchamia skrypt export.bat w celu skonfigurowania zmiennych środowiskowych (PATH, IDF_PATH i innych). W tym wierszu poleceń dostępne są wszystkie zainstalowane narzędzia. Należy pamiętać, że ten skrót jest przypisany do katalogu ESP-IDF wybranego w instalatorze narzędzi ESP-IDF. Jeśli na komputerze znajduje się wiele katalogów ESP-IDF (np.ampnp. aby pracować z różnymi wersjami ESP-IDF), masz dwie możliwości ich wykorzystania:
1. Utwórz kopię skrótu utworzonego przez instalator narzędzi ESP-IDF i zmień katalog roboczy nowego skrótu na katalog ESP-IDF, którego chcesz użyć.
2. Alternatywnie, uruchom cmd.exe, a następnie przejdź do katalogu ESP-IDF, którego chcesz użyć, i uruchom plik export.bat. Pamiętaj, że w przeciwieństwie do poprzedniej opcji, ta metoda wymaga obecności Pythona i Gita w zmiennej środowiskowej PATH. Jeśli pojawią się błędy związane z brakiem znalezienia Pythona lub Gita, użyj pierwszej opcji.
Pierwsze kroki w ESP-IDF Teraz, gdy wszystkie wymagania zostały spełnione, możemy przejść do następnego tematu, który pomoże Ci rozpocząć Twój pierwszy projekt.
Systemy Espressif
16 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy Rys. 9: ESP-IDF PowerShell
Rys. 10: Zakończenie pracy Kreatora instalacji narzędzi ESP-IDF za pomocą polecenia Uruchom wiersz polecenia ESP-IDF (cmd.exe)
Systemy Espressif
17 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 11: Wiersz poleceń ESP-IDF
Systemy Espressif
18 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Ten przewodnik pomoże Ci w pierwszych krokach z ESP-IDF. Skorzystaj z niego, aby rozpocząć nowy projekt na ESP32 oraz zbudować, wgrać i monitorować dane wyjściowe urządzenia. Uwaga: Jeśli jeszcze nie zainstalowałeś ESP-IDF, przejdź do sekcji Instalacja i postępuj zgodnie z instrukcjami, aby pobrać całe oprogramowanie potrzebne do korzystania z tego przewodnika.
Rozpocznij projekt Teraz jesteś gotowy, aby przygotować swoją aplikację dla ESP32. Możesz zacząć od projektu getstarted/hello_world z przykładuampkatalog plików w ESP-IDF.
Ważne: System kompilacji ESP-IDF nie obsługuje spacji w ścieżkach do ESP-IDF ani do projektów.
Skopiuj projekt get-started/hello_world do katalogu ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedwitaj_świecie witaj_świecie
Uwaga: Istnieje szereg exampprojekty w exampkatalog plików w ESP-IDF. Możesz skopiować dowolny projekt w taki sam sposób jak powyżej i uruchomić go. Możliwe jest również zbudowanie examples na miejscu, bez konieczności ich wcześniejszego kopiowania.
Podłącz urządzenie. Podłącz teraz płytkę ESP32 do komputera i sprawdź, pod którym portem szeregowym jest ona widoczna. Nazwy portów szeregowych w systemie Windows zaczynają się od COM. Jeśli nie wiesz, jak sprawdzić nazwę portu szeregowego, zapoznaj się z artykułem Nawiązywanie połączenia szeregowego z ESP32, aby uzyskać szczegółowe informacje.
Uwaga: miej pod ręką nazwę portu, ponieważ będzie ona potrzebna w kolejnych krokach.
Skonfiguruj swój projekt Przejdź do katalogu hello_world, ustaw ESP32 jako cel i uruchom narzędzie konfiguracji projektu menuconfig.
Płyta CD systemu Windows %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
Po otwarciu nowego projektu należy najpierw ustawić cel za pomocą polecenia idf.py set-target esp32. Należy pamiętać, że istniejące kompilacje i konfiguracje w projekcie, o ile takie istnieją, zostaną wyczyszczone i zainicjowane w tym procesie. Cel można zapisać w zmiennej środowiskowej, aby całkowicie pominąć ten krok. Więcej informacji można znaleźć w sekcji „Wybór układu docelowego: set-target”. Jeśli poprzednie kroki zostały wykonane poprawnie, pojawi się następujące menu: To menu służy do konfigurowania zmiennych specyficznych dla projektu, np. nazwy i hasła sieci Wi-Fi, szybkości procesora itp. Konfigurowanie projektu za pomocą polecenia menuconfig można pominąć w przypadku ohello_wordp, ponieważ to np.ample działa z domyślną konfiguracją.
Uwaga: Jeśli używasz płytki ESP32-DevKitC z modułem ESP32-SOLO-1 lub płytki ESP32-DevKitM-1 z modułem ESP32-MIN1-1(1U), przed flashowaniem włącz tryb pojedynczego rdzenia (CONFIG_FREERTOS_UNICORE) w menuconfig.amples.
Systemy Espressif
19 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 12: Konfiguracja projektu – Okno główne
Uwaga: Kolory menu mogą się różnić w Twoim terminalu. Możesz zmienić wygląd za pomocą opcji –style. Aby uzyskać więcej informacji, uruchom polecenie idf.py menuconfig –help.
Jeśli korzystasz z jednej z obsługiwanych płyt programistycznych, możesz przyspieszyć proces rozwoju oprogramowania, korzystając z pakietu Board Support Package. Więcej informacji znajdziesz w sekcji Dodatkowe wskazówki.
Zbuduj projekt Zbuduj projekt, uruchamiając:
kompilacja idf.py
To polecenie skompiluje aplikację i wszystkie komponenty ESP-IDF, a następnie wygeneruje bootloader, tablicę partycji i pliki binarne aplikacji.
$ idf.py build Uruchamianie cmake w katalogu /path/to/hello_world/build Wykonywanie polecenia „cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Ostrzeżenie o niezainicjowanych wartościach. — Znaleziono Git: /usr/bin/git (znaleziono wersję „2.17.0”) — Budowanie pustego komponentu aws_iot z powodu konfiguracji — Nazwy komponentów: … — Ścieżki komponentów: …
… (więcej linii wyjścia systemu kompilacji)
[527/527] Generowanie hello_world.bin esptool.py v2.3.1
Kompilacja projektu zakończona. Aby flashować, uruchom to polecenie: ../../../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 lub uruchom „idf.py -p PORT flash”
Jeśli nie ma błędów, kompilacja zakończy się, generując plik binarny oprogramowania układowego .bin files.
Systemy Espressif
20 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Wgraj na urządzenie Wgraj pliki binarne, które właśnie skompilowałeś (bootloader.bin, partition-table.bin i hello_world.bin) na płytkę ESP32, uruchamiając: idf.py -p PORT [-b BAUD] flash
Zastąp PORT nazwą portu szeregowego płyty ESP32. Możesz również zmienić prędkość transmisji flashera, zastępując BAUD potrzebną prędkością. Domyślna prędkość transmisji to 460800. Więcej informacji na temat argumentów idf.py znajdziesz w pliku idf.py.
Uwaga: opcja flash automatycznie kompiluje i wgrywa projekt, więc uruchamianie polecenia idf.py build nie jest konieczne.
Wystąpiły problemy podczas flashowania? Jeśli po uruchomieniu podanego polecenia zobaczysz błędy, takie jak „Failed to connectp”, przyczyn może być kilka. Jedną z nich mogą być problemy napotkane przez esptool.py, narzędzie wywoływane przez system kompilacji w celu zresetowania układu, interakcji z bootloaderem ROM i flashowania oprogramowania układowego. Jednym z prostych rozwiązań jest ręczny reset opisany poniżej. Jeśli to nie pomoże, więcej informacji na temat możliwych problemów znajdziesz w sekcji Rozwiązywanie problemów.
Plik esptool.py automatycznie resetuje ESP32, ustawiając linie sterujące DTR i RTS układu konwertującego USB na port szeregowy, np. FTDI lub CP210x (więcej informacji w artykule „Nawiązywanie połączenia szeregowego z ESP32”). Linie sterujące DTR i RTS są z kolei podłączone do pinów GPIO0 i CHIP_PU (EN) układu ESP32, co powoduje zmianę głośności.tagPoziomy DTR i RTS uruchomią ESP32 w trybie pobierania oprogramowania układowego. Jako byłyampsprawdź schemat płytki deweloperskiej ESP32 DevKitC.
Generalnie nie powinieneś mieć problemów z oficjalnymi płytkami rozwojowymi esp-idf. Jednak esptool.py nie jest w stanie automatycznie zresetować sprzętu w następujących przypadkach:
· Twój sprzęt nie ma linii DTR i RTS podłączonych do GPIO0 i CHIP_PU · Linie DTR i RTS są skonfigurowane inaczej · W ogóle nie ma takich linii sterujących szeregowych
W zależności od rodzaju posiadanego sprzętu może być również możliwe ręczne przełączenie płytki ESP32 w tryb pobierania oprogramowania sprzętowego (resetowanie).
· W przypadku płyt programistycznych produkowanych przez Espressif informacje te można znaleźć w odpowiednich podręcznikach wprowadzających lub podręcznikach użytkownika. Na przykładampAby ręcznie zresetować płytę rozwojową ESP-IDF, należy przytrzymać przycisk Boot (GPIO0) i nacisnąć przycisk EN (CHIP_PU).
· W przypadku innych typów sprzętu spróbuj obniżyć GPIO0.
Normalna praca Podczas flashowania zobaczysz dziennik wyników podobny do poniższego:
… 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 szeregowy /dev/ttyUSB0 Łączenie…….._ Układ to ESP32D0WDQ6 (wersja 0) Funkcje: WiFi, BT, Dual Core, Schemat kodowania Brak Kryształ to 40MHz MAC: 24:0a:c4:05:b9:14 Wysyłanie stub… Uruchamianie stub… Uruchamianie stub… Zmiana szybkości transmisji na 460800 Zmieniono.
(ciąg dalszy na następnej stronie)
Systemy Espressif
21 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
(ciąg dalszy z poprzedniej strony) Konfigurowanie rozmiaru pamięci flash… Skompresowano 3072 bajty do 103… Zapis pod adresem 0x00008000… (100%) Zapisano 3072 bajty (skompresowano 103) pod adresem 0x00008000 w ciągu 0.0 sekund (efektywnie 5962.8 kbit/s)… Skrót danych zweryfikowano. Skompresowano 26096 bajtów do 15408… Zapis pod adresem 0x00001000… (100%) Zapisano 26096 bajtów (skompresowano 15408) pod adresem 0x00001000 w ciągu 0.4 sekund (efektywnie 546.7 kbit/s)… Skrót danych zweryfikowano. Skompresowano 147104 bajtów do 77364… Zapis pod adresem 0x00010000… (20 %) Zapis pod adresem 0x00014000… (40 %) Zapis pod adresem 0x00018000… (60 %) Zapis pod adresem 0x0001c000… (80 %) Zapis pod adresem 0x00020000… (100 %) Zapisano 147104 bajtów (77364 skompresowanych) pod adresem 0x00010000 w ciągu 1.9 sekundy (efektywnie 615,5 kbit/s)… Skrót danych zweryfikowano.
Opuszczam… Twarde resetowanie przez pin RTS… Gotowe
Jeśli do końca procesu flashowania nie wystąpią żadne problemy, płyta uruchomi się ponownie i uruchomi aplikację ohello_worldp. Jeśli wolisz korzystać ze środowiska IDE Eclipse lub VS Code zamiast uruchamiać idf.py, sprawdź wtyczkę Eclipse, rozszerzenie VSCode.
Monitorowanie danych wyjściowych Aby sprawdzić, czy ohello_worldpis rzeczywiście działa, wpisz polecenie idf.py -p PORT monitor (nie zapomnij zastąpić PORT nazwą swojego portu szeregowego).
To polecenie uruchamia aplikację IDF Monitor:
$ idf.py -p monitor Uruchamianie idf_monitor w katalogu […]/esp/hello_world/build Wykonywanie „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor na 115200 —– Wyjdź: Ctrl+] | Menu: Ctrl+T | Pomoc: Ctrl+T, a następnie Ctrl+H –ets 8 czerwca 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 czerwca 2016 00:22:57 …
Po przewinięciu logów rozruchowych i diagnostycznych w górę, powinieneś zobaczyć napis oHello world! wydrukowany przez aplikację.
… Witaj świecie! Restart za 10 sekund… To układ esp32 z 2 rdzeniami procesora, WiFi/BT/BLE, rewizją układu scalonego 1, 2 MB zewnętrznej pamięci flash. Minimalny rozmiar wolnego miejsca na stosie: 298968 bajtów. Restart za 9 sekund… Restart za 8 sekund… Restart za 7 sekund…
Aby wyjść z monitora IDF, użyj skrótu Ctrl+].
Systemy Espressif
22 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Jeśli monitor IDF ulegnie awarii wkrótce po przesłaniu lub zamiast powyższych komunikatów zobaczysz losowe śmieci podobne do tych poniżej, Twoja płytka prawdopodobnie korzysta z kwarcu 26 MHz. Większość projektów płytek rozwojowych wykorzystuje częstotliwość 40 MHz, więc ESP-IDF domyślnie używa tej częstotliwości.
Jeśli masz taki problem, wykonaj następujące czynności: 1. Zamknij monitor. 2. Wróć do menuconfig. 3. Przejdź do Konfiguracja komponentów > Ustawienia sprzętu > Główna konfiguracja XTAL > Częstotliwość głównego XTAL, a następnie zmień CONFIG_XTAL_FREQ_SEL na 26 MHz. 4. Następnie ponownie skompiluj i wgraj aplikację.
W obecnej wersji ESP-IDF główne częstotliwości XTAL obsługiwane przez ESP32 to:
· 26 MHz · 40 MHz
Uwaga: Możesz połączyć kompilację, flashowanie i monitorowanie w jednym kroku, uruchamiając: idf.py -p PORT flash monitor
Zobacz także: · Monitor IDF, gdzie znajdziesz przydatne skróty i więcej szczegółów na temat korzystania z monitora IDF. · Plik idf.py, gdzie znajdziesz pełną listę poleceń i opcji pliku idf.py.
To wszystko, czego potrzebujesz, aby zacząć korzystać z ESP32! Teraz możesz wypróbować inne, bardziej zaawansowane funkcje.amples, lub przejdź bezpośrednio do tworzenia własnych aplikacji.
Ważne: Niektóre z byłychampPliki .les nie obsługują ESP32, ponieważ wymagany sprzęt nie jest zawarty w ESP32, przez co nie może być obsługiwany. Podczas tworzeniaampproszę sprawdzić plik README file dla tabeli „Obsługiwane cele”. Jeśli jest ona obecna, wliczając cel ESP32, lub tabela w ogóle nie istnieje,ample będzie działać na ESP32.
Dodatkowe wskazówki
Problemy z uprawnieniami /dev/ttyUSB0 W niektórych dystrybucjach Linuksa może pojawić się komunikat o błędzie „Nie udało się otworzyć portu /dev/ttyUSB0” podczas flashowania ESP32. Problem można rozwiązać, dodając bieżącego użytkownika do grupy dialout.
Zgodność z Pythonem: ESP-IDF obsługuje Pythona 3.7 lub nowszego. Zaleca się aktualizację systemu operacyjnego do nowszej wersji spełniającej to wymaganie. Inne opcje obejmują instalację Pythona ze źródeł lub skorzystanie z systemu zarządzania wersjami Pythona, takiego jak pyenv.
Zacznij od pakietu wsparcia płytki Aby przyspieszyć prototypowanie niektórych płytek programistycznych, możesz użyć pakietów wsparcia płytki (BSP), dzięki którym inicjalizacja konkretnej płytki sprowadza się do kilku wywołań funkcji.
Systemy Espressif
23 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
BSP zazwyczaj obsługuje wszystkie komponenty sprzętowe dostępne na płytce programistycznej. Oprócz definicji wyprowadzeń i funkcji inicjalizacji, BSP zawiera sterowniki dla komponentów zewnętrznych, takich jak czujniki, wyświetlacze, kodeki audio itp. BSP są dystrybuowane za pośrednictwem Menedżera Komponentów IDF, dzięki czemu można je znaleźć w Rejestrze Komponentów IDF. Herens an exampInstrukcja dodawania ESP-WROVER-KIT BSP do projektu: idf.py add-dependency esp_wrover_kit
Więcej exampinformacje o wykorzystaniu BSP można znaleźć w BSP exampfolder les.
Powiązane dokumenty Dla zaawansowanych użytkowników, którzy chcą dostosować proces instalacji: · Aktualizacja narzędzi ESP-IDF w systemie Windows · Nawiązywanie połączenia szeregowego za pomocą ESP32 · Wtyczka Eclipse · Rozszerzenie VSCode · Monitor IDF
Aktualizacja narzędzi ESP-IDF w systemie Windows
Zainstaluj narzędzia ESP-IDF za pomocą skryptu. Z poziomu wiersza poleceń systemu Windows przejdź do katalogu, w którym zainstalowano ESPIDF. Następnie uruchom:
instalacja.bat
W przypadku programu PowerShell przejdź do katalogu, w którym zainstalowano ESP-IDF. Następnie uruchom:
install.ps1
Spowoduje to pobranie i zainstalowanie narzędzi niezbędnych do korzystania z ESP-IDF. Jeśli dana wersja narzędzia jest już zainstalowana, nie zostanie podjęte żadne działanie. Narzędzia są pobierane i instalowane w katalogu określonym podczas instalacji narzędzi ESP-IDF. Domyślnie jest to C:\Users\username.espressif.
Dodaj narzędzia ESP-IDF do ścieżki PATH za pomocą skryptu eksportu. Instalator narzędzi ESP-IDF tworzy skrót w menu Start dla wiersza poleceń ESP-IDF. Ten skrót otwiera okno wiersza poleceń, w którym wszystkie narzędzia są już dostępne.
dostępne. W niektórych przypadkach może zaistnieć potrzeba pracy z ESP-IDF w oknie wiersza poleceń, które nie zostało otwarte za pomocą tego skrótu. W takim przypadku należy postępować zgodnie z poniższymi instrukcjami, aby dodać narzędzia ESP-IDF do ścieżki PATH. W wierszu poleceń, w którym konieczne jest użycie ESP-IDF, należy przejść do katalogu, w którym zainstalowano ESP-IDF, a następnie uruchomić plik export.bat:
płyta CD %userprofile%espesp-idf export.bat
Alternatywnie w programie PowerShell, w którym musisz użyć ESP-IDF, przejdź do katalogu, w którym zainstalowano ESP-IDF, a następnie wykonaj export.ps1:
cd ~/esp/esp-idf export.ps1
Po wykonaniu tej czynności narzędzia będą dostępne w wierszu poleceń.
Nawiązywanie połączenia szeregowego z ESP32 W tej sekcji znajdziesz wskazówki, jak nawiązać połączenie szeregowe między ESP32 a komputerem.
Systemy Espressif
24 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Podłącz ESP32 do komputera. Podłącz płytkę ESP32 do komputera za pomocą kabla USB. Jeśli sterownik urządzenia nie zainstaluje się automatycznie, zidentyfikuj układ konwertera USB na port szeregowy na płytce ESP32 (lub zewnętrzny klucz sprzętowy), wyszukaj sterowniki w internecie i zainstaluj je. Poniżej znajduje się lista układów konwertera USB na port szeregowy zainstalowanych na większości płytek ESP32 produkowanych przez Espressif wraz z linkami do sterowników:
· CP210x: Sterowniki mostka USB-UART VCP dla CP210x · FTDI: Sterowniki wirtualnego portu COM FTDI. Proszę zapoznać się z instrukcją obsługi płytki, aby dowiedzieć się, jaki układ konwertera USB-serial został użyty. Powyższe sterowniki służą głównie celom informacyjnym. W normalnych warunkach sterowniki powinny być dołączone do systemu operacyjnego i instalowane automatycznie po podłączeniu płytki do komputera.
Sprawdź port w systemie Windows. Sprawdź listę zidentyfikowanych portów COM w Menedżerze urządzeń systemu Windows. Odłącz urządzenie ESP32 i podłącz je ponownie, aby sprawdzić, który port zniknie z listy, a następnie pojawi się ponownie. Poniższe rysunki przedstawiają port szeregowy dla zestawów ESP32 DevKitC i ESP32 WROVER.
Rys. 13: Mostek USB-UART ESP32-DevKitC w Menedżerze urządzeń systemu Windows
Sprawdź port w systemie Linux i macOS Aby sprawdzić nazwę urządzenia dla portu szeregowego płytki ESP32 (lub zewnętrznego klucza konwertera), uruchom to polecenie dwa razy, najpierw z odłączoną płytką/kluczem, a następnie z podłączonym. Port, który pojawi się za drugim razem, to ten, którego potrzebujesz: Linux
ls /dev/tty*
macOS
Systemy Espressif
25 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 14: Dwa porty szeregowe USB zestawu ESP-WROVER-KIT w Menedżerze urządzeń systemu Windows
Systemy Espressif
26 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
ls /dev/cu.* Uwaga: użytkownicy systemu macOS: jeśli nie widzisz portu szeregowego, sprawdź, czy masz zainstalowane sterowniki USB/portu szeregowego. Linki do sterowników znajdziesz w sekcji „Podłączanie ESP32 do komputera”. W systemie macOS High Sierra (10.13) może być konieczne wyraźne zezwolenie na załadowanie sterowników. Otwórz Preferencje systemowe -> Bezpieczeństwo i prywatność -> Ogólne i sprawdź, czy wyświetla się komunikat o oprogramowaniu systemowym od dewelopera lp, gdzie nazwa dewelopera to Silicon Labs lub FTDI.
Dodawanie użytkownika do grupy dialout w systemie Linux. Aktualnie zalogowany użytkownik powinien mieć dostęp do odczytu i zapisu na porcie szeregowym przez USB. W większości dystrybucji Linuksa robi się to poprzez dodanie użytkownika do grupy dialout za pomocą następującego polecenia:
sudo usermod -a -G dialout $USER
w Arch Linux robi się to poprzez dodanie użytkownika do grupy uucp za pomocą następującego polecenia:
sudo usermod -a -G uucp $USER
Pamiętaj, aby zalogować się ponownie, aby włączyć uprawnienia do odczytu i zapisu dla portu szeregowego.
Sprawdź połączenie szeregowe. Teraz sprawdź, czy połączenie szeregowe działa. Możesz to zrobić za pomocą programu terminala szeregowego, sprawdzając, czy po zresetowaniu ESP32 pojawi się jakiś komunikat. Domyślna prędkość transmisji konsoli w ESP32 wynosi 115200.
Windows i Linux W tym przykładzieampUżyjemy klienta PuTTY SSH, dostępnego zarówno dla systemów Windows, jak i Linux. Możesz użyć innych programów szeregowych i ustawić parametry komunikacji, jak poniżej. Uruchom terminal i ustaw zidentyfikowany port szeregowy. Prędkość transmisji = 115200 (w razie potrzeby zmień ją na domyślną prędkość transmisji używanego układu), bity danych = 8, bity stopu = 1 i parzystość = N. Poniżej przedstawiono przykładowe ustawienia.ampZrzuty ekranu przedstawiające ustawienia portu i parametrów transmisji (w skrócie 115200-8-1-N) w systemach Windows i Linux. Pamiętaj, aby wybrać dokładnie ten sam port szeregowy, który zidentyfikowałeś w powyższych krokach. Następnie otwórz port szeregowy w terminalu i sprawdź, czy widzisz jakiś log wydrukowany przez ESP32. Zawartość logu będzie zależeć od aplikacji załadowanej do ESP32, patrz przykład.ample Wyjście.
Uwaga: Zamknij terminal szeregowy po sprawdzeniu, czy komunikacja działa. Jeśli sesja terminala pozostanie otwarta, port szeregowy będzie niedostępny do późniejszego przesłania oprogramowania sprzętowego.
macOS Aby oszczędzić Ci kłopotu związanego z instalacją programu terminala szeregowego, macOS oferuje polecenie screen. · Jak omówiono w artykule Sprawdzanie portu w systemie Linux i macOS, uruchom:
ls /dev/cu.* · Powinieneś zobaczyć podobny wynik:
/dev/cu.Bluetooth-Port-Przychodzący /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· Wynik będzie się różnić w zależności od typu i liczby płytek podłączonych do komputera. Następnie wybierz nazwę urządzenia dla płytki i uruchom (w razie potrzeby zmień o115200 na domyślną szybkość transmisji używanego układu):
ekran /dev/cu.device_name 115200 Zastąp device_name nazwą znalezioną po uruchomieniu ls /dev/cu.*.
Systemy Espressif
27 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 15: Konfigurowanie komunikacji szeregowej w PuTTY w systemie Windows
Systemy Espressif
28 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Rys. 16: Konfigurowanie komunikacji szeregowej w PuTTY w systemie Linux
Systemy Espressif
29 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
· Szukasz logu wyświetlanego na ekranie. Zawartość logu będzie zależeć od aplikacji załadowanej do ESP32, patrz przykładampWyjście. Aby wyjść z sesji ekranowej, naciśnij Ctrl-A + .
Uwaga: Nie zapomnij zamknąć sesji ekranowej po sprawdzeniu, czy komunikacja działa. Jeśli tego nie zrobisz i po prostu zamkniesz okno terminala, port szeregowy będzie niedostępny do późniejszego przesłania oprogramowania sprzętowego.
Example Wyjście An exampPoniżej znajduje się log. Zresetuj tablicę, jeśli nic nie widzisz. ets 8 czerwca 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 czerwca 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 bootloader I (45) rozruch: czas kompilacji 18:48:10
…
Jeżeli widzisz czytelny wynik logu, oznacza to, że połączenie szeregowe działa i możesz kontynuować instalację, a na koniec przesłać aplikację do ESP32.
Uwaga: W przypadku niektórych konfiguracji okablowania portu szeregowego, piny RTS i DTR muszą zostać wyłączone w programie terminala, aby ESP32 uruchomił się i wygenerował sygnał szeregowy. Zależy to od samego sprzętu – większość płyt programistycznych (w tym wszystkie płytki Espressif) nie ma tego problemu. Problem występuje, gdy piny RTS i DTR są podłączone bezpośrednio do pinów EN i GPIO0. Więcej informacji można znaleźć w dokumentacji programu esptool.
Jeśli dotarłeś tutaj od kroku 5. Pierwsze kroki w ESP-IDF podczas instalacji oprogramowania do tworzenia oprogramowania ESP32, możesz przejść do kroku 5. Pierwsze kroki w ESP-IDF.
Monitor IDF. Monitor IDF to przede wszystkim program terminala szeregowego, który przekazuje dane szeregowe do i z portu szeregowego urządzenia docelowego. Oferuje również pewne funkcje specyficzne dla IDF. Monitor IDF można uruchomić z projektu IDF, uruchamiając plik monitora idf.py.
Skróty klawiaturowe Aby ułatwić sobie korzystanie z IDF Monitor, użyj skrótów klawiaturowych podanych w tabeli.
Systemy Espressif
30 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Skrót klawiaturowy Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (lub A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (lub I)
· Ctrl+H (lub H)
· Ctrl+X (lub X)
Ctrl+C
Działanie
Opis
Wyjdź z programu Klawisz wyjścia z menu Wyślij sam znak menu do pilota
Wyślij sam znak wyjścia do pilota
Zresetuj cel do bootloadera, aby wstrzymać aplikację za pomocą linii RTS
Zresetuj płytę docelową przez RTS
Zbuduj i wgraj projekt
Tylko zbuduj i wgraj aplikację
Zatrzymaj/wznów drukowanie dziennika na ekranie
Zatrzymaj/wznów wyjście dziennika zapisane do file
Czas zatrzymania/wznowieniaamps
druk
Wyświetl wszystkie skróty klawiaturowe
Naciśnij i wybierz jeden z podanych poniżej klawiszy.
Resetuje docelową płytę do bootloadera przez linię RTS (jeśli jest podłączona), dzięki czemu płytka nie uruchamia się. Przydatne, gdy trzeba poczekać na uruchomienie innego urządzenia. Resetuje docelową płytę i ponownie uruchamia aplikację przez linię RTS (jeśli jest podłączona).
Wstrzymuje działanie idf_monitor, aby uruchomić docelowy plik flash projektu, a następnie wznawia działanie idf_monitor. Wszelkie zmiany w źródle filePliki są rekompilowane, a następnie ponownie flashowane. Docelowy program encrypted-flash jest uruchamiany, jeśli idf_monitor został uruchomiony z argumentem -E. Wstrzymuje działanie programu idf_monitor, aby uruchomić docelowy program app-flash, a następnie wznawia działanie programu idf_monitor. Podobnie jak w przypadku docelowego programu flash, ale tylko główna aplikacja jest kompilowana i ponownie flashowana. Docelowy program encrypted-app-flash jest uruchamiany, jeśli idf_monitor został uruchomiony z argumentem -E. Odrzuca wszystkie przychodzące dane szeregowe podczas aktywacji. Umożliwia szybkie wstrzymanie i sprawdzenie danych wyjściowych dziennika bez wychodzenia z monitora. Tworzy file w katalogu projektu, a dane wyjściowe są tam zapisywane file dopóki nie zostanie to wyłączone tym samym skrótem klawiaturowym (lub dopóki Monitor IDF nie zostanie zamknięty). Monitor IDF może wydrukować listę czasówamp na początku każdego wiersza. Najszybszyamp format można zmienić za pomocą –timestamp-format argumentu wiersza poleceń.
Wyjdź z programu
Przerwij działającą aplikację
Wstrzymuje działanie monitora IDF i uruchamia debuger projektu GDB w celu debugowania aplikacji w czasie wykonywania. Wymaga to włączenia opcji :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.
Wszystkie naciśnięte klawisze, za wyjątkiem Ctrl-] i Ctrl-T, zostaną wysłane przez port szeregowy.
Funkcje specyficzne dla IDF
Automatyczne dekodowanie adresów Zawsze, gdy ESP-IDF wyprowadza adres w kodzie szesnastkowym w formacie 0x4_______, monitor IDF używa addr2line_ do wyszukania lokalizacji w kodzie źródłowym i znalezienia nazwy funkcji.
Jeśli aplikacja ESP-IDF ulegnie awarii i przejdzie w stan paniki, generowany jest zrzut rejestru i ślad wsteczny, taki jak poniższy:
Systemy Espressif
31 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Błąd Guru Meditation typu StoreProhibited wystąpił w rdzeniu 0. Wyjątek:
nieobsłużone.
Zrzut rejestru:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: : 0x00000019 PRZYCZYNA:
0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF Monitor dodaje więcej szczegółów do zrzutu:
Błąd Guru Meditation typu StoreProhibited wystąpił w rdzeniu 0. Wyjątek:
nieobsłużone.
Zrzut rejestru:
PC
: 0x400f360d PS
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: zrób_coś_do_crash w /home/gus/esp/32/idf/examples/rozpocznij/
witaj_świecie/main/./hello_world_main.c:57
(wbudowane przez) inner_dont_crash w /home/gus/esp/32/idf/examples/rozpocznij/cześć_
świat/główny/./hello_world_main.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: : 0x00000019 PRZYCZYNA:
0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (wpisane przez) inner_dont_crash w /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash w /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main w /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task w /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254
Aby zdekodować każdy adres, IDF Monitor uruchamia w tle następujące polecenie: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
Uwaga: Ustaw zmienną środowiskową ESP_MONITOR_DECODE na 0 lub wywołaj plik idf_monitor.py za pomocą określonego wiersza poleceń
Systemy Espressif
32 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
opcja: idf_monitor.py –disable-address-decoding, aby wyłączyć dekodowanie adresów.
Resetowanie celu po połączeniu. Domyślnie IDF Monitor resetuje cel po nawiązaniu połączenia. Resetowanie układu docelowego odbywa się za pomocą linii szeregowych DTR i RTS. Aby zapobiec automatycznemu resetowaniu celu po nawiązaniu połączenia, należy wywołać IDF Monitor z opcją –no-reset (np. idf_monitor.py –no-reset).
Uwaga: opcja –no-reset ma takie samo działanie, nawet gdy monitor IDF jest podłączony do określonego portu (np. idf.py monitor –no-reset -p [PORT]).
Uruchamianie GDB za pomocą GDBStub. GDBStub to przydatna funkcja debugowania w czasie wykonywania, która działa na komputerze docelowym i łączy się z hostem przez port szeregowy, aby odbierać polecenia debugowania. GDBStub obsługuje polecenia takie jak odczyt pamięci i zmiennych, badanie ramek stosu wywołań itp. Chociaż GDBStub jest mniej wszechstronny niż J.TAG debugowania, nie wymaga żadnego specjalnego sprzętu (np. JTAG do mostu USB), ponieważ komunikacja odbywa się wyłącznie przez port szeregowy. Docelowy system operacyjny można skonfigurować tak, aby uruchamiał GDBStub w tle, ustawiając parametr CONFIG_ESP_SYSTEM_PANIC na GDBStub w czasie wykonywania. GDBStub będzie działał w tle, dopóki komunikat Ctrl+C nie zostanie wysłany przez port szeregowy i nie spowoduje przerwania (tj. zatrzymania wykonywania) programu przez GDBStub, umożliwiając w ten sposób GDBStub obsługę poleceń debugowania. Ponadto, program obsługi paniki można skonfigurować tak, aby uruchamiał GDBStub w przypadku awarii, ustawiając parametr CONFIG_ESP_SYSTEM_PANIC na GDBStub w przypadku awarii. W przypadku awarii GDBStub wyśle przez port szeregowy specjalny wzorzec ciągu, aby wskazać, że jest uruchomiony. W obu przypadkach (tj. po wysłaniu komunikatu Ctrl+C lub odebraniu specjalnego wzorca ciągu) IDF Monitor automatycznie uruchomi GDB, aby umożliwić użytkownikowi wysyłanie poleceń debugowania. Po zakończeniu działania GDB, docelowy system operacyjny jest resetowany przez łącze szeregowe RTS. Jeżeli linia nie jest podłączona, użytkownicy mogą zresetować swój cel (naciskając przycisk Reset na płycie).
Uwaga: W tle IDF Monitor uruchamia następujące polecenie w celu uruchomienia GDB:
xtensa-esp32-elf-gdb -ex „ustaw szeregową szybkość transmisji BAUD” -ex „docelowy zdalny PORT” -ex przerwanie kompilacji/PROJEKTU.elf :idf_target:`Hello NAZWA chip`
Monitor IDF filtrowania danych wyjściowych można wywołać poleceniem idf.py monitor –print-filter=”xyz”, gdzie –print-filter to parametr filtrowania danych wyjściowych. Wartością domyślną jest pusty ciąg znaków, co oznacza, że wydrukowana zostanie cała wartość.
Ograniczenia dotyczące tego, co drukować, można określić jako seriętag>: przedmioty, gdzietag> jest tag sznurek i jest znakiem ze zbioru {N, E, W, I, D, V, *} odnoszącym się do poziomu logowania.
Na przykładample, PRINT_FILTER="tag1:W” dopasowuje i drukuje tylko wyniki zapisane za pomocą ESP_LOGW(“tag1”, …) lub na niższym poziomie szczegółowości, tj. ESP_LOGE(“tag1″, …). Nie określono lub używając * domyślnie wybierasz poziom szczegółowości.
Uwaga: Użyj podstawowego rejestrowania, aby wyłączyć podczas kompilacji niepotrzebne dane wyjściowe za pośrednictwem biblioteki rejestrowania. Filtrowanie danych wyjściowych za pomocą monitora IDF to rozwiązanie pomocnicze, które może być przydatne do dostosowywania opcji filtrowania bez konieczności ponownej kompilacji aplikacji.
Twoja aplikacja tags nie może zawierać spacji, gwiazdek * ani dwukropków : aby zachować zgodność z funkcją filtrowania wyników.
Jeśli po ostatnim wierszu danych wyjściowych w aplikacji nie następuje znak powrotu karetki, filtrowanie danych wyjściowych może być niejasne, tzn. monitor zaczyna drukować wiersz, a później stwierdza, że wiersz ten nie powinien zostać zapisany. Jest to znany problem, którego można uniknąć, zawsze dodając znak powrotu karetki (zwłaszcza gdy bezpośrednio po nim nie następuje żaden wynik).
Systemy Espressif
33 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
ExampZasady filtrowania:
· * można użyć do dopasowania dowolnego tags. Jednakże ciąg PRINT_FILTER="*:I tag1:E” w odniesieniu do tag1 drukuje tylko błędy, ponieważ reguła dla tag1 ma wyższy priorytet niż reguła dla *.
· Domyślna (pusta) reguła jest równoważna z *:V, ponieważ pasuje do każdego tag na poziomie szczegółowym lub niższym oznacza dopasowanie wszystkiego.
· „*:N” blokuje nie tylko wyniki funkcji rejestrujących, ale także wydruki wykonane przez printf itd. Aby tego uniknąć, należy użyć *:E lub wyższego poziomu szczegółowości.
· Zasady "tag1:V”, „tag1:v”, „tag1:”, „tag1:*”, i „tag1” są równoważne. · Zasada „tag1:W tag1:E” jest równoważne z „tag1:E”, ponieważ każde kolejne wystąpienie tego samego tag
nazwa nadpisuje poprzednią. · Zasada „tag1:I tagDrukuje tylko w formacie 2:W” tag1 na poziomie szczegółowości informacji lub niższym i tag2 przy ostrzeżeniu
poziom szczegółowości lub niższy. · Reguła „tag1:I tag2:W tag„3:N” jest zasadniczo równoważne z poprzednim, ponieważ tag3:N określa
To tag3 nie powinno być drukowane. · tag3:N w regule „tag1:I tag2:W tag3:N *:V” jest bardziej znaczące, ponieważ bez tag3:N
tagMożna było wydrukować 3 wiadomości; błędy dla tag1 i tagWartość 2 zostanie wydrukowana z określonym (lub niższym) poziomem szczegółowości, a wszystkie pozostałe zostaną wydrukowane domyślnie.
Bardziej złożony przykład filtrowaniaample Poniższy fragment dziennika został pozyskany bez żadnych opcji filtrowania:
load:0x40078000,len:13564 wpis 0x40078d4c E (31) esp_image: obraz pod adresem 0x30000 ma nieprawidłowy bajt magiczny W (31) esp_image: obraz pod adresem 0x30000 ma nieprawidłowy tryb SPI 255 E (39) boot: Partycja aplikacji fabrycznej nie jest bootowalna I (568) cpu_start: Procesor Pro jest włączony. I (569) heap_init: Inicjalizacja. Pamięć RAM dostępna do dynamicznej alokacji: I (603) cpu_start: Kod użytkownika startowego procesora Pro D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range zakończyło się powodzeniem dla zakresu <54; 64) i VFS ID 1 I (328) wifi: zadanie sterownika wifi: 3ffdbf84, priorytet: 23, stos: 4096, rdzeń=0
Poniżej podano przechwycony wynik dla opcji filtrowania PRINT_FILTER="wifi esp_image:E light_driver:I":
E (31) esp_image: obraz pod adresem 0x30000 ma nieprawidłowy bajt magiczny I (328) wifi: zadanie sterownika wifi: 3ffdbf84, prio:23, stos:4096, rdzeń=0
Opcje „PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V" pokazują następujący wynik:
obciążenie: 0x40078000, len: 13564 wpis 0x40078d4c I (569) heap_init: Inicjalizacja. Pamięć RAM dostępna do dynamicznej alokacji: D (309) light_driver: [light_init, 74]: status: 1, tryb: 2
Znane problemy z monitorem IDF
Problemy zaobserwowane w systemie Windows
· Klawisze strzałek, a także niektóre inne klawisze, nie działają w GDB z powodu ograniczeń konsoli systemu Windows. · Czasami, gdy oidf.pypessits, może się zawiesić na okres do 30 sekund, zanim monitor IDF zostanie wznowiony. · Po uruchomieniu ogdbpis może się zawiesić na krótko, zanim rozpocznie komunikację z GDBStub.
Systemy Espressif
34 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie standardowej konfiguracji zestawu narzędzi dla systemów Linux i macOS
Instalacja krok po kroku Oto szczegółowa mapa drogowa, która przeprowadzi Cię przez proces instalacji.
Konfigurowanie środowiska programistycznego Poniżej przedstawiono kroki konfiguracji ESP-IDF dla komputera ESP32. · Krok 1. Zainstaluj wymagania wstępne · Krok 2. Pobierz ESP-IDF · Krok 3. Skonfiguruj narzędzia · Krok 4. Skonfiguruj zmienne środowiskowe · Krok 5. Pierwsze kroki w środowisku ESP-IDF
Krok 1. Instalacja wymagań wstępnych. Aby korzystać z ESP-IDF z ESP32, należy zainstalować pakiety oprogramowania w zależności od systemu operacyjnego. Ten przewodnik pomoże Ci zainstalować wszystko w systemach Linux i macOS.
Dla użytkowników Linuksa: Aby skompilować za pomocą ESP-IDF, potrzebne będą następujące pakiety. Polecenie, które należy uruchomić, zależy od używanej dystrybucji Linuksa:
· 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 i sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 jest nadal wspierany, ale dla lepszego doświadczenia użytkownika zalecana jest wersja CentOS 8. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Uwaga: · Do korzystania z ESP-IDF wymagana jest wersja CMake 3.16 lub nowsza. Uruchom polecenie otools/idf_tools.py install cmake, aby zainstalować odpowiednią wersję, jeśli Twoja wersja systemu operacyjnego jej nie posiada. · Jeśli nie widzisz swojej dystrybucji Linuksa na powyższej liście, sprawdź jej dokumentację, aby dowiedzieć się, którego polecenia użyć do instalacji pakietów.
W przypadku użytkowników systemu macOS ESP-IDF będzie używać wersji Pythona zainstalowanej domyślnie w systemie macOS. · Zainstaluj CMake i Ninja build: Jeśli masz HomeBrew, możesz uruchomić: brew install cmake ninja dfu-util Jeśli masz MacPorts, możesz uruchomić: sudo port install cmake ninja dfu-util W przeciwnym razie zapoznaj się ze stronami głównymi CMake i Ninja, aby uzyskać pliki do pobrania dla systemu macOS.
Systemy Espressif
35 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
· Zdecydowanie zaleca się również zainstalowanie ccache, aby przyspieszyć kompilację. Jeśli masz HomeBrew, możesz to zrobić za pomocą polecenia brew install ccache lub sudo port install ccache w systemie MacPorts.
Uwaga: Jeśli podczas dowolnego kroku pojawi się taki błąd: xcrun: błąd: nieprawidłowa ścieżka aktywnego programisty (/Library/Developer/CommandLineTools), brak xcrun w: /Library/Developer/CommandLineTools/usr/bin/xcrun
Następnie musisz zainstalować narzędzia wiersza poleceń XCode, aby kontynuować. Możesz je zainstalować, uruchamiając polecenie xcode-select –install.
Użytkownicy Apple M1 Jeśli korzystasz z platformy Apple M1 i widzisz błąd podobny do tego: OSTRZEŻENIE: katalog dla narzędzia xtensa-esp32-elf w wersji esp-2021r2-patch3-8.4.0 jest obecny, ale narzędzie nie zostało znalezione. BŁĄD: narzędzie xtensa-esp32-elf nie ma zainstalowanych wersji. Uruchom plik „install.sh”, aby je zainstalować.
lub: zsh: błędny typ procesora w pliku wykonywalnym: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Następnie należy zainstalować Apple Rosetta 2, uruchamiając polecenie /usr/sbin/softwareupdate –install-rosetta –agree-to-license
Instalowanie Pythona 3. Zgodnie z informacjami o wydaniu macOS Catalina 10.15, używanie Pythona 2.7 nie jest zalecane i Python 2.7 nie będzie domyślnie dołączony do przyszłych wersji systemu macOS. Sprawdź, jaki Python masz obecnie: python –version
Jeśli wynik jest podobny do Pythona 2.7.17, domyślnym interpreterem jest Python 2.7. W takim przypadku sprawdź również, czy Python 3 nie jest już zainstalowany na komputerze: python3 –version
Jeśli powyższe polecenie zwróci błąd, oznacza to, że Python 3 nie jest zainstalowany. Poniżej znajduje się link do błędu.view kroków instalacji Pythona 3.
· Instalację za pomocą HomeBrew można wykonać w następujący sposób: brew install python3
· Jeśli masz MacPorts, możesz uruchomić: sudo port install python38
Krok 2. Pobierz ESP-IDF. Aby tworzyć aplikacje dla ESP32, potrzebujesz bibliotek oprogramowania udostępnionych przez Espressif w repozytorium ESP-IDF. Aby pobrać ESP-IDF, przejdź do katalogu instalacyjnego i sklonuj repozytorium za pomocą git clone, postępując zgodnie z poniższymi instrukcjami, właściwymi dla Twojego systemu operacyjnego. Otwórz terminal i uruchom następujące polecenia:
Systemy Espressif
36 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF zostanie pobrany do ~/esp/esp-idf. Sprawdź Wersje ESP-IDF, aby uzyskać informacje o tym, której wersji ESP-IDF należy użyć w danej sytuacji.
Krok 3. Skonfiguruj narzędzia Oprócz ESP-IDF musisz zainstalować również narzędzia używane przez ESP-IDF, takie jak kompilator, debuger, pakiety Pythona itp. dla projektów obsługujących ESP32. cd ~/esp/esp-idf ./install.sh esp32
lub za pomocą Fish shell cd ~/esp/esp-idf ./install.fish esp32
Powyższe polecenia instalują narzędzia tylko dla ESP32. Jeśli planujesz rozwijać projekty dla większej liczby docelowych układów scalonych, powinieneś je wszystkie wypisać i uruchomić np.ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
lub za pomocą Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Aby zainstalować narzędzia dla wszystkich obsługiwanych systemów docelowych, uruchom następujące polecenie: cd ~/esp/esp-idf ./install.sh all
lub za pomocą Fish shell cd ~/esp/esp-idf ./install.fish all
Uwaga: Użytkownicy systemu macOS, jeśli na dowolnym etapie pojawi się taki błąd:urlbłąd otwarcia [SSL: CERTIFICATE_VERIFY_FAILED] weryfikacja certyfikatu nie powiodła się: nie można uzyskać lokalnego certyfikatu wystawcy (_ssl.c:xxx)
Aby zainstalować certyfikaty, możesz uruchomić polecenie Install Certificates.command w folderze Python na swoim komputerze. Szczegółowe informacje znajdziesz w artykule Błąd pobierania podczas instalowania narzędzi ESP-IDF.
Alternatywny File Pobieranie Instalator narzędzi pobiera szereg plików files dołączone do wydań GitHub. Jeśli dostęp do GitHub jest powolny, można ustawić zmienną środowiskową, aby preferowała serwer pobierania Espressifns do pobierania zasobów GitHub.
Uwaga: To ustawienie kontroluje tylko poszczególne narzędzia pobrane z wydań GitHub i nie zmienia URLSłuży do uzyskiwania dostępu do repozytoriów Git.
Aby podczas instalacji narzędzi preferować serwer pobierania Espressif, należy użyć następującej sekwencji poleceń podczas uruchamiania install.sh:
Systemy Espressif
37 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
cd ~/esp/esp-idf export IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” ./install.sh
Dostosowywanie ścieżki instalacji narzędzi. Skrypty przedstawione w tym kroku instalują narzędzia kompilacji wymagane przez ESP-IDF w katalogu domowym użytkownika: $HOME/.espressif w systemie Linux. Aby zainstalować narzędzia w innym katalogu, przed uruchomieniem skryptów instalacyjnych należy ustawić zmienną środowiskową IDF_TOOLS_PATH. Upewnij się, że Twoje konto użytkownika ma wystarczające uprawnienia do odczytu i zapisu tej ścieżki. W przypadku zmiany zmiennej IDF_TOOLS_PATH upewnij się, że jest ona ustawiona na tę samą wartość za każdym razem, gdy uruchamiany jest skrypt instalacyjny (install.bat, install.ps1 lub install.sh) i skrypt eksportowy (export.bat, export.ps1 lub export.sh).
Krok 4. Skonfiguruj zmienne środowiskowe. Zainstalowane narzędzia nie zostały jeszcze dodane do zmiennej środowiskowej PATH. Aby można było używać narzędzi z poziomu wiersza poleceń, należy ustawić kilka zmiennych środowiskowych. ESP-IDF udostępnia inny skrypt, który to umożliwia. W terminalu, w którym zamierzasz używać ESP-IDF, uruchom:
. $HOME/esp/esp-idf/export.sh
lub dla ryb (obsługiwane dopiero od wersji 3.0.0 programu Fish):
. $HOME/esp/esp-idf/export.fish
Zwróć uwagę na spację między kropką na początku a ścieżką! Jeśli planujesz często używać esp-idf, możesz utworzyć alias do wykonywania export.sh:
1. Skopiuj i wklej poniższe polecenie do swojego shellns profile (.zawodowiecfile, .bashrc, .zprofileitd.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Odśwież konfigurację, uruchamiając ponownie sesję terminala lub uruchamiając source [ścieżka do pliku profile],
na przykładample, source ~/.bashrc. Teraz możesz uruchomić get_idf, aby skonfigurować lub odświeżyć środowisko esp-idf w dowolnej sesji terminala. Technicznie rzecz biorąc, możesz dodać export.sh do swojego shellns pro.file bezpośrednio; jednak nie jest to zalecane. Takie działanie aktywuje środowisko wirtualne IDF w każdej sesji terminala (również w tych, w których IDF nie jest potrzebny), co niweczy cel środowiska wirtualnego i może mieć wpływ na inne oprogramowanie.
Krok 5. Pierwsze kroki w ESP-IDF. Skoro wszystkie wymagania zostały spełnione, kolejny temat pomoże Ci rozpocząć Twój pierwszy projekt. Ten przewodnik pomoże Ci w pierwszych krokach z ESP-IDF. Postępuj zgodnie z tym przewodnikiem, aby rozpocząć nowy projekt na ESP32 oraz zbudować, wgrać i monitorować dane wyjściowe urządzenia.
Uwaga: Jeśli jeszcze nie zainstalowałeś programu ESP-IDF, przejdź do sekcji Instalacja i postępuj zgodnie z instrukcjami, aby pobrać całe oprogramowanie potrzebne do korzystania z tego przewodnika.
Rozpocznij projekt Teraz jesteś gotowy, aby przygotować swoją aplikację dla ESP32. Możesz zacząć od projektu getstarted/hello_world z przykładuampkatalog plików w ESP-IDF.
Ważne: System kompilacji ESP-IDF nie obsługuje spacji w ścieżkach do ESP-IDF ani do projektów.
Skopiuj projekt get-started/hello_world do katalogu ~/esp:
Systemy Espressif
38 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
cd ~/esp cp -r $IDF_PATH/examples/rozpocznij/hello_world .
Uwaga: Istnieje szereg exampprojekty w exampkatalog plików w ESP-IDF. Możesz skopiować dowolny projekt w taki sam sposób jak powyżej i uruchomić go. Możliwe jest również zbudowanie examples na miejscu, bez konieczności ich wcześniejszego kopiowania.
Podłącz urządzenie. Teraz podłącz płytkę ESP32 do komputera i sprawdź, pod którym portem szeregowym jest ona widoczna. Porty szeregowe mają następujące schematy nazewnictwa:
· Linux: począwszy od /dev/tty · macOS: począwszy od /dev/cu. Jeśli nie wiesz, jak sprawdzić nazwę portu szeregowego, zapoznaj się z artykułem Nawiązywanie połączenia szeregowego z ESP32, aby uzyskać szczegółowe informacje.
Uwaga: miej pod ręką nazwę portu, ponieważ będzie ona potrzebna w kolejnych krokach.
Skonfiguruj swój projekt Przejdź do katalogu hello_world, ustaw ESP32 jako cel i uruchom narzędzie konfiguracji projektu menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
Po otwarciu nowego projektu należy najpierw ustawić cel za pomocą polecenia idf.py set-target esp32. Należy pamiętać, że istniejące kompilacje i konfiguracje w projekcie, o ile takie istnieją, zostaną wyczyszczone i zainicjowane w tym procesie. Cel można zapisać w zmiennej środowiskowej, aby całkowicie pominąć ten krok. Więcej informacji można znaleźć w sekcji „Wybór układu docelowego: set-target”. Jeśli poprzednie kroki zostały wykonane poprawnie, pojawi się następujące menu:
Rys. 17: Konfiguracja projektu – Okno główne To menu służy do konfigurowania zmiennych specyficznych dla projektu, np. nazwy i hasła sieci Wi-Fi, szybkości procesora itp. Konfigurowanie projektu za pomocą menuconfig można pominąć w przypadku projektu ohello_worldp, ponieważ to okno główneample biega z
Systemy Espressif
39 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
konfiguracja domyślna.
Uwaga: Jeśli używasz płytki ESP32-DevKitC z modułem ESP32-SOLO-1 lub płytki ESP32-DevKitM-1 z modułem ESP32-MIN1-1(1U), przed flashowaniem włącz tryb pojedynczego rdzenia (CONFIG_FREERTOS_UNICORE) w menuconfig.amples.
Uwaga: Kolory menu mogą się różnić w Twoim terminalu. Możesz zmienić wygląd za pomocą opcji –style. Aby uzyskać więcej informacji, uruchom polecenie idf.py menuconfig –help.
Jeśli korzystasz z jednej z obsługiwanych płyt programistycznych, możesz przyspieszyć proces rozwoju oprogramowania, korzystając z pakietu Board Support Package. Więcej informacji znajdziesz w sekcji Dodatkowe wskazówki.
Zbuduj projekt Zbuduj projekt, uruchamiając:
kompilacja idf.py
To polecenie skompiluje aplikację i wszystkie komponenty ESP-IDF, a następnie wygeneruje bootloader, tablicę partycji i pliki binarne aplikacji.
$ idf.py build Uruchamianie cmake w katalogu /path/to/hello_world/build Wykonywanie polecenia „cmake -G Ninja –warn-uninitialized /path/to/hello_world”… Ostrzeżenie o niezainicjowanych wartościach. — Znaleziono Git: /usr/bin/git (znaleziono wersję „2.17.0”) — Budowanie pustego komponentu aws_iot z powodu konfiguracji — Nazwy komponentów: … — Ścieżki komponentów: …
… (więcej linii wyjścia systemu kompilacji)
[527/527] Generowanie hello_world.bin esptool.py v2.3.1
Kompilacja projektu zakończona. Aby flashować, uruchom to polecenie: ../../../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 lub uruchom „idf.py -p PORT flash”
Jeśli nie ma błędów, kompilacja zakończy się, generując plik binarny oprogramowania układowego .bin files.
Wgraj na urządzenie Wgraj pliki binarne, które właśnie skompilowałeś (bootloader.bin, partition-table.bin i hello_world.bin) na płytkę ESP32, uruchamiając:
idf.py -p PORT [-b BAD] flash
Zastąp PORT nazwą portu szeregowego płyty ESP32. Możesz również zmienić prędkość transmisji flashera, zastępując BAUD potrzebną prędkością. Domyślna prędkość transmisji to 460800. Więcej informacji na temat argumentów idf.py znajdziesz w pliku idf.py.
Uwaga: opcja flash automatycznie kompiluje i wgrywa projekt, więc uruchamianie polecenia idf.py build nie jest konieczne.
Systemy Espressif
40 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Wystąpiły problemy podczas flashowania? Jeśli po uruchomieniu podanego polecenia zobaczysz błędy, takie jak „Failed to connectp”, przyczyn może być kilka. Jedną z nich mogą być problemy napotkane przez esptool.py, narzędzie wywoływane przez system kompilacji w celu zresetowania układu, interakcji z bootloaderem ROM i flashowania oprogramowania układowego. Jednym z prostych rozwiązań jest ręczny reset opisany poniżej. Jeśli to nie pomoże, więcej informacji na temat możliwych problemów znajdziesz w sekcji Rozwiązywanie problemów.
Plik esptool.py automatycznie resetuje ESP32, ustawiając linie sterujące DTR i RTS układu konwertującego USB na port szeregowy, np. FTDI lub CP210x (więcej informacji w artykule „Nawiązywanie połączenia szeregowego z ESP32”). Linie sterujące DTR i RTS są z kolei podłączone do pinów GPIO0 i CHIP_PU (EN) układu ESP32, co powoduje zmianę głośności.tagPoziomy DTR i RTS uruchomią ESP32 w trybie pobierania oprogramowania układowego. Jako byłyampsprawdź schemat płytki deweloperskiej ESP32 DevKitC.
Generalnie nie powinieneś mieć problemów z oficjalnymi płytkami rozwojowymi esp-idf. Jednak esptool.py nie jest w stanie automatycznie zresetować sprzętu w następujących przypadkach:
· Twój sprzęt nie ma linii DTR i RTS podłączonych do GPIO0 i CHIP_PU · Linie DTR i RTS są skonfigurowane inaczej · W ogóle nie ma takich linii sterujących szeregowych
W zależności od rodzaju posiadanego sprzętu może być również możliwe ręczne przełączenie płytki ESP32 w tryb pobierania oprogramowania sprzętowego (resetowanie).
· W przypadku płyt programistycznych produkowanych przez Espressif informacje te można znaleźć w odpowiednich podręcznikach wprowadzających lub podręcznikach użytkownika. Na przykładampAby ręcznie zresetować płytę rozwojową ESP-IDF, należy przytrzymać przycisk Boot (GPIO0) i nacisnąć przycisk EN (CHIP_PU).
· W przypadku innych typów sprzętu spróbuj obniżyć GPIO0.
Normalna praca Podczas flashowania zobaczysz dziennik wyników podobny do poniższego:
… 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 szeregowy /dev/ttyUSB0 Łączenie…….._ Układ to ESP32D0WDQ6 (wersja 0) Funkcje: WiFi, BT, Dual Core, Schemat kodowania Brak Kryształ to 40MHz MAC: 24:0a:c4:05:b9:14 Wysyłanie stub… Uruchamianie stub… Uruchamianie stub… Zmiana szybkości transmisji na 460800 Zmieniono. Konfigurowanie rozmiaru pamięci flash… Skompresowano 3072 bajty do 103… Zapis pod adresem 0x00008000… (100%) Zapisano 3072 bajty (skompresowano 103) pod adresem 0x00008000 w ciągu 0.0 sekund (efektywnie 5962.8 kbit/s)… Skrót danych zweryfikowano. Skompresowano 26096 bajtów do 15408… Zapis pod adresem 0x00001000… (100%) Zapisano 26096 bajtów (skompresowano 15408) pod adresem 0x00001000 w ciągu 0.4 sekund (efektywnie 546.7 kbit/s)… Skrót danych zweryfikowano. Skompresowano 147104 bajtów do 77364… Zapis pod adresem 0x00010000… (20 %) Zapis pod adresem 0x00014000… (40 %) Zapis pod adresem 0x00018000… (60 %) Zapis pod adresem 0x0001c000… (80 %)
(ciąg dalszy na następnej stronie)
Systemy Espressif
41 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
(ciąg dalszy z poprzedniej strony) Zapis pod adresem 0x00020000… (100 %) Zapisano 147104 bajtów (77364 skompresowanych) pod adresem 0x00010000 w ciągu 1.9 sekundy (efektywnie 615,5 kbit/s)… Skrót danych zweryfikowano.
Opuszczam… Twarde resetowanie przez pin RTS… Gotowe
Jeśli do końca procesu flashowania nie wystąpią żadne problemy, płyta uruchomi się ponownie i uruchomi aplikację ohello_worldp. Jeśli wolisz korzystać ze środowiska IDE Eclipse lub VS Code zamiast uruchamiać idf.py, sprawdź wtyczkę Eclipse, rozszerzenie VSCode.
Monitoruj dane wyjściowe. Aby sprawdzić, czy ohello_worldpis rzeczywiście działa, wpisz polecenie idf.py -p PORT monitor (nie zapomnij zastąpić PORT nazwą swojego portu szeregowego). To polecenie uruchomi aplikację IDF Monitor:
$ idf.py -p monitor Uruchamianie idf_monitor w katalogu […]/esp/hello_world/build Wykonywanie „python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf”… — idf_monitor na 115200 —– Wyjdź: Ctrl+] | Menu: Ctrl+T | Pomoc: Ctrl+T, a następnie Ctrl+H –ets 8 czerwca 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 czerwca 2016 00:22:57 …
Po przewinięciu logów rozruchowych i diagnostycznych w górę, powinieneś zobaczyć napis oHello world! wydrukowany przez aplikację.
… Witaj świecie! Restart za 10 sekund… To układ esp32 z 2 rdzeniami procesora, WiFi/BT/BLE, rewizją układu scalonego 1, 2 MB zewnętrznej pamięci flash. Minimalny rozmiar wolnego miejsca na stosie: 298968 bajtów. Restart za 9 sekund… Restart za 8 sekund… Restart za 7 sekund…
Aby wyjść z monitora IDF, użyj skrótu Ctrl+]. Jeśli monitor IDF przestanie działać wkrótce po przesłaniu lub zamiast powyższych komunikatów zobaczysz losowe śmieci podobne do tych poniżej, Twoja płytka prawdopodobnie korzysta z kwarcu 26 MHz. Większość projektów płytek rozwojowych wykorzystuje częstotliwość 40 MHz, więc ESP-IDF domyślnie używa tej częstotliwości.
Jeśli masz taki problem, wykonaj następujące czynności:
1. Wyjdź z monitora. 2. Wróć do menuconfig. 3. Przejdź do Konfiguracja komponentów > Ustawienia sprzętowe > Główna konfiguracja XTAL > Główna konfiguracja XTAL
częstotliwość, a następnie zmień CONFIG_XTAL_FREQ_SEL na 26 MHz. 4. Następnie ponownie zbuduj i wgraj aplikację.
Systemy Espressif
42 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
W obecnej wersji ESP-IDF główne częstotliwości XTAL obsługiwane przez ESP32 to:
· 26 MHz · 40 MHz
Uwaga: Możesz połączyć kompilację, flashowanie i monitorowanie w jednym kroku, uruchamiając: idf.py -p PORT flash monitor
Zobacz także: · Monitor IDF, gdzie znajdziesz przydatne skróty i więcej szczegółów na temat korzystania z monitora IDF. · Plik idf.py, gdzie znajdziesz pełną listę poleceń i opcji pliku idf.py.
To wszystko, czego potrzebujesz, aby zacząć korzystać z ESP32! Teraz możesz wypróbować inne, bardziej zaawansowane funkcje.amples, lub przejdź bezpośrednio do tworzenia własnych aplikacji.
Ważne: Niektóre z byłychampPliki .les nie obsługują ESP32, ponieważ wymagany sprzęt nie jest zawarty w ESP32, przez co nie może być obsługiwany. Podczas tworzeniaampproszę sprawdzić plik README file dla tabeli „Obsługiwane cele”. Jeśli jest ona obecna, wliczając cel ESP32, lub tabela w ogóle nie istnieje,ample będzie działać na ESP32.
Dodatkowe wskazówki
Problemy z uprawnieniami /dev/ttyUSB0 W niektórych dystrybucjach Linuksa może pojawić się komunikat o błędzie „Nie udało się otworzyć portu /dev/ttyUSB0” podczas flashowania ESP32. Problem można rozwiązać, dodając bieżącego użytkownika do grupy dialout.
Zgodność z Pythonem: ESP-IDF obsługuje Pythona 3.7 lub nowszego. Zaleca się aktualizację systemu operacyjnego do nowszej wersji spełniającej to wymaganie. Inne opcje obejmują instalację Pythona ze źródeł lub skorzystanie z systemu zarządzania wersjami Pythona, takiego jak pyenv.
Rozpocznij od pakietu wsparcia dla płyt Aby przyspieszyć prototypowanie na niektórych płytkach rozwojowych, możesz skorzystać z pakietów wsparcia dla płyt (BSP), które sprawiają, że inicjalizacja danej płytki jest tak prosta, jak kilka wywołań funkcji. BSP zazwyczaj obsługuje wszystkie komponenty sprzętowe zawarte na płytce rozwojowej. Oprócz definicji wyprowadzeń i funkcji inicjalizacji, BSP zawiera sterowniki dla komponentów zewnętrznych, takich jak czujniki, wyświetlacze, kodeki audio itp. BSP są dystrybuowane za pośrednictwem Menedżera komponentów IDF, więc można je znaleźć w Rejestrze komponentów IDF. Oto przykładampInstrukcja dodawania ESP-WROVER-KIT BSP do projektu: idf.py add-dependency esp_wrover_kit
Więcej exampinformacje o wykorzystaniu BSP można znaleźć w BSP exampfolder les.
Wskazówka: Aktualizacja ESP-IDF. Zaleca się okresową aktualizację ESP-IDF, ponieważ nowsze wersje naprawiają błędy i/lub oferują nowe funkcje. Należy pamiętać, że każda główna i poboczna wersja ESP-IDF ma przypisany okres wsparcia, a gdy dana gałąź wydania zbliża się do końca cyklu życia (EOL), zachęcamy wszystkich użytkowników do aktualizacji swoich projektów do nowszych wersji ESP-IDF. Aby dowiedzieć się więcej o okresach wsparcia, zapoznaj się z sekcją Wersje ESP-IDF.
Systemy Espressif
43 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 1. Rozpoczęcie pracy
Najprostszym sposobem aktualizacji jest usunięcie istniejącego folderu esp-idf i ponowne jego sklonowanie, tak jak w przypadku instalacji początkowej opisanej w kroku 2. Pobierz ESP-IDF. Innym rozwiązaniem jest aktualizacja tylko tych zmian. Procedura aktualizacji zależy od używanej wersji ESP-IDF. Po zaktualizowaniu ESP-IDF ponownie uruchom skrypt instalacyjny, na wypadek gdyby nowa wersja ESP-IDF wymagała innych wersji narzędzi. Instrukcje znajdują się w kroku 3. Skonfiguruj narzędzia. Po zainstalowaniu nowych narzędzi zaktualizuj środowisko za pomocą skryptu eksportu. Instrukcje znajdują się w kroku 4. Skonfiguruj zmienne środowiskowe.
Powiązane dokumenty · Nawiązywanie połączenia szeregowego za pomocą ESP32 · Wtyczka Eclipse · Rozszerzenie VSCode · Monitor IDF
1.4 Zbuduj swój pierwszy projekt
Jeśli masz już zainstalowany ESP-IDF i nie korzystasz ze środowiska IDE, możesz utworzyć swój pierwszy projekt z wiersza poleceń, postępując zgodnie z instrukcjami Uruchom projekt w systemie Windows lub Uruchom projekt w systemach Linux i macOS.
1.5 Odinstaluj ESP-IDF
Jeśli chcesz usunąć ESP-IDF, postępuj zgodnie z instrukcjami Odinstaluj ESP-IDF.
Systemy Espressif
44 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 2
Odniesienie do API
2.1 Konwencje API
W tym dokumencie opisano konwencje i założenia wspólne dla interfejsów programowania aplikacji (API) ESP-IDF. ESP-IDF oferuje kilka rodzajów interfejsów programistycznych:
· Funkcje, struktury, wyliczenia, definicje typów i makra preprocesora języka C zadeklarowane w nagłówku publicznym files komponentów ESPIDF. Różne strony w sekcji „Odniesienia do API” podręcznika programowania zawierają opisy tych funkcji, struktur i typów.
· Funkcje systemu kompilacji, predefiniowane zmienne i opcje. Są one udokumentowane w przewodniku systemu kompilacji. · Opcje Kconfig mogą być używane w kodzie i w systemie kompilacji (CMakeLists.txt) files. · Narzędzia hosta i ich parametry wiersza poleceń są również częścią interfejsu ESP-IDF. ESP-IDF składa się z komponentów napisanych specjalnie dla ESP-IDF, a także z bibliotek zewnętrznych. W niektórych przypadkach do biblioteki zewnętrznej dodawany jest wrapper specyficzny dla ESP-IDF, zapewniając interfejs, który jest prostszy lub lepiej zintegrowany z pozostałymi funkcjami ESP-IDF. W innych przypadkach twórcom aplikacji prezentowane jest oryginalne API biblioteki zewnętrznej. Poniższe sekcje wyjaśniają niektóre aspekty API ESP-IDF i ich zastosowanie.
2.1.1 Obsługa błędów
Większość interfejsów API ESP-IDF zwraca kody błędów zdefiniowane za pomocą typu esp_err_t. Więcej informacji na temat metod obsługi błędów można znaleźć w sekcji Obsługa błędów. Dokumentacja kodów błędów zawiera listę kodów błędów zwracanych przez komponenty ESP-IDF.
2.1.2 Struktury konfiguracji
Ważne: Prawidłowa inicjalizacja struktur konfiguracji jest istotnym elementem zapewniającym zgodność aplikacji z przyszłymi wersjami ESP-IDF.
Większość funkcji inicjalizacyjnych lub konfiguracyjnych w ESP-IDF przyjmuje jako argument wskaźnik do struktury konfiguracji. Na przykładampna:
45
Rozdział 2. Odwołanie do API
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = “my_timer”
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
Funkcje inicjalizacyjne nigdy nie przechowują wskaźnika do struktury konfiguracji, więc można bezpiecznie przydzielić strukturę na stosie.
Aplikacja musi zainicjować wszystkie pola struktury. Poniższy kod jest nieprawidłowy:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Nieprawidłowo! Pola .arg i .name nie są zainicjowane */ esp_timer_create(&my_timer_args, &my_timer);
Większość byłych żołnierzy ESP-IDFamples używają inicjatorów oznaczonych jako C99 do inicjalizacji struktur, ponieważ zapewniają zwięzły sposób ustawiania podzbioru pól i inicjowania zerami pozostałych pól:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Poprawnie, pola .arg i .name są inicjowane zerami */
};
Język C++ nie obsługuje składni wyznaczonych inicjatorów aż do C++20, jednak kompilator GCC częściowo obsługuje ją jako rozszerzenie. Używając API ESP-IDF w kodzie C++, warto rozważyć zastosowanie następującego wzorca:
esp_timer_create_args_t my_timer_args = {}; /* Wszystkie pola są inicjowane zerami */ my_timer_args.callback = &my_timer_callback;
Domyślne inicjatory
W przypadku niektórych struktur konfiguracji ESP-IDF udostępnia makra umożliwiające ustawienie domyślnych wartości pól:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG rozwija się do wyznaczonego inicjatora.
Teraz wszystkie pola mają wartości domyślne. Każde pole nadal można modyfikować: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Zaleca się używanie domyślnych makr inicjatorów, jeśli są one przewidziane dla konkretnej struktury konfiguracji.
2.1.3 Prywatne interfejsy API
Pewien nagłówek filePliki nagłówkowe w ESP-IDF zawierają interfejsy API przeznaczone wyłącznie do użytku w kodzie źródłowym ESP-IDF, a nie przez aplikacje. Takie nagłówki fileKomponenty s często zawierają w nazwie lub ścieżce parametr private lub esp_private. Niektóre komponenty, takie jak hal, zawierają tylko prywatne interfejsy API. Prywatne interfejsy API mogą zostać usunięte lub zmienione w sposób niekompatybilny pomiędzy wersjami pomocniczymi lub poprawkami.
2.1.4 Komponenty w exampprojekty
Były żołnierz ESP-IDFampPliki zawierają różnorodne projekty demonstrujące wykorzystanie interfejsów API ESP-IDF. Aby zmniejszyć duplikację kodu wamples, kilka typowych pomocników jest zdefiniowanych wewnątrz komponentów, z których korzysta wiele examples.
Systemy Espressif
46 Prześlij opinię o dokumencie
Wersja v5.0.9
Rozdział 2. Odwołanie do API
Obejmuje to komponenty zlokalizowane
Dokumenty / Zasoby
![]() |
Płyta rozwojowa Espressif Systems ESP32 Dev Kitc [plik PDF] Instrukcja użytkownika Płyta rozwojowa ESP32 Dev Kitc, ESP32, Płyta rozwojowa Dev Kitc, Płyta rozwojowa Kitc, Płyta rozwojowa, Płyta |