Ошибка параллельной компиляции ESP32 TFT_eSPI 8-бит
Я компилирую библиотеку TFT_eSPI для Arduino ESP32 в 8-битном параллельном режиме. Когда я компилирую ее в режиме SPI, то ошибок не возникает, но когда я выбираю 8-битный параллельный режим в файле настроек пользователя, то появляется ошибка:
c:\Users\yamtech\Documents\Arduino\libraries\TFT_eSPI\Processors/TFT_eSPI_ESP32.c: In member function 'uint8_t TFT_eSPI::readByte()':
c:\Users\yamtech\Documents\Arduino\libraries\TFT_eSPI\Processors/TFT_eSPI_ESP32.c:113:9: error: 'gpio_input_get' was not declared in this scope; did you mean 'gpio_num_t'?
113 | reg = gpio_input_get(); // Read three times to allow for bus access time
| ^~~~~~~~~~~~~~
| gpio_num_t
exit status 1
Compilation error: exit status 1
Я уже использую новую среду Arduino IDE с последней платой Arduino ESP32 от Espressif, но сбой все равно происходит.
Менеджер доски объявлений: https://dl.espressif.com/dl/package_esp32_index.json
Я обнаружил, что новая версия gpio.h не содержит gpio_input_get(), но в более старых версиях эта функция есть.
@Adil Ahmed, 👍-2
Обсуждение1 ответ
Лучший ответ:
В новом esp-idf (V5.x) конструкция GPIO не так легко доступна всем пользователям, как раньше. По этой теме есть сообщение об ошибке на GitHub idf issues 9184.
По данным Espressif, похоже, что низкоуровневый доступ к GPIO изначально не предполагался пользователям. Вместо этого это низкоуровневая библиотека, обеспечивающая быстрый доступ к выводам, напрямую используя регистры выводов. Функция gpio_input_get() отлично работает, если фреймворк ESP32 Arduino использует esp-idf v4.x, но может не работать с ядром esp-idf v5.x. По какой-то причине Espressif решила убрать её и усложнить использование.
В TFT_eSPI уже есть исправление этой проблемы, которое будет реализовано в следующем выпуске. Подробнее об этом можно узнать в ошибке № 2628. Тем временем вы можете вручную заменить файл Processors/TFT_eSPI_ESP32.h в библиотеке на новый, который, по сути, добавляет следующие заголовочные файлы для поддержки низкоуровневого доступа к GPIO:
#include "soc/spi_reg.h"
#include "driver/spi_master.h"
#include "hal/gpio_ll.h"
Также есть сообщение на форуме Arduino, в котором утверждается, что gpio_input_get() (все еще) работает с использованием PlatfromIo. Полагаю, это работает, потому что PlatformIo еще не обновился до esp-idf 5.x.
Спасибо, вы правы, gpio_input_get() отлично работает, если фреймворк ESP32 Arduino использует esp-idf v4.x, но не работает с esp-idf v5.x., @Adil Ahmed
- Код для вывода ST7789 NO CS — с использованием XIAO ESP32C3
- Как заставить ESP32 работать с 3,5-дюймовым дисплеем RPi на базе ILI9486 с помощью SPI в Arduino IDE?
- Драйвер Arduino ESP32F-TFT-1.44
- Установка значения float до двух знаков после запятой
- ESP32-CAM первый: 0x8 TG1WDT_SYS_RESET загрузочный цикл
- ESP32 в Arduino-IDE с FS.h и SPIFFS
- esp32 Stack canary watchpoint срабатывает
- Проверка размера во флэш-памяти Esp32
Добро пожаловать в SE/Arduino! Ознакомьтесь с [туром], чтобы узнать, как работает этот сайт, а также прочитайте раздел «[спросить]» и другие страницы [помощи]., @the busybee
Как вы хотите решить проблему? Например, вы можете самостоятельно исправить исходный код библиотеки или создать тикет в проекте библиотеки. Если вы приняли решение, пожалуйста, вернитесь и [отредактируйте] или удалите свой вопрос., @the busybee
какой у вас конкретный вопрос? ... пожалуйста, добавьте в свой пост конкретный вопрос, на который можно ответить, @jsotola
Мой вопрос очень прост: я просто хочу решить проблему с **gpio_input_get();**, которая не определена в **gpio.h**, а эта функция используется в библиотеке 8-Bit Parallel ESP32 TFT_eSPI., @Adil Ahmed
не используйте эту функцию, тогда... «Я хочу решить...» — это не вопрос... это описание того, что вы пытаетесь сделать., @jsotola
Я старался сделать свой вопрос простым и понятным, нужна только альтернатива **gpio_input_get();**, @Adil Ahmed
в том-то и дело, что вы не задали никаких вопросов... почему вы не можете спросить
какова альтернатива gpio_input_get(); ?, @jsotola