Выводы 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. |