Программирование ARM ESP32-C3: можно ли использовать выводы JTAG как порты GPIO? Fri, August 29 2025  

Поделиться

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

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


ESP32-C3: можно ли использовать выводы JTAG как порты GPIO? Печать
Добавил(а) microsin   

Выводы ESP32-C3JTAG можно использовать как выводы портов общего назначения (general-purpose input/output, GPIO), но следует учитывать несколько важных моментов, касающихся использования различных вариантов JTAG, и как это нужно правильно конфигурировать. Т. е. необходимо сначала определиться, что вы используете в своем проекте в качестве интерфейса JTAG (если используете его вообще).

1. Интерфейс USB_SERIAL_JTAG (по умолчанию):

По умолчанию ESP32-C3 использует встроенное периферийное устройство USB_SERIAL_JTAG для JTAG-отладки, вывода текстовых сообщений и для перепрошивки кода. USB_SERIAL_JTAG использует ножки портов GPIO18 (D-, вывод 25 корпуса) и GPIO19 (D+, вывод 26 корпуса). Эти выводы могут быть задействованы как обычные порты GPIO, и когда используется драйвер ESP-IDF GPIO (v4.4 и более свежий), pull-up резистор по умолчанию на USB D+ автоматически запрещается, позволяя использовать этот вывод порта как стандартный GPIO без дополнительной конфигурации.

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

Если же вы не используете USB_SERIAL_JTAG и не используете вообще USB (например прошиваете свой чип ESP32-C3 через UART), то можете свободно использовать ножки портов GPIO18 и GPIO19 как GPIO.

2. Внешние адаптеры JTAG:

Если вы выбрали использование внешнего адаптера JTAG, то интерфейс JTAG может быть переключен на выводы портов GPIO4 (TMS, вывод 9 корпуса), GPIO5 (TDI, вывод 10 корпуса), GPIO6 (TCK, вывод 12 корпуса) и GPIO7 (TDO, вывод 13 корпуса).

Чтобы разрешить этот интерфейс, вам следует прошить DIS_USB_JTAG eFuse, используя утилиту espefuse.py. Это действие полностью запретит внутреннее USB_SERIAL_JTAG соединение с портом JTAG, освобождая выводы GPIO18 и GPIO19 для других целей.

После того, как был прошит IS_USB_JTAG eFuse и подключен внешний JTAG-адаптер к GPIO4-GPIO7, эти выводы становятся исключительно для функционала JTAG и не могут одновременно использоваться как GPIO. И наоборот - если фьюз IS_USB_JTAG не прошит, то по умолчанию ножки портов GPIO4-GPIO7 можно свободно использовать как порты ввода/вывода.

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

 

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


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

Top of Page