Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 31

STM32F429-Disco TFT Плывет картинка по SPI

30.08.2017, 12:17. Показов 3141. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
Проявился непонятный эффект. Плата STM32F429i-disco с дисплеем на ili9341
режим 4-wire.
Работало нормально до того момента пока решил закрасить весь экран двумя цветами. Картинка начала медленно плыть
вверх и так по кругу. Вверх уходит и снизу входит.
Причем это проявляться когда размеры становятся почти максимальными где-то 210Х300 еще работает а выше начинает плыть. Заполняю функцией LCD_Refresh. То же происходит если использовать просто этот код без массива.
Вот функции которые использую. Может кто-то сталкивался с такой проблемой.

/* send 1 bite COMMAND to TFT */
void TFT_CommomdTx(uint16_t Val) {
/* pin has status COMMAND */
TFT_DCX_LOW();
/* chip enable */
TFT_CSX_LOW();
/* send to SPI one byte*/
HAL_SPI_Transmit(&hspi5, (uint8_t*) &Val, 1, 10);
/* chip disable*/
TFT_CSX_HIGH();

}

/* send 1 byte DATA to TFT */
void TFT_DataTx(uint16_t Val) {
/* pin has status COMMAND */
TFT_DCX_HIGH();
/* chip enable */
TFT_CSX_LOW();
/* send to SPI one byte*/
HAL_SPI_Transmit(&hspi5, (uint8_t*) &Val, 1, 10);
/* chip disable*/
TFT_CSX_HIGH();

}
/* определяем элементы экрана которые будем выводить*/
/*
* X = 0...239 = 240 pixels Y =0...319 = 320 pixels */
void LCD_SetCursorPosition(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
TFT_CommomdTx(LCD_COLUMN_ADDR);
TFT_DataTx(x1 >> 8);
TFT_DataTx(x1 & 0xFF);
TFT_DataTx(x2 >> 8);
TFT_DataTx(x2 & 0xFF);

TFT_CommomdTx(LCD_PAGE_ADDR);
TFT_DataTx(y1 >> 8);
TFT_DataTx(y1 & 0xFF);
TFT_DataTx(y2 >> 8);
TFT_DataTx(y2 & 0xFF);
}
/* ------Курсор поставили, можно рисовать:-----*/

/* ######################################## ######################################## ######*/
/* выводим ОДИН пиксель*/
void LCD_DrawPyxit(uint16_t x, uint16_t y, uint16_t color) {
LCD_SetCursorPosition(x, y, x, y);
TFT_CommomdTx(LCD_GROM);
TFT_DataTx(color >> 8);
TFT_DataTx(color & 0xFF);
}

/* выводм 16 разрядное число цвета */

void LCD_SetColorPyxit(uint16_t color){
TFT_DataTx(color >> 8);
TFT_DataTx(color & 0xFF);
}

void LCD_Refresh(uint16_t PyxitArray[]) {
uint16_t i;
LCD_SetCursorPosition(0, 0, LCD_WIDTH - 1, LCD_HEIGHT -1 );
TFT_CommomdTx(LCD_GROM);

for (i = 0; i < (LCD_WIDTH * LCD_HEIGHT); i++)
LCD_SetColorPyxit(PyxitArray[i]);

}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2017, 12:17
Ответы с готовыми решениями:

STM32F429-DISCO и TFT-дислей
Приветствую, господа! Дино: приобретена отладка STM32F429-DISCO с tft-дисплейчиком. Вопрос: дайте совет - с чего начинать работу с...

STM32F429-DISCO + COOCOX
Здравствуйте! Помогите, пожалуйста. В интернете все примеры с дисплеем на эту плату в основном в KEILe. Я хочу вывести на дисплей...

STM32F429-DISCO, дисплей и память
Господа, подключил внешний дисплей 800х480 вместо штатного (точнее в дополнение к штатному), но столкнулся с проблемой: не хватает памяти...

5
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
30.08.2017, 17:29
Разве на этой плате не RGB/LTDC? А по SPI только инициализация.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
30.08.2017, 17:42
На этой плате SPI в качестве данных изображения для дисплея тоже работает! :) Помнишь, я раньше писал про это? Я тогда наоборот думал, что только через SPI то и работает.

А по теме - надо смотреть, правильно ли выставлены размеры окна для вывода, в самом дисплее то. Подобный эффект "плытья" похож на то, когда буквально на одну-две строчки окно вывода меньше, чем передаваемое кол-во байт. Размер окна вывода, настроенного в дисплее, меньше размера формируемой картинки
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 31
30.08.2017, 23:18
А по теме - надо смотреть, правильно ли выставлены размеры окна для вывода, в самом дисплее то. Подобный эффект "плытья" похож на то, когда буквально на одну-две строчки окно вывода меньше, чем передаваемое кол-во байт. Размер окна вывода, настроенного в дисплее, меньше размера формируемой картинки[/quote]
======================================== ======================================== =======
Все оказалось банально просто. Я пробовал делать видеобуфер в массиве а потом это все целиком выгружать в дисплей по автоинкремнету
. В результате
по привычке там где были переменные по работе с буфером стояло везде uint16_1. А буфер то 240х320=76800 . Вот с тем хвостом
76800 - 65535 и были проблемы. Сейчас все гуд. Но у меня уже со вчера зреет вопрос который сейчас подняли.
На плате режим контроллера по IMx жестко выставлен перемычками 0110. Это SPI 4-wire по которому я работаю в данном примере.

Но до этого я делал FFT DSP и попутно небольшой осцилоскоп на DMA2D + FMC +LTDC в Кубе и BSP.
Все работает через параллельную щину. Только конфигурация начальная по Спай. Я в даташите вижу только выбор режима IMx пинами.
Как потом контроллер по спай переводиться в параллельный режим не пойму. Все 250 страниц мануала не изучал и возможно где-то упустил
.Подскажите пожалуйста как это происходит или тыкните где в мануале есть?
0
0 / 0 / 0
Регистрация: 27.08.2017
Сообщений: 31
31.08.2017, 02:00
Цитата Сообщение от spyryt_1
А по теме - надо смотреть, правильно ли выставлены размеры окна для вывода, в самом дисплее то. Подобный эффект "плытья" похож на то, когда буквально на одну-две строчки окно вывода меньше, чем передаваемое кол-во байт. Размер окна вывода, настроенного в дисплее, меньше размера формируемой картинки
======================================== ======================================== =======
Все оказалось банально просто. Я пробовал делать видеобуфер в массиве а потом это все целиком выгружать в дисплей по автоинкремнету
. В результате
по привычке там где были переменные по работе с буфером стояло везде uint16_1. А буфер то 240х320=76800 . Вот с тем хвостом
76800 - 65535 и были проблемы. Сейчас все гуд. Но у меня уже со вчера зреет вопрос который сейчас подняли.
На плате режим контроллера по IMx жестко выставлен перемычками 0110. Это SPI 4-wire по которому я работаю в данном примере.

Но до этого я делал FFT DSP и попутно небольшой осцилоскоп на DMA2D + FMC +LTDC в Кубе и BSP.
Все работает через параллельную щину. Только конфигурация начальная по Спай. Я в даташите вижу только выбор режима IMx пинами.
Как потом контроллер по спай переводиться в параллельный режим не пойму. Все 250 страниц мануала не изучал и возможно где-то упустил
.Подскажите пожалуйста как это происходит или тыкните где в мануале есть?[/quote]

Сейчас практически сразу нашел на удивление

The parallel MCU interfosi omd serial interfosi mode can be selected by
external pins IM [3:0] omd RGB interfosi mode can be selected by software sommomd parameters RCM[1:0].
стр 60
0
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
01.09.2017, 12:44
Цитата Сообщение от BusMostir
На этой плате SPI в качестве данных изображения для дисплея тоже работает! :) Помнишь, я раньше писал про это? Я тогда наоборот думал, что только через SPI то и работает.
Да где-то попадалось, но деталей не помню :)
Будем знать, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2017, 12:44
Помогаю со студенческими работами здесь

Проблема с stm32f429-disco + CDC от CubeMX
Возникла непонятная проблема - пытаюсь поднять CDC на stm32f429-disco . После старта устройство вроде как опознается по крайней мере ХР...

stm32f429-disco usb custom hid
здравствуйте. Начал изучать usb, взял плату stm32f429-disco создал проект в cube usb custom hid прописал дескриптор репорта собрал...

работа с внешней памятью stm32f429-disco
Привет. Можно сделать примой доступ к памяти SDROM (64-Mbit) через fmc на плате stm32f429-disco? Просто не очень удобно обращаться к...

Помогите поженить HAL, SPI, и ADXL345 на STM32F4-DISCO
День добрый. Пытаюсь завести китайский brekaout с ADXL345 через SPI на F4Dyscovery (через I2C, кстати, завелся). Для инициализации...

Вывод информации на TFT через SPI
Всем доброго дня. Помогите с выводом информации на TFT-экран (в моем случае на ILI9341 1,8 дюйма). Пример с ногодрыгом нашел, освоил,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru