Это видео недоступно.
Сожалеем об этом.

Программирование МК 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

Комментарии • 50

  • @ShamilGusseynov
    @ShamilGusseynov 3 года назад

    Отлично! Сразу заработало.

  • @user-fx8bb5ks9f
    @user-fx8bb5ks9f 8 лет назад +1

    Ура! Дождался)))

  • @DrargonsM
    @DrargonsM 8 лет назад

    очень интересно с дисплеем получилось!

    • @narodstream552
      @narodstream552  8 лет назад

      Это только начало. Первая из девяти частей.
      "Лучшее, конечно, впереди!"

  • @flexoalex4168
    @flexoalex4168 4 месяца назад

    Не знаю, наверное это уже не актуально, но вот мой вариант перевода 24 бита в 16
    // Перевод 24 битного цвета в 16 битный
    #define RGB16(color) (UWORD)(((color&0xF80000)>>8)|((color&0x00FC00)>>5)|((color&0x0000F8)>>3))

  • @gautamkashyap6865
    @gautamkashyap6865 5 лет назад +2

    can you show your connection of stm32f4 board with LCDtft board. I can't understand Russian in your video ..

  • @artembarulin415
    @artembarulin415 4 года назад

    NE1 -> CS
    A16 -> RS
    Добрый день! Чем обусловлен этот выбор? У меня на плате на разъем TFT выведены NE4 и A6, в видео вы просто сказали что так надо а можно подробнее объяснить.

  • @user-gh4tc2wo5k
    @user-gh4tc2wo5k 5 лет назад

    Вечер добрый! Для эксперимента использую такую же связку, только по SPI. Нашёл на гитхабе библиотеку по работе с данным дисплеем, похожую как у Вас. Всё работает. Фигуры и картинки на экран выводит. Встал вопрос по поводу динамической смены яркости, что бы можно было делать смену картинок в затемнённом режиме, а потом увеличивать яркость экрана. По даташиту к экрану на стр. 141 нашёл регистр Write Display Brightness (51h). Отправляю команду 0х51, затем передаю данные о яркости (судя по даташиту от 0х00 до 0хFF). Но это никакого эффекта не даёт. Экран светится всегда с одной яркостью. Видел парочку постов на буржуйских сайтах с такой же проблемкой. Ответа там не нашёл. Вы не пробовали играться с яркостью на этом дисплее?

  • @7Hz_
    @7Hz_ 5 лет назад +2

    Всё конечно хорошо но у меня на STM32F103C8T6 нету FSMC. Не могли бы вы сделать урок как этот кристал подружить с TFT.
    Я перенёс библиотеку с ардуино на stm32, там используется дрыгание пинами.
    Но почему то на ардуино FillScreen(); прорисовывает кадр за 1 сек, а в STM на это уходит около 2х сек.(черный цвет прорисовывает раза в 2 быстрее).
    И подозрение падает на скорость работы пинов. Хотя стоит максимальная скорость периферии (36Mhz), и скорость пинов (High).
    Брал с вашего кода инициализацию. Ни чего не дало.
    Я уже не знаю куда смотреть.
    HELP!!!

    • @bul2012
      @bul2012 4 года назад

      Если делали через халлвские библиотеки, то оно и понятно, нужно было через cmsis или ещё что ниже

  • @user-qo6uk4xs7m
    @user-qo6uk4xs7m 3 года назад

    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 это как-раз тот что используется в этом примере (у меня он работает).

  • @user-sd8gz1jg6z
    @user-sd8gz1jg6z 7 лет назад

    Добрый день, подскажите пожалуйста как правильно управлять яркостью подсветки на ili9341?

  • @musicalbite7271
    @musicalbite7271 5 лет назад

    Добрый вечер сэр
    перед включением usb массового устройства ili931.h на main.h работает нормально после включения я получаю ошибку
    ../Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/usbh_msc_bot.h(208): ошибка: # 20: идентификатор "USBH_HandleTypeDef" не определен
    пожалуйста, дайте мне решение

  • @alexmueller1041
    @alexmueller1041 6 лет назад

    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.

  • @atlantghost1803
    @atlantghost1803 7 лет назад +1

    }{орошо б урок по базовым приставкам встречающимся в библиотеках типа (__IO __TAG __STATIC , STATIC_INLINE)
    и ПО УКАЗАТЕЛЯМ с их применением. типа как в DelayMicro.
    SysTic Такты и регистры. Способы альтернативных Строгих Машинных Тактовых Задержек .

  • @Yurikuznet
    @Yurikuznet 3 года назад

    откуда взять lcd.c что там вообще, как он использован в каком-то предыдущем проекте из которого сделан новый

    • @narodstream552
      @narodstream552  3 года назад

      В текстовой последней части каждого урока есть архив с проектом.

    • @Yurikuznet
      @Yurikuznet 3 года назад

      @@narodstream552 спасибо

  • @mobilandservice
    @mobilandservice 6 лет назад

    Есть ли у вас видео урок где вы подключали 5-ти вольтовый LCD 20x4 r STM32?
    Я мучаюсь уже 2 месяца пытаюсь заставить хоть что-то отобразиться на дисплее, но в итоге ничего. Дисплей рабочий точно - с полпинка на атмелке запускается, а вот с СТМ - никак. Делал подтягивающие резисторы даже на дисплей к 5-ти вольтам и ничего. Если нет такого урока - хоть расскажите как запустить это? Проект горит, сдать нужно, а отображения до сих пор нету...

    • @narodstream552
      @narodstream552  6 лет назад

      Они все 5-вольтовые, отличаются лишь качеством сборки. Уроков у меня с использованием такого дисплея очень много. Так что смотрите на здоровье.

    • @user-dk6ww7qv5m
      @user-dk6ww7qv5m 6 лет назад

      Так может уровни логические не согласованы

  • @narutouzumaki8957
    @narutouzumaki8957 8 лет назад

    thank you very much, but why do you not ended the USB audio class

  • @uno7802
    @uno7802 7 лет назад

    Уроки интересные и очень полезные спасибо.
    Ссылка на дисплей на али битая поправьте.

    • @narodstream552
      @narodstream552  7 лет назад +1

      Спасибо! По всей видимости, продавца данного уже нет. Постараюсь найти другого проверенного с таким же дисплеем, предварительно с ним пообщавшись, что дисплей именно такой же.

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA 4 года назад

    Спасибо за труды. У меня проблема 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 - не работает.

    • @NIKOLAY_PSHONIA
      @NIKOLAY_PSHONIA 4 года назад

      Разобрался - надо передавать 16 битами первым всегда 0х00 (по 8 бит) потом com иил data
      кому надо инит. пишите на мой канал скину.

  • @user-sd8gz1jg6z
    @user-sd8gz1jg6z 7 лет назад

    Подскажите пожалуйста, если отключить питание от дисплея, при следующей подачи питания на дисплей ему нужно пихать инициализацию или она у него останется в регистрах и не сбросится при отключении и следующем включении дисплея?

    • @narodstream552
      @narodstream552  7 лет назад

      Боюсь даже такое пробовать. Скорей всего останется. Если снять питание именно от дисплея (от матрицы), а на контроллере ili9341 не снимать. Но зачем такое надо, я не знаю

    • @user-sd8gz1jg6z
      @user-sd8gz1jg6z 7 лет назад

      Снимать надо полностью питания с дисплея (с его контроллера)

    • @narodstream552
      @narodstream552  7 лет назад

      Тогда и регистры перестанут питаться. Скорей всего вряд ли у регистров контроллера предусмотрен энергосберегающий режим.

    • @user-sd8gz1jg6z
      @user-sd8gz1jg6z 7 лет назад

      Добрый день, подскажите как вы генерировали массив со шрифтом?

  • @alexmak4201
    @alexmak4201 5 лет назад

    8bit подключение быстрее чем SPI ?

  • @user-gh4tc2wo5k
    @user-gh4tc2wo5k 6 лет назад

    *(uint8_t*) 0x60000000 - это прямое обращение к ячейке памяти?

    • @narodstream552
      @narodstream552  6 лет назад

      совершенно верно. Обращение по адресу. Таким образом мы можем читать и писать туда данные любого типа, в данном случае беззнаковые целые 8-разрядные.

    • @user-gh4tc2wo5k
      @user-gh4tc2wo5k 6 лет назад

      Спасибо. Хочу сделать по Вашим урокам информационный TFT-дисплей в авто между тахометром и спидометром. Сейчас у меня там просто прямоугольная область со светодиодами и пиктограммами.

  • @user-ed9px3cz7g
    @user-ed9px3cz7g 7 лет назад

    где брать lcd.c?

    • @petrgarin8699
      @petrgarin8699 6 лет назад

      Плохой учитель ,плохие ученики .

    • @UK8CFT
      @UK8CFT 4 года назад

      @@petrgarin8699 норм учитель

  • @user-sd8gz1jg6z
    @user-sd8gz1jg6z 7 лет назад

    что за файл lcd.c?

    • @narodstream552
      @narodstream552  7 лет назад

      Это файл для работы с символьным дисплеем. Создан в уроке по дисплею 20х4, когда мы его подключали через переходник I2C-LCD

    • @user-sd8gz1jg6z
      @user-sd8gz1jg6z 7 лет назад

      конкретно если работать только с тфт дисплеем и не выводить на символьный этот файл не нужен?

    • @user-sd8gz1jg6z
      @user-sd8gz1jg6z 7 лет назад

      Еще вопрос, не подскажите почему куб перестал генерит h файлы?

    • @narodstream552
      @narodstream552  7 лет назад

      Не встречал такого. Через меню Help в Cube MX проверьте, последняя ли у Вас версия, и там же загрузите и обновите версию, если не последняя и загрузите все необходимые библиотеки в том же меню

    • @user-sd8gz1jg6z
      @user-sd8gz1jg6z 7 лет назад

      где в дереве проекта находится main.h?

  • @uyghurnature1961
    @uyghurnature1961 7 лет назад +1

    can you show your connection of stm32f4 board with LCDtft board. I can't understand Russian in your video ....