[Решено] ADAFRIT_ILI9341_STM - Аппаратный прокрутка сломана

Мадиас
Пт 23 марта 2018 г., 21:11
Привет,
Я не знаю много об изменениях в этой библиотеке в течение ~ 2 года, но, к сожалению, аппаратная прокрутка полностью сломана:

Это было легко настроить:
//new scroll commands #define ILI9341_VSCRDEF 0x33 #define ILI9341_VSCRSADD 0x37 void scrollAddress(uint16_t VSP) { tft.writecommand(ILI9341_VSCRSADD); // Vertical scrolling start address tft.writedata(VSP >> 8); tft.writedata(VSP); } void setupScrollArea(uint16_t TFA, uint16_t BFA) { tft.writecommand(ILI9341_VSCRDEF); // Vertical scroll definition tft.writedata(TFA >> 8); tft.writedata(TFA); tft.writedata((320 - TFA - BFA) >> 8); tft.writedata(320 - TFA - BFA); tft.writedata(BFA >> 8); tft.writedata(BFA); }

Rogerclark
Пт 23 марта 2018 г., 21:24
Привет, Матиас

К вашему сведению

Есть некоторые открытые PR и обсуждения об общении библиотеки графики, которые могут частично исправить это.

И есть также обсуждение GitHub о проблемах с функциями графической библиотеки, покидающих шину SPI в 16 -битном режиме, что также может быть причиной этой проблемы.

Я думаю, что все довольны решением обновления графической библиотеки и сохранения обратной совместимости, но не существует консенсуса по поводу оставления SPI в 8 -битном режиме, так как это замедляет библиотеку графики, если она должна переключиться на 16 бит, а затем обратно до 8 бит для многих функций

Кроме того

Мадиас
Пт 23 марта 2018 г., 21:35
Привет, Роджер!

Хорошо, это была также моя вина, потому что в прошлом я не реализовал функции прокрутки HW в библиотеке. Поэтому я все еще думаю, что эти функции потерялись (и/или забыты).
---> Решение Следующее сообщение, спасибо за правильный подсказка, Роджер!

Мадиас
Пт 23 марта 2018 г., 21:45
Хорошо, это было просто легко, решено!

Новый код: void scrollAddress(uint16_t VSP) { tft.writecommand(ILI9341_VSCRSADD); // Vertical scrolling start address tft.spiwrite(VSP); } void setupScrollArea(uint16_t TFA, uint16_t BFA) { tft.writecommand(ILI9341_VSCRDEF); // Vertical scroll definition tft.spiwrite(TFA); tft.spiwrite(320 - TFA - BFA); tft.spiwrite(BFA); }

Стивестронг
Пт 23 марта 2018 г., 22:29
Ну, вы видите @madias, 16 -битный режим имеет свои преимущества ;), Все намного проще в кодировании...

Мадиас
Пт 23 марта 2018 г., 22:48
[Стивестронг - Пт 23 марта 2018 г. 22:29] - Ну, вы видите @madias, 16 -битный режим имеет свои преимущества ;), Все намного проще в кодировании...
Я вижу это, Стив :)
Просто сплетни: теперь я помню, почему я (и все) не работал с HW Scrolling:
Во -первых: функция тихо бесполезна, потому что перемещение области является «относительным», поэтому вы не сможете прокрутить 1PX влево и поместить новый выход на x = 319, потому что наиболее правильное положение сейчас «0» - Итак, это не "огонь и забывай".
Второе: прокрутка HW очень уродливо, из -за задержки обновления дисплея.

Сплетни № 2:
Теперь я нашел идеальный код/библиотеку для XPT2046 Touch-Display Driver:
https: // github.com/paulstoffregen/xpt2046_touchscreen
Он работает с IRQ и измерением давления, поэтому вы можете легко установить смещение, и больше не требуется интерполяции (получение не менее 10-20 образцов без слишком большого количества ошибок).
https: // github.com/paulstoffregen/xpt2046_touchscreen
Работает из коробки.

Стивестронг
Пт 23 марта 2018 г. 22:54
[Мадиас - Пт 23 марта 2018 г. 22:48] - Теперь я нашел идеальный код/библиотеку для XPT2046 Touch-Display Driver:
https: // github.com/paulstoffregen/xpt2046_touchscreen
Он работает с IRQ и измерением давления, поэтому вы можете легко установить смещение, и больше не требуется интерполяции (получение не менее 10-20 образцов без слишком большого количества ошибок).
Работает из коробки.
Спасибо, что сообщили нам.
Я попробую, когда у меня будет свободное время.

Мадиас
Пт 23 марта 2018 г., 23:03
С этой библиотекой начинается с этого кода: if (ts.tirqTouched()) { if (ts.touched()) { TS_Point p = ts.getPoint(); xaxis = map(p.x, 251, 3731, 0, 320); yaxis = map(p.y, 257, 3803, 0, 240); if (p.z > 1200) < do something > (...)

Стивестронг
Пт 23 марта 2018 г., 23:05
У меня не было проблем с доступом к SD-карте в бортовом слоте ЖК-дисплеев.
Можете ли вы опубликовать фотографию своей ЖК -доски? Может быть, отличается от моего.

Мадиас
Пт 23 марта 2018 г. 23:14
Как я вижу, это фактическое 2.8 Touch ILI9341 немного отличаются, как и мои:

Сравнивать:
https: // www.aliexpress.com/item/240x320 ... 43434.HTML

Мадиас
Пт 23 марта 2018 г., 23:18
SD-карта резистор R1-R3 102, SO 1K.

Стивестронг
Сб 24 марта 2018 г. 8:53 утра
Я только что проверил свою доску, кажется, что я заменил эти резисторы на провода 8-).

Мадиас
Сб 24 марта 2018 11:14
Вы попали в точку, Стив!
Я соединил все резисторы SD -карты и на борту 3.Регулятор 3V, и он сработал!
Схема действительно странная, не совсем 5 В (из -за 3.3V только входы данных TFT) и слишком много схемы для 3.3В. Только «дизайнер» знает секрет об этом....
Теперь я тестирую все устройства (TFT, SD-Card, XPT2046) на одном порту SPI. Это действительно противно добавлять все дополнительные линии, которые вы разместили в другой ветке:
[Стивестронг - Пт 23 марта 2018 г. 22:50] - Есть PR на GitHub о проблемах с функциями библиотеки графики, покидающих шину SPI в 16 -битном режиме, что, скорее всего, является причиной этой проблемы.
Вы можете попробовать выполнить SPI.beginTransaction(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_8BIT));

Стивестронг
Солнце 25 марта 2018 г. 9:11
[Мадиас - Сб 24 марта 2018 г., 23:14] - Это действительно противно добавлять все эти дополнительные строки, которые вы разместили в другой ветке...
Что ж, если вы сгруппируете подпрограммы, связанные с ЖК -дисплее. Это действительно ооочень противно? :?

Rogerclark
Солнце 25 марта 2018 г. 9:00 вечера
Ребята

Я сделал то же самое с интерфейсом SD -карты, распадался резисторами и заменил небольшими кусочками провода.

Также поставляется 3.3v на выходное регулятор (я думаю) . Или я, возможно, закончил кормить плату 5V, когда использовал синюю таблетку и перенастроил ее, чтобы использовать регулятор на плате дисплея.

Мне нужно было бы проверить аппаратное обеспечение, которое я сделал для модуля камеры OV7670, так как я использовал SD для сохранения изображений из OV7670

Мадиас
Солнце 25 марта 2018 г. 22:18
Вот схема розыгрыша MCU-друга ILI9341:
https: // drive.Google.com/file/d/1asqutx ... sp = совместное использование

Также совершенно неясно, нужен ли нам небольшой резистор для светодиода. Для моей логики я бы сказал, что нам нужен один, потому что это не в схеме, но даже с низким сопротивлением (~ 40) дисплей слишком темный.

Mrburnette
Пн 26 марта 2018 г. 14:42
Я подозреваю, что эти доски были построены (спроектированы слишком хороши в старые времена Ардуино, когда 5.0 Вольт был стандартом дефакта. Старые чипсы AVR могли погрузиться и источник значительно больше тока, поэтому серийные резисторы и бездомная емкость не были значительно прикручены с формами волны. Это не относится к UC, которые 3.3V по дизайну.

Когда я спасаю старые логические доски и ломаю их, я использую свою станцию ​​горячего воздуха, чтобы восстановить 0 Ом резисторов SMT. В то время как маленькие закуски из проволоки, короткие резисторы выглядят намного лучше... Если это имеет значение! :ржу не могу:

Луча

Zoomx
Пн 26 марта 2018 г. 16:00
ЖК -дисплей SPI ILI9341, который у меня есть, не работает с Arduino в 5V (все они белые), но работает с STM32 в 3.3v, несмотря на то, что они были объявлены как Arduino совместимы. Я никогда не тестировал адаптер SD -карты, но я считаю, что у меня тоже есть резистор.