Witajcie moi drodzy
ESP32-S3 to nowy układ SoC firmy Espressif, który został zaprojektowany specjalnie z myślą o potrzebach rynku AIoT. Wyposażony jest w dwurdzeniowy procesor Tensilica LX7 (do pracy z częstotliwością 240 MHz) wraz dodatkowymi instrukcjami wektorowymi do akceleracji AI oraz dodatkowy procesorem ULP do obsługi trybów niskiego poboru mocy. Oprócz 512 KB wewnętrznej pamięci SRAM, jest również wyposażony w zintegrowany układ łączności Wi-Fi 2.4 GHz, 802.11 b/g/n oraz Bluetooth 5 (LE), który zapewnia obsługę dalekiego zasięgu. Posiada 45 programowalnych GPIO i obsługuje dość bogaty zestaw urządzeń peryferyjnych. W porównaniu z ESP32 obsługuje szybsze pamięci flash po SPI (w trybie Octal SPI) oraz posiada PSRAM z konfigurowalną pamięcią podręczną danych i instrukcji. Na poniższym diagramie zaprezentowane są części składowe układu ESP32-S3, gdzie odpowiednimi kolorami wyróżniono, które z nich mogą pracować w określonych trybach poboru mocy.
Pamięć wewnętrzna ESP32-S3 zawiera:
* 384 KB ROM: do uruchamiania oraz podstawowe funkcji wykorzystywane m.in. przez bootloader.
* 512 KB SRAM: na dane i instrukcje, działająca z konfigurowalną częstotliwością do 240 MHz.
* RTC FAST: 8 KB SRAM, która obsługiwana jest przez główny procesor; może przechowywać dane w trybie głębokiego uśpienia.
* RTC SLOW: 8 KB SRAM, która obsługiwana jest przez główny procesor lub koprocesor ULP; może przechowywać dane w trybie głębokiego uśpienia.
* 4 Kbit eFuse: 1792 bity są zarezerwowane dla danych użytkownika, takich jak klucz szyfrowania i identyfikator urządzenia.
* SiP flash: wbudowana pamięć PSRAM o pojemności do 8 MB, pracująca w trybie Octal SPI.
ESP32-S3 obsługuje do 1 GB zewnętrznej pamięci flash i pamięci RAM oraz wspiera sprzętowe szyfrowanie/odszyfrowywanie w oparciu o XTS-AES w celu ochrony programu i danych w pamięci flash oraz zewnętrznej pamięci RAM.
ESP32-S3 ma dwa koprocesory ULP, jeden jest oparty na architekturze zestawu instrukcji RISC-V (ULP-RISC-V), drugi na tzw. automacie skończonym (ULP-FSM). Zegarem koprocesorów jest wewnętrzny szybki oscylator RC. Te dwa koprocesory nie mogą działać jednocześnie.
ESP32-S3 obsługuje Wi-Fi 2.4 GHz (802.11 b/g/n) z szerokością pasma 20 lub 40 MHz. Wsparcie dla trybów STA, SoftAP oraz STA+SoftAP (w tym samym kanale). Podsystem Bluetooth Low Energy zapewnia duży zasięg dzięki Coded PHY. ESP32-S3 wspiera funkcjonalność antenna diversity z zewnętrznym przełącznikiem RF. Ten przełącznik może być kontrolowany przez jeden lub więcej GPIO i służyć do wyboru najlepszej anteny.
ESP32-S3 zapewnia obsługę instrukcji wektorowych w MCU, co pomocne jest się do znacznego przyspieszenia obliczeń dla SSN oraz DSP. Espressif udostępnia następujące biblioteki na github, które wykorzystują te instrukcje wektorowe:
ESP-DSP (biblioteka funkcji dla DSP): https://github.com/espressif/esp-dsp
ESP-NN (biblioteka funkcji dla SSN): https://github.com/espressif/esp-nn
ESP-WHO (przetwarzanie obrazu): https://github.com/espressif/esp-who
ESP-Skainet (inteligentny asystent głosowy): https://github.com/espressif/esp-skainet
ESP32-S3 jest również wyposażony, podobnie jak ESP32 w procesor FPU. Obsługuje on jedynie liczby zmiennoprzecinkowe o pojedynczej precyzji. Niestety wydajność tego FPU jest również podobna, jak w przypadku ESP32.
Ciekawym rozwiązaniem jest tzw. World Controller, który może podzielić zasoby sprzętowe ESP32-S3 na dwa obszary, Secure World oraz Non-Secure World w celu zapobiegania sabotażowi lub dostępowi do informacji o urządzeniu. Zadaniem takiego kontrolera jest:
* Przełączanie procesora pomiędzy Secure World oraz Non-Secure World wraz z zapisem logów tego przełączania.
* Sterowanie 15 urządzeniami peryferyjnymi DMA przełączającymi się pomiędzy Secure World oraz Non-Secure World.
* Ekranowanie (shielding) przerwań NMI procesora (sic!).
Domyślnie, wszystkie zasoby w ESP32-S3 są współdzielone. Użytkownik może natomiast przydzielić zasób do jednego z tych dwóch „światów”, korzystając z Permission Controller. Niestety nie udało mi się dotrzeć do bardziej szczegółowych informacji na temat tego rozwiązania, ani też przykładowych programów.
Dostępne są trzy tryby uśpienia, podobnie jak w przypadku ESP32:
* Modem-sleep: Procesor działa i można zmniejszyć prędkość zegara. Wi-Fi oraz BLE są wyłączone, ale połączenie Wi-Fi pozostaje aktywne. Wielkość poboru prądu przez układ zależy od wykorzystania urządzeń peryferyjnych.
* Light-sleep: Procesor jest wstrzymany. Urządzenia peryferyjne RTC, a także koprocesor ULP mogą być okresowo wybudzane przez zegar. Wszelkie zdarzenia budzenia (MAC, host, zegar RTC lub przerwania zewnętrzne) zostaną obsłużone. Połączenie Wi-Fi pozostaje aktywne. Użytkownik może decydować, jakie urządzenia peryferyjne mają być wyłączone lub utrzymane. W tym trybie układ pobiera 240 µA prądu.
* Deep-sleep: Procesor i większość urządzeń peryferyjnych jest wyłączona. Tylko pamieć RTC jest zasilana, a zasilanie urządzeń peryferyjnych RTC jest opcjonalne. Dane ostatniego połączenia Wi-Fi są przechowywane w pamięci zegara RTC, koprocesor ULP działa. W tym trybie układ pobiera 8 µA prądu.
Podobnie, jak dla pozostałych układów ESP Espressif dostarcza SDK (ESP-IDF) dla rozwoju oprogramowania w oparciu o ESP32-S3. Ostatnia wersja stabilna ESP-IDF 4.4 wspiera ESP32-S3. Dostępna jest również szczegółowa dokumentacja SDK wraz z przykładami. Oprogramowanie napisane dla ESP32 jest w pełni przenoszalne (na poziomie kodu źródłowego) do ESP32-S3, o czym przekonał się autor niniejszego artykułu
Arduino Core w najnowszej, stabilnej wersji 2.0.2 nie wspiera ESP32-S3, ale jest już wersja 2.0.3-RC1, która takie wsparcie zapewnia. Co ciekawe, najnowsza wersja rozwojowa Tasmota już korzysta z aktualnej wersji Arduino Core 2.0.3.
Espressif zaprojektował płytki rozwojowe z ESP32-S3 o nazwie ESP32-S3-DevKitC-1 (obrazek poniżej) oraz ESP32-S3-DevKitM-1. Zasadniczo różnią się one ilością dostępnej pamięci flash oraz PSRAM. Przyznam się, że nie rozumiem tej maniery umieszczania diody LED RGB (konkretnie to SK68XXMINI-HS, sterowanej zgodnie z protokołem Unipolar RZ), zamiast zwykłej diody LED. Jako mostka USB/UART użyto CP2102N, który zapewnia transfer danych do 3 Mbps. Zastosowany LDO to SGM2212 o dopuszczalnym prądzie wyjściowym 800 mA.
Na dzień pisania tego artykułu, cena tych płytek rozwojowych na popularnym chińskim portalu wynosiła ok. 150 PLN za ESP32-S3-DevKitC-1 oraz ok. 100 PLN za ESP32-S3-DevKitM-1.
Dobrą alternatywą dla płytek Espressif (lub ich klonów) jest płytka rozwojowa o nazwie NanoESP32-S3 (obrazek poniżej). Zasadnicza różnica pomiędzy NanoESP32-S3 a płytkami ESP32-S3-DevKit jest taka, że zamiast mostka USB/UART zastosowano układ APM32F103, czyli ARM Cortex-M3
W APM32F103 znajduje się firmware o nazwie ESPLink, który jest modyfikacją znanego ze świata ARM oprogramowania DAPLink. DAPLink to projekt oprogramowania typu open source, który umożliwia programowanie i debugowanie układów ARM Cortex. W NanoESP32-S3 firmware ten został zmodyfikowany dla potrzeb programowania i debugowania ESP32-S3 i występuje pod nazwą ESPLink
Na stronie producenta NanoESP32-S3 znajdują się informację o ESPLink i użyciu jego z OpenOCD-ESP32 dla celów debugowania. Oczywiście ESPLink umożliwia również ładowanie programów za pośrednictwem portu USB. Używam tych płytek (również w wersjach z ESP32-C3 oraz ESP32-S2) i mogę je polecić.
Na dzień pisania tego artykułu, cena płytek NanoESP32-S3 wynosiła od 100 do 120 PLN w zależności od modelu płytki (dostępnej wielkości pamięci PSRAM).
Na koniec krótko wspomnę o ciekawym module rozwojowym. W zasadzie jest to już praktycznie gotowe urządzenie o nazwie ESP32-S3-BOX (obrazek poniżej). Jest to platforma sprzętowa do sterowania sprzętem AGD z wykorzystaniem Voice Assistance wraz z kontrolerem dotyku, ekranem (tylko 2.4 cala z rozdzielczością 320x240), czujnikiem i kontrolerem podczerwieni oraz inteligentnej bramki Wi-Fi. Strona projektu ESP32-S3-BOX jest na github, gdzie można znaleźć wszystkie potrzebne informacje do programowania tego urządzenia.
W załączeniu umieszczam dwa dokumenty, ich najbadziej aktualne wersje: ESP32-S3 Series Datasheet oraz Technical Reference Manual. Nowsze wersje tych dokumentów można śledzić pod: Link.
---
Źródło: Espressif

ESP32-S3 to nowy układ SoC firmy Espressif, który został zaprojektowany specjalnie z myślą o potrzebach rynku AIoT. Wyposażony jest w dwurdzeniowy procesor Tensilica LX7 (do pracy z częstotliwością 240 MHz) wraz dodatkowymi instrukcjami wektorowymi do akceleracji AI oraz dodatkowy procesorem ULP do obsługi trybów niskiego poboru mocy. Oprócz 512 KB wewnętrznej pamięci SRAM, jest również wyposażony w zintegrowany układ łączności Wi-Fi 2.4 GHz, 802.11 b/g/n oraz Bluetooth 5 (LE), który zapewnia obsługę dalekiego zasięgu. Posiada 45 programowalnych GPIO i obsługuje dość bogaty zestaw urządzeń peryferyjnych. W porównaniu z ESP32 obsługuje szybsze pamięci flash po SPI (w trybie Octal SPI) oraz posiada PSRAM z konfigurowalną pamięcią podręczną danych i instrukcji. Na poniższym diagramie zaprezentowane są części składowe układu ESP32-S3, gdzie odpowiednimi kolorami wyróżniono, które z nich mogą pracować w określonych trybach poboru mocy.
Pamięć wewnętrzna ESP32-S3 zawiera:
* 384 KB ROM: do uruchamiania oraz podstawowe funkcji wykorzystywane m.in. przez bootloader.
* 512 KB SRAM: na dane i instrukcje, działająca z konfigurowalną częstotliwością do 240 MHz.
* RTC FAST: 8 KB SRAM, która obsługiwana jest przez główny procesor; może przechowywać dane w trybie głębokiego uśpienia.
* RTC SLOW: 8 KB SRAM, która obsługiwana jest przez główny procesor lub koprocesor ULP; może przechowywać dane w trybie głębokiego uśpienia.
* 4 Kbit eFuse: 1792 bity są zarezerwowane dla danych użytkownika, takich jak klucz szyfrowania i identyfikator urządzenia.
* SiP flash: wbudowana pamięć PSRAM o pojemności do 8 MB, pracująca w trybie Octal SPI.
ESP32-S3 obsługuje do 1 GB zewnętrznej pamięci flash i pamięci RAM oraz wspiera sprzętowe szyfrowanie/odszyfrowywanie w oparciu o XTS-AES w celu ochrony programu i danych w pamięci flash oraz zewnętrznej pamięci RAM.
ESP32-S3 ma dwa koprocesory ULP, jeden jest oparty na architekturze zestawu instrukcji RISC-V (ULP-RISC-V), drugi na tzw. automacie skończonym (ULP-FSM). Zegarem koprocesorów jest wewnętrzny szybki oscylator RC. Te dwa koprocesory nie mogą działać jednocześnie.
ESP32-S3 obsługuje Wi-Fi 2.4 GHz (802.11 b/g/n) z szerokością pasma 20 lub 40 MHz. Wsparcie dla trybów STA, SoftAP oraz STA+SoftAP (w tym samym kanale). Podsystem Bluetooth Low Energy zapewnia duży zasięg dzięki Coded PHY. ESP32-S3 wspiera funkcjonalność antenna diversity z zewnętrznym przełącznikiem RF. Ten przełącznik może być kontrolowany przez jeden lub więcej GPIO i służyć do wyboru najlepszej anteny.
ESP32-S3 zapewnia obsługę instrukcji wektorowych w MCU, co pomocne jest się do znacznego przyspieszenia obliczeń dla SSN oraz DSP. Espressif udostępnia następujące biblioteki na github, które wykorzystują te instrukcje wektorowe:
ESP-DSP (biblioteka funkcji dla DSP): https://github.com/espressif/esp-dsp
ESP-NN (biblioteka funkcji dla SSN): https://github.com/espressif/esp-nn
ESP-WHO (przetwarzanie obrazu): https://github.com/espressif/esp-who
ESP-Skainet (inteligentny asystent głosowy): https://github.com/espressif/esp-skainet
ESP32-S3 jest również wyposażony, podobnie jak ESP32 w procesor FPU. Obsługuje on jedynie liczby zmiennoprzecinkowe o pojedynczej precyzji. Niestety wydajność tego FPU jest również podobna, jak w przypadku ESP32.
Ciekawym rozwiązaniem jest tzw. World Controller, który może podzielić zasoby sprzętowe ESP32-S3 na dwa obszary, Secure World oraz Non-Secure World w celu zapobiegania sabotażowi lub dostępowi do informacji o urządzeniu. Zadaniem takiego kontrolera jest:
* Przełączanie procesora pomiędzy Secure World oraz Non-Secure World wraz z zapisem logów tego przełączania.
* Sterowanie 15 urządzeniami peryferyjnymi DMA przełączającymi się pomiędzy Secure World oraz Non-Secure World.
* Ekranowanie (shielding) przerwań NMI procesora (sic!).
Domyślnie, wszystkie zasoby w ESP32-S3 są współdzielone. Użytkownik może natomiast przydzielić zasób do jednego z tych dwóch „światów”, korzystając z Permission Controller. Niestety nie udało mi się dotrzeć do bardziej szczegółowych informacji na temat tego rozwiązania, ani też przykładowych programów.
Dostępne są trzy tryby uśpienia, podobnie jak w przypadku ESP32:
* Modem-sleep: Procesor działa i można zmniejszyć prędkość zegara. Wi-Fi oraz BLE są wyłączone, ale połączenie Wi-Fi pozostaje aktywne. Wielkość poboru prądu przez układ zależy od wykorzystania urządzeń peryferyjnych.
* Light-sleep: Procesor jest wstrzymany. Urządzenia peryferyjne RTC, a także koprocesor ULP mogą być okresowo wybudzane przez zegar. Wszelkie zdarzenia budzenia (MAC, host, zegar RTC lub przerwania zewnętrzne) zostaną obsłużone. Połączenie Wi-Fi pozostaje aktywne. Użytkownik może decydować, jakie urządzenia peryferyjne mają być wyłączone lub utrzymane. W tym trybie układ pobiera 240 µA prądu.
* Deep-sleep: Procesor i większość urządzeń peryferyjnych jest wyłączona. Tylko pamieć RTC jest zasilana, a zasilanie urządzeń peryferyjnych RTC jest opcjonalne. Dane ostatniego połączenia Wi-Fi są przechowywane w pamięci zegara RTC, koprocesor ULP działa. W tym trybie układ pobiera 8 µA prądu.
Podobnie, jak dla pozostałych układów ESP Espressif dostarcza SDK (ESP-IDF) dla rozwoju oprogramowania w oparciu o ESP32-S3. Ostatnia wersja stabilna ESP-IDF 4.4 wspiera ESP32-S3. Dostępna jest również szczegółowa dokumentacja SDK wraz z przykładami. Oprogramowanie napisane dla ESP32 jest w pełni przenoszalne (na poziomie kodu źródłowego) do ESP32-S3, o czym przekonał się autor niniejszego artykułu

Arduino Core w najnowszej, stabilnej wersji 2.0.2 nie wspiera ESP32-S3, ale jest już wersja 2.0.3-RC1, która takie wsparcie zapewnia. Co ciekawe, najnowsza wersja rozwojowa Tasmota już korzysta z aktualnej wersji Arduino Core 2.0.3.
Espressif zaprojektował płytki rozwojowe z ESP32-S3 o nazwie ESP32-S3-DevKitC-1 (obrazek poniżej) oraz ESP32-S3-DevKitM-1. Zasadniczo różnią się one ilością dostępnej pamięci flash oraz PSRAM. Przyznam się, że nie rozumiem tej maniery umieszczania diody LED RGB (konkretnie to SK68XXMINI-HS, sterowanej zgodnie z protokołem Unipolar RZ), zamiast zwykłej diody LED. Jako mostka USB/UART użyto CP2102N, który zapewnia transfer danych do 3 Mbps. Zastosowany LDO to SGM2212 o dopuszczalnym prądzie wyjściowym 800 mA.
Na dzień pisania tego artykułu, cena tych płytek rozwojowych na popularnym chińskim portalu wynosiła ok. 150 PLN za ESP32-S3-DevKitC-1 oraz ok. 100 PLN za ESP32-S3-DevKitM-1.
Dobrą alternatywą dla płytek Espressif (lub ich klonów) jest płytka rozwojowa o nazwie NanoESP32-S3 (obrazek poniżej). Zasadnicza różnica pomiędzy NanoESP32-S3 a płytkami ESP32-S3-DevKit jest taka, że zamiast mostka USB/UART zastosowano układ APM32F103, czyli ARM Cortex-M3


Na dzień pisania tego artykułu, cena płytek NanoESP32-S3 wynosiła od 100 do 120 PLN w zależności od modelu płytki (dostępnej wielkości pamięci PSRAM).
Na koniec krótko wspomnę o ciekawym module rozwojowym. W zasadzie jest to już praktycznie gotowe urządzenie o nazwie ESP32-S3-BOX (obrazek poniżej). Jest to platforma sprzętowa do sterowania sprzętem AGD z wykorzystaniem Voice Assistance wraz z kontrolerem dotyku, ekranem (tylko 2.4 cala z rozdzielczością 320x240), czujnikiem i kontrolerem podczerwieni oraz inteligentnej bramki Wi-Fi. Strona projektu ESP32-S3-BOX jest na github, gdzie można znaleźć wszystkie potrzebne informacje do programowania tego urządzenia.
W załączeniu umieszczam dwa dokumenty, ich najbadziej aktualne wersje: ESP32-S3 Series Datasheet oraz Technical Reference Manual. Nowsze wersje tych dokumentów można śledzić pod: Link.
---
Źródło: Espressif
Cool? Ranking DIY