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

Ili9341 параллельный интерфейс

27.09.2018, 14:05. Показов 12194. Ответов 82
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я решил попробовать завести этот экран по параллельной 8 битной шине. Но когда я закончил портировать код с avr(я это делал в первый раз) и прошил контроллер ничего не отобразилось. Есть очень высомые подозрения что я неправильно реализовал передачу данных. У меня stm32f103ret6 так что с помощью fsmc не получится
Вложения
Тип файла: zip ili9341.zip (4.66 Мб, 58 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2018, 14:05
Ответы с готовыми решениями:

FreeRtos и Параллельный интерфейс 8080
Нужно вывести график на сенсорный экран по параллельному интерфейсу 8080, возможно ли это сделать в FriiRtos или есть какая-то более...

Ввод данных через параллельный интерфейс (стык С3)
Нужна программа на ассемблере КР580 для ввода данных через параллельный интерфейс (стык С3). Мне не нужна какая-то отлаженная программа,...

Интерфейс Comparable, Интерфейс Comparator, Интерфейс List
Добрый день, прошу подсказать с решением задачи. Или натолкнуть в какую сторону нужно думать. Не могу освоить второй пункт задачи. 1....

82
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
30.09.2018, 21:00
Студворк — интернет-сервис помощи студентам
Замените
C
1
2
3
4
5
void ILI9341_SetData(uint16_t value)
{
  uint32_t reg = (((uint32_t)value & 0xfffful) << 16) | (uint32_t)value;
  DISP_D0_GPIO_Port->BSRR = reg;
}
на
C
1
2
3
4
5
void ILI9341_SetData(uint16_t value)
{
  uint32_t reg = (((uint32_t)value ^ 0xfffful) << 16) | (uint32_t)value;
  DISP_D0_GPIO_Port->BSRR = reg;
}
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 15:33  [ТС]
Rius, в data[0] = 0x0000, data[1] = 0x001c, data[2] = 0xfc00, data[3] = 0x1cfc, data[4] = 0x001c, data[5] 0xfc00, data[6] = 0x1cfc, data[7] = 0x001c, data[8] = 0xfc00, data[9] = 0x1cfc
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 16:33
Залейте в ОЗУ не 0xff, а 0xffff. Потом считайте.
Должны появиться белые точки в углу.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 16:42  [ТС]
теперь везде 0xfcfc кроме data[0]
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 16:47
Всё работает.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 16:48  [ТС]
цвета не правильно отображаются

Добавлено через 16 секунд
теперь только синий
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 16:50
Что это значит?
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 16:53  [ТС]
Когда я пытаюсь залить экран любым цветом он заливается только синим

Добавлено через 16 секунд
Даже белый
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 16:54
Код заливки-то покажите?
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 16:56  [ТС]
Кликните здесь для просмотра всего текста
C
1
2
TFT9341_FillScreen(WHITE);
HAL_Delay(1000);


Добавлено через 49 секунд
раньше цвета хоть как то отличались
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 16:59
C
1
void TFT9341_Flood(uint16_t color, uint32_t len);
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void TFT9341_Flood(uint16_t color, uint32_t len)
{
  ILI9341_WriteCommand(0x2C);
 
  // WriteData
  ILI9341_SelectA0Mode(A0Mode_Data);
  ILI9341_SelectDirection(DataDirection_Output);
  ILI9341_ChipSelect(true);
 
  for (uint32_t i = 0; i < len; i++) {
    ILI9341_SetWR(true);
    ILI9341_SetData(color);
    // Tdst = 10ns
    __NOP();
    ILI9341_SetWR(false);
    // Tdht = 10ns
    __NOP();
  }
 
  ILI9341_ChipSelect(false);
}
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 17:05  [ТС]
Как этим пользоваться
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 17:07
Лучший ответ Сообщение было отмечено Mixed как решение

Решение

Заменить эту функцию в ваших файлах.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 17:12  [ТС]
Спасибо вам огромное за все. Теперь все работает! Мне только одно интересно: что надо сделать чтобы переназначить пины?
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 17:14
Не надо, оно и сейчас не очень, а будет ещё медленнее.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 17:15  [ТС]
просто у меня нет из-за этого ни одного свободного spi b ш2с

Добавлено через 9 секунд
*i2c
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
01.10.2018, 17:19
Изучите функции
void ILI9341_SetData(uint16_t value)
uint16_t ILI9341_GetData(void)
и принцип их работы по Reference Manual'у.
0
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 54
01.10.2018, 17:24  [ТС]
Спасибо
0
0 / 0 / 0
Регистрация: 18.12.2016
Сообщений: 113
03.10.2018, 04:40
Один в один мои метания при попытке включить ILI9341 320х240 с 16-битным интерфейсом как 8-битный интерфейс. Причем в #20 ТС сам и указал причину своих проблем...
0
Эксперт .NET
 Аватар для Rius
13405 / 7858 / 1701
Регистрация: 25.05.2015
Сообщений: 23,870
Записей в блоге: 14
03.10.2018, 05:09
Причина в модуле дисплея без нормального даташита и нежелании читать документацию на контроллер дисплея.
Иначе не было бы никаких метаний. Просто берёшь и кодишь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2018, 05:09

STM32F4 и ILI9341
Использую параллельный 16 битный интерфейс(FSMC), работает оооочень медленно. Заливка всего экрана новым цветом длиться больше минуты. В...

Помогите с ILI9341
Пришёл графический дисплейчик вот такой...

stm32f4 и ili9341
Здоров народ! купил модуль ili9341 но включить , не в какую не получается. Из протокола SPI сказанно что первый бит решает читаем мы...

Stm32f429+Ili9341
Здравствуйте. Есть такой код: char result_stw; void window_1_callback( UG_MESSAGE* msg ) { if ( msg-&gt;type ==...

Дисплей ILI9341
Здравствуйте!Может подскажите,дислей TFT-дисплей 2.2 SPI 240*320 (ILI9341),использую библиотеку arduino...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru