Это видео недоступно.
Сожалеем об этом.
Программирование МК STM32. УРОК 37. Дисплей TFT 240x320 8bit. Часть 1
HTML-код
- Опубликовано: 17 авг 2024
- Программирование на СИ в среде Keil μVision.
Пишем код под микроконтроллер STM32F407VG на плате STM32F4DISCOVERY.
Продолжаем работать с библиотекой HAL. СВ данном занятии мы попытаемся подключить к микроконтроллеру STM32F407VG дисплей TFT разрешением 240x320 по шине 8 bit.
Также вместе с данным дисплеем на данной плате установлен контроллер дисплея ILI9341, которым мы и будем управлять.
В этой части мы ознакомимся с дисплеем, кратко познакомимся с контроллером дисплея, создадим проект и напишем некоторые макроподстановки.
Промежуточную информацию по работе с дисплеем мы будем отображать на дисплее LCD 20x4, подключенном через переходник I2C.
Купить отладочную плату STM32F4-DISCOVERY можно здесь ali.pub/178fif
Где приобрести именно такой дисплей TFT 240x320, написать затрудняюсь, так как может прийти не всегда именно такой дисплей, какой заявлен в продаже. Либо придет подключаемый по SPI, либо с другим контроллером. Поэтому все тонкости уточняйте у продавца.
Дисплей 20x4 можно приобрести здесь ali.pub/vk7tl
Навигация по видео:
00:00 Введение
00:29 Кратко о дисплее и его подключении
03:14 Настроим проект и сгенерируем проект для Keil
09:30 Начнем писать исходный код
11:48 Напишем макросы для адресации FSMC
20:10 Напишем функции задержек, необходимых для работы с дисплеем
22:56 Посмотрим подключение дисплея сначала в Cube MX, а затем и к плате Discovery
Рекомендуется также перед просмотром данного урока просмотреть данное видео:
AVR. УРОК 34. Часть 1. Дисплей TFT 240x320 8bit ILI9341 • Программирование МК AV...
УРОК 36. HAL. USB. Host. Mass Storage Class. Часть 1 • Программирование МК ST...
УРОК 36. HAL. USB. Host. Mass Storage Class. Часть 2 • Программирование МК ST...
Текстовая версия урока здесь narodstream.ru/...
Группа в контакте club1166...
Группа в Одноклассниках ok.ru/group/529...
Группа в Facebook / 236905359999556
Мой сайт "Программирование МК" narodstream.ru
Форум narodstream.ru/...
Вы можете помочь проекту:
ЮMoney
yoomoney.ru/to...
Webmoney
Z341906933112
Карта Сбербанка (МИР)
2202201799288929
Можно в USDT
1) Сеть:TRC20
Адрес: TBBPFk5Widf1CYvF7Xk5ssKXeiPJHwtMgS
2) Сеть: BSC BNB Smart Chain (BEP20) (комиссия намного меньше)
Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17
3) Сеть: Huobi ECO Chain (HECO) (комиссия еще меньше)
Адрес: 0x2e38754DF1e54649Bf0D5CD6fD6D8c96a9f22f17
Отлично! Сразу заработало.
Ура! Дождался)))
очень интересно с дисплеем получилось!
Это только начало. Первая из девяти частей.
"Лучшее, конечно, впереди!"
Не знаю, наверное это уже не актуально, но вот мой вариант перевода 24 бита в 16
// Перевод 24 битного цвета в 16 битный
#define RGB16(color) (UWORD)(((color&0xF80000)>>8)|((color&0x00FC00)>>5)|((color&0x0000F8)>>3))
can you show your connection of stm32f4 board with LCDtft board. I can't understand Russian in your video ..
NE1 -> CS
A16 -> RS
Добрый день! Чем обусловлен этот выбор? У меня на плате на разъем TFT выведены NE4 и A6, в видео вы просто сказали что так надо а можно подробнее объяснить.
Вечер добрый! Для эксперимента использую такую же связку, только по SPI. Нашёл на гитхабе библиотеку по работе с данным дисплеем, похожую как у Вас. Всё работает. Фигуры и картинки на экран выводит. Встал вопрос по поводу динамической смены яркости, что бы можно было делать смену картинок в затемнённом режиме, а потом увеличивать яркость экрана. По даташиту к экрану на стр. 141 нашёл регистр Write Display Brightness (51h). Отправляю команду 0х51, затем передаю данные о яркости (судя по даташиту от 0х00 до 0хFF). Но это никакого эффекта не даёт. Экран светится всегда с одной яркостью. Видел парочку постов на буржуйских сайтах с такой же проблемкой. Ответа там не нашёл. Вы не пробовали играться с яркостью на этом дисплее?
Всё конечно хорошо но у меня на STM32F103C8T6 нету FSMC. Не могли бы вы сделать урок как этот кристал подружить с TFT.
Я перенёс библиотеку с ардуино на stm32, там используется дрыгание пинами.
Но почему то на ардуино FillScreen(); прорисовывает кадр за 1 сек, а в STM на это уходит около 2х сек.(черный цвет прорисовывает раза в 2 быстрее).
И подозрение падает на скорость работы пинов. Хотя стоит максимальная скорость периферии (36Mhz), и скорость пинов (High).
Брал с вашего кода инициализацию. Ни чего не дало.
Я уже не знаю куда смотреть.
HELP!!!
Если делали через халлвские библиотеки, то оно и понятно, нужно было через cmsis или ещё что ниже
1) Макрос #define swap (a,b) {int16_t t=a; a=b; b=t}
было бы правильнее написать вот так (более безопасно и без привязки к типу int16_t):
#define swap(a, b) do { typeof(a) tmp = (a); (a) = (b); (b) = tmp; } while (0)
2) Мне кажется что макросы ADDR_CMD и ADDR_DATA должны быть с ключевым словом volatile, типа такого:
#define ADDR_CMD (*(uint8_t volatile *) 0x60000000U)
#define ADDR_DATA (*(uint8_t volatile *) 0x60010000U)
Автор, а у вас в настройках проекта оптимизация включена или нет? Если отключена, то и скорее всего без volatile работать будет, но если включить оптимизацию то могут начаться глюки (а они 100% начнутся).
3) На всякий случай: я покупал дисплей здесь aliexpress.ru/item/32919273566.html это как-раз тот что используется в этом примере (у меня он работает).
Добрый день, подскажите пожалуйста как правильно управлять яркостью подсветки на ili9341?
Добрый вечер сэр
перед включением usb массового устройства ili931.h на main.h работает нормально после включения я получаю ошибку
../Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h(208): ошибка: # 20: идентификатор "USBH_HandleTypeDef" не определен
пожалуйста, дайте мне решение
Est' gotovaya bibliotechka ot "Tilen Majerle" dlya TFT po spi shine, no na cmsis. Ya ee na HAL perepisal . K sozhaleniyu poka net TFT Displaya, poka ne prishel , ya ne mogu proverit' i otladit' biblioteku. Esli komu nado budet , mogu potom podelitsya.
}{орошо б урок по базовым приставкам встречающимся в библиотеках типа (__IO __TAG __STATIC , STATIC_INLINE)
и ПО УКАЗАТЕЛЯМ с их применением. типа как в DelayMicro.
SysTic Такты и регистры. Способы альтернативных Строгих Машинных Тактовых Задержек .
откуда взять lcd.c что там вообще, как он использован в каком-то предыдущем проекте из которого сделан новый
В текстовой последней части каждого урока есть архив с проектом.
@@narodstream552 спасибо
Есть ли у вас видео урок где вы подключали 5-ти вольтовый LCD 20x4 r STM32?
Я мучаюсь уже 2 месяца пытаюсь заставить хоть что-то отобразиться на дисплее, но в итоге ничего. Дисплей рабочий точно - с полпинка на атмелке запускается, а вот с СТМ - никак. Делал подтягивающие резисторы даже на дисплей к 5-ти вольтам и ничего. Если нет такого урока - хоть расскажите как запустить это? Проект горит, сдать нужно, а отображения до сих пор нету...
Они все 5-вольтовые, отличаются лишь качеством сборки. Уроков у меня с использованием такого дисплея очень много. Так что смотрите на здоровье.
Так может уровни логические не согласованы
thank you very much, but why do you not ended the USB audio class
Audio class will be later.
Уроки интересные и очень полезные спасибо.
Ссылка на дисплей на али битая поправьте.
Спасибо! По всей видимости, продавца данного уже нет. Постараюсь найти другого проверенного с таким же дисплеем, предварительно с ним пообщавшись, что дисплей именно такой же.
Спасибо за труды. У меня проблема TFT 3.5" ili 9486 по SPI до 125мГц www.lcdwiki.com/MHS-3.5inch_RPi_Display нигде не могу найти инфы работает ли он на более низких скоростях SPI. (всегда белый экран) или может проблема в инициализации. подключаю к stm32f103 3.5" на 4 микруках логики (74HC4094....) - все работает. всавляю в разьем MHS-3.5inch_RP - не работает.
Разобрался - надо передавать 16 битами первым всегда 0х00 (по 8 бит) потом com иил data
кому надо инит. пишите на мой канал скину.
Подскажите пожалуйста, если отключить питание от дисплея, при следующей подачи питания на дисплей ему нужно пихать инициализацию или она у него останется в регистрах и не сбросится при отключении и следующем включении дисплея?
Боюсь даже такое пробовать. Скорей всего останется. Если снять питание именно от дисплея (от матрицы), а на контроллере ili9341 не снимать. Но зачем такое надо, я не знаю
Снимать надо полностью питания с дисплея (с его контроллера)
Тогда и регистры перестанут питаться. Скорей всего вряд ли у регистров контроллера предусмотрен энергосберегающий режим.
Добрый день, подскажите как вы генерировали массив со шрифтом?
8bit подключение быстрее чем SPI ?
Да.
*(uint8_t*) 0x60000000 - это прямое обращение к ячейке памяти?
совершенно верно. Обращение по адресу. Таким образом мы можем читать и писать туда данные любого типа, в данном случае беззнаковые целые 8-разрядные.
Спасибо. Хочу сделать по Вашим урокам информационный TFT-дисплей в авто между тахометром и спидометром. Сейчас у меня там просто прямоугольная область со светодиодами и пиктограммами.
где брать lcd.c?
Плохой учитель ,плохие ученики .
@@petrgarin8699 норм учитель
что за файл lcd.c?
Это файл для работы с символьным дисплеем. Создан в уроке по дисплею 20х4, когда мы его подключали через переходник I2C-LCD
конкретно если работать только с тфт дисплеем и не выводить на символьный этот файл не нужен?
Еще вопрос, не подскажите почему куб перестал генерит h файлы?
Не встречал такого. Через меню Help в Cube MX проверьте, последняя ли у Вас версия, и там же загрузите и обновите версию, если не последняя и загрузите все необходимые библиотеки в том же меню
где в дереве проекта находится main.h?
can you show your connection of stm32f4 board with LCDtft board. I can't understand Russian in your video ....
i need ,plz help me..