• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ucg + hspi + tft ili9341 = низкая скорость отрисовки

NAgain

New member
Всем доброго дня.

Говоря сразу - за ESP (конкретнее - devkit 0.9) сел пару дней назад, до этого AVR/STM на чистом Си. Так что и Lua, в принципе, тоже вижу то же время. Сопсна задача:

Поскольку в проекте нужен Wi-Fi, решил наконец то приобрести esp-шку и раскурить что к чему, ибо вешать ее как гейт - uart<->tcp слишком расточительно. По условиям задачи - нужно выводить информацию на экран (ili9341) при каких-либо движениях со стороны wi-fi. Тут сетевую сторону рассматривать не будем, я до нее еще не дошел, но различные примеры, найденный в сети, работают и воодушевляют.

Так вот, расстроила крайне медленная работа с дисплеем по аппаратному SPI. Полное заполнение экрана (на глаз) - где-то секунда, или чуть более того. Естественно это никуда не годится. Нужно никак не меньше 5-7 fps.

Поскольку дури у контроллера ведро (в том же сравнении с 8-битными avr-ками), не поверю что нельзя добиться нужного частоты обновления. Соответственно вопрос - куда копать, что делать ? Может ну ее эту Lua в топку тогда и стоит перелезать сразу же на SDK ? Только вот с SDK пока не разбирался. Заметил только то, что уже несколько кастомных вариантов существует.

Ну и код примера сопсна:

Код:
function init_spi_display()
    -- Hardware SPI CLK  = GPIO14
    -- Hardware SPI MOSI = GPIO13
    -- Hardware SPI MISO = GPIO12 (not used)
    -- CS, D/C, and RES can be assigned freely to available GPIOs
    local cs  = 8; -- GPIO15, pull-down 10k to GND
    local dc  = 2; -- GPIO4
    local res = 1; -- GPIO5

    spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 8, 1);
    disp = ucg.ili9341_18x240x320_hw_spi(cs, dc, res);
end

init_spi_display();

disp:begin(ucg.FONT_MODE_TRANSPARENT);
disp:clearScreen();

disp:setFont(ucg.font_helvB18_hr);
disp:setColor(255, 255, 255);
disp:setColor(1, 255, 0,0);

disp:setPrintPos(0, 25);
disp:print("Hello World!");
 

Maloi

New member
а зачем инитить ноги каждый раз ?
думаю из-за этого сильно тормозит.
 

-=Alx=-

New member
Посмотри Sming - там есть пример с этим дисплеем. На базе примеров достаточно легко делается получение данных с сервера и отображение на экране.
У меня собрана связка с тачем: rboot + обновление по воздуху + получение текста с сервера + получение графики с сервера. Ну и время оттуда же. Ресурсов хватает. Единственное для ускорения вывода графики в драйвере надо добавить функцию быстрого заполнения области по аналогии с drawFastVLine и drawFastHLine
 
Сверху Снизу