Программирование ARM ESP32-C3: встроенный интерфейс USB в качестве консоли USB Serial / контроллера JTAG Sun, April 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

ESP32-C3: встроенный интерфейс USB в качестве консоли USB Serial / контроллера JTAG Печать
Добавил(а) microsin   

На чипах ESP со встроенным в кристалл USB Serial/JTAG Controller можно использовать часть этого контроллера, которая реализует последовательный порт (CDC), для работы последовательной консоли вместо того, чтобы использовать для этой цели UART вместе с внешней микросхемой моста USB-UART (наподобие CH340x, FT2232RL и т. п.). ESP32-C3 содержит на кристалле такой контроллер USB, предоставляющий следующие функции:

• Двунаправленная последовательная консоль, которую можно использовать как IDF Monitor или другой serial-монитор для отладочных сообщений.
• Прошивка FLASH с помощью утилиты esptool.py и команды idf.py flash [2].
• Отладка JTAG с использованием например OpenOCD, одновременно с работой serial-консоли.

Обратите внимание, что в отличие от некоторых чипов Espressif с периферийным устройством USB OTG, контроллер USB Serial/JTAG это устройство с фиксированной функцией, реализованной полностью аппаратно. Это значит, что USB Serial/JTAG Controller нельзя переконфигурировать на использование других функций, кроме как каналов обмена последовательными сообщениями (USB CDC) и отладки JTAG.

[Аппаратные требования]

Подключите ESP32-C3 к сигналам порта USB следующим образом:

GPIO USB
IO19 D+ (зеленый провод)
IO18 D- (белый провод)
GND GND (черный провод)
  +5V (красный провод)

На некоторых платах разработчика уже есть коннектор USB для прямого подключения USB Serial/JTAG Controller [3], в таком случае никаких дополнительных соединений не требуется.

[Программная конфигурация]

Функция консоли USB может быть разрешена с использованием опции CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG через утилиту конфигурирования menuconfig (см. CONFIG_ESP_CONSOLE_UART). После того, как эта опция разрешена, выполните сборку проекта, как обычно.

Альтернативно вы можете получить доступ к выводу через порт usb_serial_jtag, однако убедитесь, что выбрана опция CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG среди вариантов ESP_CONSOLE_SECONDARY.

Предупреждение: если кроме вывода сообщений вы также хотите получить и ввод, или использовать REPL вместе с консолью, то выберите CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG.

[Выгрузка приложения]

USB Serial/JTAG Controller может автоматически перевести ESP32-C3 в режим загрузки прошивки. Просто выполните прошивку как обычно (idf.py flash), но при этом укажите в своей системе порт контроллера USB Serial/JTAG: idf.py flash -p PORT, где вместо PORT укажите правильное имя порта.

Ограничения. Существует несколько ограничений для использования функции консоли USB. Они могут быть незначительными, что зависит от типа вашего разрабатываемого приложения и от самого рабочего процесса разработки.

1. Если приложение случайно переконфигурирует ножки порта, используемые для периферийного устройства USB (GPIO18 и GPIO19), или запретит USB Serial/JTAG Controller, то устройство исчезнет из системы хоста разработки. После исправления этой проблемы в приложении необходимо вручную активировать необходимый режим загрузки ESP32-C3 путем подтяжки к лог. 0 ножки GPIO9 и сброса чипа.

2. Если приложение войдет в режим глубокого сна (deep sleep mode), то устройство USB CDC также отключится от системы хоста разработки.

3. Поведение внешней микросхемы физического моста USB-to-serial незначительно отличается от поведения USB Serial/JTAG Controller, если приложение ESP-IDF не прослушивает приходящие байты. Микросхема моста USB-to-serial будет просто посылать байты в (не прослушивающий их) чип ESP32-C3, в то время как USB Serial/JTAG Controller заблокирует выполнение кода, пока приложение не прочитает оттуда байты. Это может привести к тому, что программа терминала будет выглядеть как зависшая.

4. Устройство USB CDC не будет нормально работать в режимах сна (sleep modes) из-за отсутствия тактов APB в этих режимах. Это включает режимы deep-sleep, light-sleep (а также automatic light-sleep).

5. Если устройство USB CDC используется, то ток потребления в режимах сна будет выше. Причина в том, что разработчики ESP32-C3 по умолчанию оставили устройство USB CDC в рабочем состоянии после software reset.

Повышенная потребляемая мощность в режимах сна связана с тем, что программа сохраняет тактирование во время сброса, чтобы устройство USB CDC оставалось активным. Как побочный эффект такты также остаются активными в режимах сна. Существует одно исключение: тактирование будет сохраняться только когда порт USB CDC реально используется (например транзакцией данных), поэтому если, к примеру, ваше устройство USB CDC на ESP32-C3 подключено к power-банку или батарее вместо работающего хоста USB (например компьютер PC), то потребление энергии не повысится.

Если все еще нужно сохранить низкое энергопотребление в режимах сна:

1. Если вы не используете порт USB CDC, то делать ничего не надо. Программа определит, что устройство CDC подключено к правильному хосту USB перед входом в сон, и тактирование сохранится только в том случае, когда хост организовал подключение (т. е., например, открыл порт USB CDC в программе терминала). Иначе при переходе в режим сна такты будут выключены, как обычно.

2. Если вы используете порт USB CDC, то запретите menuconfig-опцию CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB. Тактирование включится, как обычно, во время software reset, а также в режимах сна. В этих случаях устройство USB CDC может быть отключено от хоста.

[Ссылки]

1. ESP32-C3 USB Serial/JTAG Controller Console site:docs.espressif.com.
2. ESP-IDF Build System.
3. ESP32-C3 Development Board site:aliexpress.com.
4Выбор режима загрузки ESP32-C3.

 

Добавить комментарий


Защитный код
Обновить

Top of Page