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

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

26.09.2025, 23:58. Показов 6051. Ответов 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
25.11.2025, 18:23
Студворк — интернет-сервис помощи студентам
Вот это засада у жирного МК 16 битный регистр, это выходит придётся заполнять экран 240x320 в два захода? А если задействовать двойную буферизацию DMA?
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 18:35
Ага, dma circular. По передаче одной запускать другую и готовить первую.
См. STM Урок 180. HAL. Дисплей TFT 240×320. SPI. DMA
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
25.11.2025, 18:42
Rius, то есть достаточно циркулярного режима бе двойной буферизации?
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
25.11.2025, 18:52
Можно и с двойной, наверное.
Вот пример : how to use double buffering with dma in stm32?
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
26.11.2025, 14:59
Rius, можно использовать один буфер DMA только нужно вести передачу данных из МК нп ili9341 в 32 битном формате SPI и допустим в 16 битном цвете только применить "битовую упаковку" и счётчик массива цветов разделить на два.
Наверное только для жирных контроллеров такое сойдёт или для двух ядерных, на одном ядре делать обработку графики на другом всякие другие вычисления.


C
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#define MYFON       0x2965 // #2F2F2F
#define BLACK       0x0000
#define NAVY        0x000F
#define DARKGREEN   0x03E0
#define DARKCYAN    0x03EF
#define MAROON      0x7800
#define PURPLE      0x780F
#define OLIVE       0x7BE0
#define LIGHTGREY   0xC618
#define DARKGREY    0x7BEF
#define BLUE        0x001F
#define GREEN       0x07E0
#define CYAN        0x07FF
#define RED         0xF800
#define MAGENTA     0xF81F
#define YELLOW      0xFFE0
#define WHITE       0xFFFF
#define ORANGE      0xFD20
#define GREENYELLOW 0xAFE5
#define PINK        0xF81F
 
 
uint32_t tmp_draw_pix_X[1], tmp_draw_pix_Y[1];
uint32_t tmp_draw_pix_col[76801];
uint16_t сomp = 0;
uint8_t ILI9341_Draw_Pixel(SPI_HandleTypeDef hspi, DMA_TypeDef *dmat, DMA_HandleTypeDef dma, uint16_t X2, uint16_t Y2, uint32_t Colour_1, uint16_t Colour_2)
{
 
    if((tmp_draw_pix_X[0] != X2) || (tmp_draw_pix_Y[0] != Y2))
    {
    сomp = (X2 * Y2)/2;
    tmp_draw_pix_X[0] = X2;
    tmp_draw_pix_Y[0] = Y2;
    }
 
    for(uint32_t k = 0; k < сomp; k ++)
    {
    tmp_draw_pix_col[k] = (Colour_1 << 16);
    tmp_draw_pix_col[k] |= Colour_1;
    }
 
    //tmp_draw_pix_X[0] |= (15 << 16);
    //tmp_draw_pix_Y[0] |= (50 << 16);
 
    while(ILI9341_Write_Command_Data(hspi, dmat, dma, CMD_COLUMN_ADDRESS_SET, tmp_draw_pix_X, 1, SPI_DATASIZE_32BIT)){;}
 
    while(ILI9341_Write_Command_Data(hspi, dmat, dma, CMD_PAGE_ADDRESS_SET, tmp_draw_pix_Y, 1, SPI_DATASIZE_32BIT)){;}
 
    while(ILI9341_Write_Command_Data(hspi, dmat, dma, CMD_MEMORY_WRITE, tmp_draw_pix_col, сomp, SPI_DATASIZE_32BIT)){;}
 
 
    return 0;
}
 
 
  while (1)
  {
    /* USER CODE END WHILE */
 
    /* USER CODE BEGIN 3 */
 
      //HAL_GPIO_TogglePin(D2_GPIO_Port, D2_Pin);
      ILI9341_Draw_Pixel(hspi1, DMA1, dma1_spi1, 240, 320, RED , DARKGREEN);
      HAL_Delay(500);
      ILI9341_Draw_Pixel(hspi1, DMA1, dma1_spi1, 240, 320, PINK  , WHITE);
      HAL_Delay(500);
      ILI9341_Draw_Pixel(hspi1, DMA1, dma1_spi1, 240, 320, BLUE , OLIVE);
      HAL_Delay(500);
      ILI9341_Draw_Pixel(hspi1, DMA1, dma1_spi1, 240, 320, MAROON , PINK);
      HAL_Delay(500);
  }
Добавлено через 3 часа 40 минут
А так да действительно GLCD достойный для мелких поделок и FPS на глаз достойное выдаёт.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
28.11.2025, 21:12
Rius, подскажите пожалуйста, генераторы шрифтов для монохромных GLCD видимо уже не подойдут для TFT GLCD?
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
28.11.2025, 21:14
А вы собираетесь буквы попиксельно раскрашивать или что-то ещё?
Если просто текст, то подойдут.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
28.11.2025, 21:21
С начало делаю разметку в памяти GLCD на основе размера битовой сетки шрифта через команды 2A и 2B потом заполняю этот блок выделенной памяти двумя цветами один цвет фон другой цвет сам символ. Тестовый код накидал но что то нифига не вышло, не хочу подглядывать в чужие алгоритмы.
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
28.11.2025, 21:24
Ну не хотите - не подглядывайте.
Я примерно также делал. Всё вышло.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
28.11.2025, 21:25
Цитата Сообщение от Rius Посмотреть сообщение
Если просто текст, то подойдут.
Да просто текст из шрифтов те что есть в window oc

Добавлено через 55 секунд
Цитата Сообщение от Rius Посмотреть сообщение
Я примерно также делал. Всё вышло.
Тогда буду дальше думать.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
29.11.2025, 01:29
Ну, я нечто подобное тоже делал. Шрифт хранится как массив букв 5х8, привыводе каждый пиксель растягивается в 1 - 2 - 3 - 4 раза, получается вполне различимый шрифт (хотя и не для эстетов). Поскольку хранится в формате 1 бит на пиксель, при выводе нужно конвертировать в fg / bg цвет. Это относительно затратная операция, stm32l151 толком не справлялась.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
29.11.2025, 10:01
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Это относительно затратная операция, stm32l151 толком не справлялась.
Хочу посмотреть как справится STM32H7 серии.
А ещё у него есть хардварный JPG кодек на борту хочу попробовать фотки через него выводить только там странно как то ему нужно из массива байт подавать уже подготовленную картинку, а не из файла в формате JPG.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,087
29.11.2025, 14:48
Цитата Сообщение от VladimirU Посмотреть сообщение
Хочу посмотреть как справится STM32H7 серии.
Учитывая, что на 32 МГц это "не справлялось" выглядело как разрывы строк при прокрутке текста, даже f103 на 72 МГц может хватить. А уж если заморочиться с оптимизацией...
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
03.12.2025, 19:41
Rius, Добрый день. Продолжаю мучать ili9341 подскажите есть ли какие то команды что бы можно было буферную память отразить по горизонтали? То есть если сейчас заполнение экрана идёт с верхнего правого угла то сделать что бы с верхнего левого угла шло заполнения.
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
03.12.2025, 19:48
См. раздел 8.2.29. Memory Access Control (36h) даташита.

Вообще, надо поизучать каждый регистр и попробовать его понастраивать. Тогда при надобности вспомнится, что что-то похожее было.
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,719
03.12.2025, 20:31
Цитата Сообщение от Rius Посмотреть сообщение
См. раздел 8.2.29. Memory Access Control (36h) даташита.
Спасибо оно самое, я даже как то туда и не думал смотреть всё искал отдельную одну команду типо "Отразить по вертикале."
0
Эксперт .NET
 Аватар для Rius
13849 / 7891 / 1707
Регистрация: 25.05.2015
Сообщений: 23,960
Записей в блоге: 14
14.03.2026, 22:23
Цитата Сообщение от Dushevny Посмотреть сообщение
У меня есть дисплей, который выглядит и работает как настоящий, но вместо ID из него читается 0. Ой как долго я на этом этапе "висел" прежде чем понял, что в конкретно этом дисплее с али ID тупо не реализован.
Другой вариант про нечитающийся Id:

У ILI9341/IL9488 чтение данных по SPI описано не достоверно. Интересующиеся отреверсили, что перед чтением многобайтных регистров, в частности ID, нужно писать в незадокументированный регистр 0xD9.

https://forum.arduino.cc/t/ada... /964672/24
https://forum.arduino.cc/t/wil... p/409444/4

Вот так согласно документации: 0x000000


Без D9: 0x000000


С D9: 0x009341


В документации про эту команду упоминается в примечании:
Note 2: B0 to D9 and DE to FF are for factory use of display supplier
2
1519 / 534 / 78
Регистрация: 22.09.2023
Сообщений: 1,698
15.03.2026, 10:28
Цитата Сообщение от Rius Посмотреть сообщение
Другой вариант про нечитающийся Id:
Спасибо. А команда 04 с этим D9 тоже начинает работать?
0
54 / 52 / 2
Регистрация: 23.01.2019
Сообщений: 385
15.03.2026, 11:15
ДШ от ILITEK на ILI9341v1.1
18.3.4 Display Serial Interface Timing Characteristics (4-line SPI system)


min 100ns - это max 10MHz
min 150ns - это max 6,6MHz

разгон на запись дисплей терпит.. но скорость чтения для него критична.

у меня в своё время не получалось считывать, а это узнал позже.. Мной на практике информация не проверена..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2026, 11:15

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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