Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 21.08.2025
Сообщений: 19

Белый экран на дисплее при управлением восьмибитной параллельной шиной для ili9341 на stm32h723zgt6

26.09.2025, 23:58. Показов 6048. Ответов 58

Студворк — интернет-сервис помощи студентам
Здравствуйте, я начинающий в STM32, решил попробовать запустить и поуправлять дисплеем 2.4" TFT LCD TOUCH на драйвере ili9341 на stm32h723zgt6(в будущем для LVGL) в режиме восьмибитной параллельной шины, но какую бы я библиотеку не пробовал(самописную тоже), везде при прошивке МК только белый экран. Выставлять задержки повыше или частоты менять не помогает. Пока остановился на драйвере от китайцев с lcdwiki конкретно на этот дисплей изначально написанный под SPL и stm32f4, который я переписывал под HAL и свой МК, но всё равно никак. На этом же МК запускал другой дисплей по SPI на драйвере ST7735S без проблем. Пины запаяны поэтому контакт плотный. Распиновка такая же как в драйвере.
Подскажите в чем может быть проблема, заранее спасибо.
Вложения
Тип файла: rar ili9341_stm32h7_8bit.rar (12.31 Мб, 14 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2025, 23:58
Ответы с готовыми решениями:

Дисплей ILI9341 SPI не работает на STM32F105
Привет всем. Обзавёлся тут вот таким дисплеем - http://www.ebay.com/itm/1PC-2-2-Inch-SP ......

STM32F3 и TFT дисплей (ILI9341) ЧЯДНТ ?
Хочу подключить mykroTFT дисплей к плате STM32F3 Dyscovery через 16 битовый RGB интерфейс. ...

Подключение TFT ЖК-дисплея 320X240 на контроллере ILI9341 к STM32F4
Уважаемые форумчане! Кому-нибудь из вас доводилось подключать вот такой дисплей по FSMC на...

58
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
24.11.2025, 17:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Rius Посмотреть сообщение
Но лучше было бы дисплей с интерфейсом SPI и работу по SPI+DMA выбрать
В итоге оказалось для ILI9341 не лучше всё что удалось выжать это скорость обновления всего дисплея 1 рас в секунду на STM32H743. У него переключение данных и команды при помощи отдельного ногодрыга и соответственно из массива данные через DMA гнать нельзя плюсом требуется обработка данных перед передачей в порт SPI. И да максимальная скорость по SPI 48Mbit/s у этого дисплея, на большей скорости возникает мусор на экране.
0
352 / 150 / 10
Регистрация: 19.07.2024
Сообщений: 842
24.11.2025, 19:48
Цитата Сообщение от VladimirU Посмотреть сообщение
В итоге оказалось для ILI9341 не лучше всё что удалось выжать это скорость обновления всего дисплея 1 рас в секунду на STM32H743.
ruki.sys
Цитата Сообщение от VladimirU Посмотреть сообщение
и соответственно из массива данные через DMA гнать нельзя
Ложь.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
24.11.2025, 21:06
Цитата Сообщение от jcxz Посмотреть сообщение
Ложь.
Гнать то конечно можно только не целеобразно.

Добавлено через 1 минуту
Цитата Сообщение от jcxz Посмотреть сообщение
ruki.sys
Что это?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
24.11.2025, 21:26
Цитата Сообщение от jcxz Посмотреть сообщение
ruki.sys
Цитата Сообщение от VladimirU Посмотреть сообщение
Что это?
Вероятно система "руки" (кривые/прямые)..

для ILI9341 не лучше всё что удалось выжать это скорость обновления всего дисплея 1 рас в секунду
Что-то сильно сомневаюсь....
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
24.11.2025, 21:51
Цитата Сообщение от VladimirU Посмотреть сообщение
В итоге оказалось для ILI9341 не лучше всё что удалось выжать это скорость обновления всего дисплея 1 рас в секунду на STM32H743.
При периоде SCL 100 нс (10 МГц) из даташита, скорость передачи 320*240*16 бит составляет 123 мс.
Судя по eevblog, и на 48 МГц работает. А это уже 26 мс на кадр.

Цитата Сообщение от VladimirU Посмотреть сообщение
У него переключение данных и команды при помощи отдельного ногодрыга и соответственно из массива данные через DMA гнать нельзя плюсом требуется обработка данных перед передачей в порт SPI.
Так надо подать команду на заполнение прямоугольника буфером и потом гнать этот буфер через DMA на полной скорости. Хоть весь экран. А не по одному пикселю за раз.

Выглядит это как-то так:


Это ST7789 на ESP32-S3 по SPI 80 МГц.
1
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
25.11.2025, 01:36
Цитата Сообщение от VladimirU Посмотреть сообщение
В итоге оказалось для ILI9341 не лучше всё что удалось выжать это скорость обновления всего дисплея 1 рас в секунду на STM32H743.
Переходите на stm32f103, там 10 fps прекрасно достигается через SPI + DMA. Или на 1921вг015 к примеру...
0
352 / 150 / 10
Регистрация: 19.07.2024
Сообщений: 842
25.11.2025, 03:41
Цитата Сообщение от VladimirU Посмотреть сообщение
ruki.sys
Что это?
Драйвер этот у вас не инсталлирован. Без него всё работает кое-как.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 09:06
Цитата Сообщение от Rius Посмотреть сообщение
А не по одному пикселю за раз.
Так цвет каждого пикселя нужно устанавливать отдельно, вот это один фрейм одного пикселя из ДШ

и между командами те что 2A, 2B, 2C идут данные так вот переключения дисплея для приёма данных или команд осуществляется при помощи отдельного вывода который нужно переключать программно на самом МК и связать его с DMA не получится. Хороши бы если можно было переключать данные, команда через отдельные биты тогда можно было создавать массивы данных из команд и данных те что на картинки выше и эти массивы пересылать через DMA на дисплей.
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 09:19
Ещё раз перечитайте мой пост.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 09:22
Цитата Сообщение от Rius Посмотреть сообщение
Так надо подать команду на заполнение прямоугольника буфером
Нет такой команды в ILI9341
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 09:27
Цитата Сообщение от VladimirU Посмотреть сообщение
Нет такой команды в ILI9341
Да ладно? А если найду?
Она обязана в такого типа контроллерах. Ищите лучше.


Найдите здесь отдельное дёргание D/C для каждого пикселя:


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Id  Time[ns]    0:SPI: MISO data
1   1677635.00  2A Column Address Set
2   1701797.50  0
3   1701897.50  0
4   1701997.50  1
5   1702097.50  3F
 
6   1730760.00  2B Page Address Set
7   1749522.50  0
8   1749622.50  0
9   1749722.50  0
10  1749822.50  EF
 
11  1780422.50  2C Memory Write
 
12  1819635.00  0 Data ..........................
13  1819735.00  0
14  1819835.00  0
15  1819935.00  0
16  1820035.00  0
17  1820135.00  0
18  1820235.00  0
19  1820335.00  0
20  1820435.00  0
..........................
P.S.
Вот так в ILI9488:
  • Column Address Set;
  • Page Address Set;
  • Memory Write;
  • А потом фигачим данные из пулемёта DMA.
Не вижу здесь причин к иному. Но даже если есть отличия, режим такой всё равно есть.
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 09:40
Rius, хорошо бы понять из ДШ где эта команда, так то да по сути логично с начало подаём одну команду и после нее шлём без прерывно данные из сформированного массива в котором уже заложены координаты и цвет каждого пикселя, я правильно думаю?
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 09:46
Цитата Сообщение от VladimirU Посмотреть сообщение
хорошо бы понять из ДШ где эта команда
См. выше: команды 2A 2B 2C.
Цитата Сообщение от VladimirU Посмотреть сообщение
с начало подаём одну команду и после нее шлём без прерывно данные из сформированного массива в котором уже заложены координаты и цвет каждого пикселя, я правильно думаю?
Нет. Сначала создаётся окно с координатами командами 2A и 2B. Затем подаётся команда записи 2C. Затем куча данных только пикселей, располагаемых в этом окне.
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 09:58
Цитата Сообщение от Rius Посмотреть сообщение
Затем куча данных только пикселей, располагаемых в этом окне.
Понял, а цвет каждого пикселя? Как передать?
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
25.11.2025, 10:01
Цитата Сообщение от VladimirU Посмотреть сообщение
с начало подаём одну команду и после нее шлём без прерывно данные из сформированного массива в котором уже заложены координаты и цвет каждого пикселя, я правильно думаю?
Нет. Создаем в памяти "экранный буфер", в котором хранятся та же картинка, которую вы будете отображать. Потом дисплею посылаете "рисуй от этого угла до того", и через DMA значения из буфера.
Если для хранения целого кадра памяти недостаточно (а это почти всегда так), можно хранить, скажем, одну строку. А пока она выводится, обсчитывать следующую. Именно так я и делал в своих демках.

Добавлено через 1 минуту
Цитата Сообщение от VladimirU Посмотреть сообщение
Понял, а цвет каждого пикселя? Как передать?
Дисплей принимает цвет в виде 16-битного числа. Экранный буфер у вас хранит цвета пикселей как массив 16-битных чисел в том же самом формате, который удобен дисплею (не конвертировать же на лету). В чем проблема?
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 10:09
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
В чем проблема?
Я имею ввиду как совместно гнать цвет каждого пикселя из буфера?
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 10:14
Через DMA.
ВНЕЗАПНО!!!
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 10:34
Rius, всё похоже догнал, корочи с начало как вы и сказали рисуем границы изображения скажем 200х200 которое хотим передать дисплею при помощи команд 2A, 2B, и потом втыкаем команду 2C и гоним из массива через DMA уже коды цветов каждого пикселя.
0
Эксперт .NET
 Аватар для Rius
13848 / 7890 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 16:12
Да.
А ещё эти дисплеи не обязательно перерисовывать полностью за один раз. Можно рисовать по частям и не держать в оперативной памяти буфер W*H*16 бит.

Добавлено через 5 часов 36 минут
Про разные ID контроллера:



Китайцы могут прислать немного не то, хоть и работающее. У ILI9341 есть совместимые аналоги.
0
352 / 150 / 10
Регистрация: 19.07.2024
Сообщений: 842
25.11.2025, 17:02
Цитата Сообщение от VladimirU Посмотреть сообщение
Нет такой команды в ILI9341
Видимо вам какой-то дефектный ILI9341 попался.
В моём ILI9341 она есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2025, 17:02

Дисплей 3,2" 320х240 ili9341 в связке с stm32f407
доброго всем дня есть описанная выше связка дисплей по fsmc а тач по spi. криво инициализируется...

Как работать с дисплеем ILI9341 по SPI?
Всем доброго времени суток, у меня в наличии дисплей ili9341 подключенный к atmega8. Интерфейс...

Быстрое преобразование Фурье ATSAM3N4C и дисплей ILI9341
Необходимо реализовать БПФ, имеется готовая схема с подключениями в proteus. Не могу понять как это...

Инициализация дисплея на контроллере ILI9341
Всем доброго времени суток , у меня есть следующий вопрос: Где можно почитать про инициализацию...

TFT дисплей на ILI9341
Здравствуйте, пытаюсь вывести картинку на мой дисплей. Функция вывода: void TFT_Image(char const...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru