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

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

26.09.2025, 23:58. Показов 5625. Ответов 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,715
25.11.2025, 18:23
Студворк — интернет-сервис помощи студентам
Вот это засада у жирного МК 16 битный регистр, это выходит придётся заполнять экран 240x320 в два захода? А если задействовать двойную буферизацию DMA?
0
Эксперт .NET
 Аватар для Rius
13392 / 7847 / 1699
Регистрация: 25.05.2015
Сообщений: 23,857
Записей в блоге: 14
25.11.2025, 18:35
Ага, dma circular. По передаче одной запускать другую и готовить первую.
См. STM Урок 180. HAL. Дисплей TFT 240×320. SPI. DMA
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
25.11.2025, 18:42
Rius, то есть достаточно циркулярного режима бе двойной буферизации?
0
Эксперт .NET
 Аватар для Rius
13392 / 7847 / 1699
Регистрация: 25.05.2015
Сообщений: 23,857
Записей в блоге: 14
25.11.2025, 18:52
Можно и с двойной, наверное.
Вот пример : how to use double buffering with dma in stm32?
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
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,715
28.11.2025, 21:12
Rius, подскажите пожалуйста, генераторы шрифтов для монохромных GLCD видимо уже не подойдут для TFT GLCD?
0
Эксперт .NET
 Аватар для Rius
13392 / 7847 / 1699
Регистрация: 25.05.2015
Сообщений: 23,857
Записей в блоге: 14
28.11.2025, 21:14
А вы собираетесь буквы попиксельно раскрашивать или что-то ещё?
Если просто текст, то подойдут.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
28.11.2025, 21:21
С начало делаю разметку в памяти GLCD на основе размера битовой сетки шрифта через команды 2A и 2B потом заполняю этот блок выделенной памяти двумя цветами один цвет фон другой цвет сам символ. Тестовый код накидал но что то нифига не вышло, не хочу подглядывать в чужие алгоритмы.
0
Эксперт .NET
 Аватар для Rius
13392 / 7847 / 1699
Регистрация: 25.05.2015
Сообщений: 23,857
Записей в блоге: 14
28.11.2025, 21:24
Ну не хотите - не подглядывайте.
Я примерно также делал. Всё вышло.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
28.11.2025, 21:25
Цитата Сообщение от Rius Посмотреть сообщение
Если просто текст, то подойдут.
Да просто текст из шрифтов те что есть в window oc

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

Вообще, надо поизучать каждый регистр и попробовать его понастраивать. Тогда при надобности вспомнится, что что-то похожее было.
1
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,715
03.12.2025, 20:31
Цитата Сообщение от Rius Посмотреть сообщение
См. раздел 8.2.29. Memory Access Control (36h) даташита.
Спасибо оно самое, я даже как то туда и не думал смотреть всё искал отдельную одну команду типо "Отразить по вертикале."
0
Эксперт .NET
 Аватар для Rius
13392 / 7847 / 1699
Регистрация: 25.05.2015
Сообщений: 23,857
Записей в блоге: 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
1505 / 522 / 75
Регистрация: 22.09.2023
Сообщений: 1,651
15.03.2026, 10:28
Цитата Сообщение от Rius Посмотреть сообщение
Другой вариант про нечитающийся Id:
Спасибо. А команда 04 с этим D9 тоже начинает работать?
0
50 / 48 / 2
Регистрация: 23.01.2019
Сообщений: 377
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
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru