ESP32-S2. Исследование встроенного USB

ESP-12K-1В 2020 году компания Espressif представила три новых чипа: ESP32-S2, ESP32-S3 и ESP32-S3.

Если S3 это новый топовый контроллер ESP32, а C3 представляет новую архитектуру RISC-V, то S2 — это явный «CELERON» в мире ESP — с низкой ценой и обрезанным функционалом.

ESP32-S2 построен на одноядерном микропроцессоре Xtensa LX7 нового поколения, имеет интегрированную поддержку USB  и некоторые дополнительные интерфейсы (камера, жидкокристаллический дисплей). Зато он кроме одного ядра лишился поддержки Bluetooth, Ethernet и некоторых других (видимо мало востребованных по мнению производителя) функций.

На рынке сейчас доступны собственно микросхемы ESP32-S2, несколько SOC модулей и отладочных плат. Из производителей, кроме Espressif отметилась известная компания AI-Thinker, которая выпустила модуль со странным название ESP-12K (видимо как замену ESP8266 ESP12-E и ESP12-S) и E103-W07 от EBYTE.

ESP-12K есть в двух трудноразличимых вариантах вариантах. ESP-12K(00) — полный аналог ESP32-S2-WROOM  и ESP12K(08) — аналог ESP32-S2-WROVER с установленными 8Мб PSRAM. Все модули имеют полностью совместимые корпуса и распиновку, что позволяет распаивать их на одни и те же печатные платы.

Для экспериментов я на всякий случай заказал одну готовую плату  от AI-Thinker,ESP-12K-dev ,

модуль AI-Thinker ESP-12K (что скромно затерялся у продавца среди ESP8266 плат)ESP-12K-1

и ESP32-S2-WROOM от Espressif.DFR0743-WROOM

E103-W07 мне во время не попался, может быть при следующей закупке посмотрю ни эти модули.

Что интересно, но на всех отладочных платах ESP32-S2 установлена микросхема USB/UART CH340 или что-то подобное на UART0б что при наличии аппаратного USB наводит на размышления.

 

На данный момент занимаюсь шлюзом LoRa/WiFi и под это дело вместе с другими платками заказал и для ESP32-S2. Заодно решил проверить подключение по USB напрямую к ESP.

Схема обвязки ESP32-S2 минимальна. USB разъем с защитной сборкой диодов, две кнопки на EN и GPIO0 и стабилизатор на 3.3В

Chema0

У меня на плате живет еще RFM95 модуль с PCB антенной от TI DN024 и три светодиода.  Ширину платы определила PCB антенна

100 101

Итак, приступаю к тестированию. Подключаю через внешний переходник USB-UART

102

в порт идет отладочная информация. Все работает. Для поддержки USB нужен специальный загрузчик TINYUF2 от Adafruit. Захожу на страничку готовых сборок загрузчика и скачиваю файл  tinyuf2-muselab_nanoesp32-s2_wroom-0.7.0.zip

Распаковываю архив и буду работать с полным файлом прошивки combibde.bin. Для загрузки я буду использовать esptool.py от Arduino core for ESP32, который установлен у меня на компьютере. Перевожу ESP в режим загрузчика, для этого жму кнопку BOOT(GPIO) и RESET(EN).

Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 chip_id и получаю информацию о чипе

esptool-chip_id

Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 flash_id

esptool-flash_id

Ну и наконец набираю команду прошивки загрузчика: c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 write_flash 0x0 combined.bin

esptool-write

Нажимаю RESET и о чудо, в системе появляется USB диск на котором лежит файл с прошивкой, а после нажатия BOOT/RESET в системе появляется новый ком порт

device

Теперь можно попробовать залить скетч через USB. В последней версии Arduino core for ESP32 включена поддержка чипов S2 и C3. Выбираю плату ESP32S2 Dev Module И вижу интересные пункты меню в настройке платы:

Arduino-IDE

USB CDC (Communications Device Class)- включает виртуальный COM-порт, в который можно производить загрузку без нажатия BOOT/RESET, а также обмениваться информацией через интерфейс Serial в скетче. При этом в системе появляется последовательно два порта, один для прошивки (какой появлялся при нажатии BOOT/RESET), второй для ввода/вывода Serial интерфейса при работе. Данный режим похож на работу с платой Arduino Leonardo на Atmega32U4.

USB Firmware MSC (Mass Storage Class) — создает в системе USB диск, через который мы получаем прямой доступ к прошивке файла. То есть для загрузки прошивки мне достаточно скомпилировать файл (Экспорт бинарного файла в Arduino IDE), переименовать этот файл в FIRMWARE.BIN и переписать его на этот USB диск

USB DFU (Device Firmware Update) — загрузка прошивки через DFU утилиты. Этот метод загрузки широко практикуется в микропроцессорах STM32

Работа через USB порт имеет некоторые особенности. После каждой перезагрузки контроллера в системе передергиваются USB устройства и если в этот момент устройства заняты (открыт COM порт или USB диск), до система без зазрения совести создает последовательный порт с новым номером или диск с новой буквой

Ну и нужно учитывать, что сам загрузчик находится в Flash и может быть затерт, и для его восстановления опять потребуются манипуляции с esptool

А что у нас с ESP32-S в мире LINUX? Подключаю свою плату с ESP32-S2 по USB к своему старенькому нетбуку с Debian 10, на котором крутится у меня «умный дом» и вижу два устройства /dev/ttyACM0 и /dev/sdb соответствующие ком порту и USB-диску

Linux

Осталось проверить, насколько богат внутренний мир  USB ESP32-S2. В новой версии ESP32 core for Arduino IDE есть целый каталог примеров USB, которые работают только с ESP32-S2

В этих примерах, как создавать эмулятор USB-мыши, USB-клавиатуры, джойстика,  записывать своего вендора в USB-устройствах,  создавать доступ к USB Serial порту и USB MSC диску. В общем, получается этакий мега-леонардо с WiFi

В довершении проверяю работоспособность своей  платы: модуль RFM95 завелся на библиотеке LoRa от сандипа.

В общем первое знакомство с ESP32-S2 прошло вполне успешно. В целом, чип мне понравился, каких то особых глюков я не нашел и думаю, что в дальнейшем буду его использовать там где нужна невысокая цена и работа с USB.

Планирую в ближайшее время провести тестирование ACD 13бит, и прочих фич нового чипа ESP. «Но это уже другая история» (C)

Вы можете оставить отзыв или трекбек со своего сайта.

4 комментария на «ESP32-S2. Исследование встроенного USB»

  1. Viewer:

    Спасибо. Очень интересно и познавательно. Проект шлюза LoRa/WiFi надо предполагать коммерческий?

  2. Alex:

    Подскажите, как настроить сенсорный вход. Функция Touch Interrupt, как на обычном esp32, здесь не работает

Ваш отзыв