Урок 60
Часть 1
F769I-DISCO. WB. LCD. SDIO
Продолжаем работу с бесплатной средой программирования System Workbench for STM32.
На прошлом занятии мы с помощью библиотеки BSP и не только смогли вывести картинки на экран дисплея, причем вывод осуществляется практически мгновенно.
Сегодня мы займёмся тем же самым ремеслом, только подключим мы ради эксперимента уже другую, более навороченную плату — STM32F769I-DISCOVERY.
Я показывал обзор данной платы в видеоуроке здесь и здесь. Поэтому все прелести данной платы я объяснять не буду.
Но там мы данную плату испытывали только с помощью готового примера. Хочется, наконец-то, что-то создать и самим.
Проект мы не будем создавать по сложившемуся обычаю из другого проекта, а создадим новый, всё-таки и контроллер другой, и библиотеки несколько другие. Ну конечно, всё равно создавать будет легче по проторённой дорожке, мы же это уже с другим контроллером делали.
Запустим Cube MX, откроем создание нового проекта. выберем соответствующий контроллер
Жмем «OK».
Настроим RCC на кварцевый резонатор
Сразу зайдём в Clock Configuration и настроим нужную частоту, так как потом будет сложнее. Настроим на 200 МГц, ибо так легче потом настроить периферию, чем с 216 (нажмите на картинку для увеличения размера)
Теперь начнём потихоньку всё включать.
Включим SDMMC2, так как именно к ней подключен распаянный на плате держатель Micro-SD
Включим FATFS для чтения файлов с флеш-карты
В Configuration в FATFS увеличим максимальный размер сектора до 4096
Теперь вернемся в Clock Configuration и настроим умножители, делители и мультиплексоры следующим образом, отказавшись от предложенной автонастройки во избежания её вечной попытки настроить нам данные переключатели
Но это ещё не всё, так как красный крестик у нас всё ещё активен. В правом нижнем углу большого окна clock configuration есть ещё один мультиплексор SDMMC2 Clock Mux. Переключим его в положение PLL48CLK. Вот теперь крестик исчез. Возвращаемся в Pinout.
Включим FreeRTOS
Затем настроим SYS
Теперь начнем настраивать дисплей.
Так как дисплей у нас подключен по интерфейсу DSI в 24-битном режиме, то такой режим мы в LTDC и выбираем
Так как мы выбрали именно такой режим, то мы видим, что ни одна ножка в контроллере не активизировалась. Поэтому нужно настроить непосредственно режим DSI
Включим DMA2D
Настроим FMC
На плате присутствует также два светодиода — красный и зелёный. Подключены они к PJ5 и PJ13
Поэтому включим данные ножки на выход, мало ли пригодятся светодиоды
Переходим в Configuration. Вот тут работы будет много, до этого была разминка.
Как всегда, добавим стек в основной задаче и добавим ещё 4 задачи во FreeRTOS
В FMC будут следующие настройки и тайминги
В CORTEX_M7 внесём следующие настройки
LTDC настраиваем так
В DSI Host настройки будут такие
Ну, вроде с настройками пока всё.
Зайдём в Project Settings и настроим его следующим образом
Сгенерируем проект и закроем диалог.
Запустим System Workbench и добавим наш сгенерированный проект таким же образом, как и на прошлых занятиях, предварительно удалив из дерева проекта все проекты, чтобы не путались.
Откроем файл main.c и поставим туда фокус ввода.
Как всегда, уберём в свойствах проекта конфигурации всех отладчиков.
Соберём проект, прошивать пока не будет.
Теперь нам необходимо подключить файлы библиотеки BSP для дисплея. Хотя это делается подобным образом, как и для предыдущего контроллера, но всё-таки есть смысл рассказать ещё раз, так как некоторые незначительные различия будут.
Зайдём в папку «Drivers» в папке с проектом и создадим там папку «BSP», зайдём в эту папку и создадим там 2 папки – «STM32F769I-Discovery» и «Components». Зайдём в папку «Components» и скопируем туда из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Drivers\BSP\Components» папки «ft6x06», «otm8009a» и «Common».
Вернемся на 2 уровня выше и зайдём в другую папку – «STM32F769I-Discovery». Скопируем в неё из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Drivers\BSP\STM32F769I-Discovery» следующие файлы:
stm32f769i_discovery.c
stm32f769i_discovery.h
stm32f769i_discovery_lcd.c
stm32f769i_discovery_lcd.h
stm32f769i_discovery_sdram.c
stm32f769i_discovery_sdram.h
stm32f769i_discovery_ts.c
stm32f769i_discovery_ts.h
Выходим из этой папки на самый верхний уровень папки с проектом и создадим там папку «Utilities». Зайдём в данную папку и скопируем туда из папки «Диск:\Keil_v5\ARM\PACK\Keil\STM32F7xx_DFP\2.7.0\Utilities» папку «Fonts».
Возможно, в момент прочтения статьи имя папки «2.7.0» будет уже другим, так как версии постоянно обновляются.
Ещё одно условие: файлы в добавленных к проекту папках не должны содержать атрибут «Только для чтения».
Вернёмся в WB, обновим там дерево с проектом (Refresh (F5)), и пересоберём наш проект.
Теперь нам необходимо подключить созданные папки к проекту. Для этого в свойствах проекта заходим в пункт C/C++ Build -> Settings -> Tool Settings, нажимаем там кнопку с плюсиком и добавляем нужную папку (нажмите на картинку для увеличения изображения)
Добавим туда папку «STM32F769I-Discovery» следующим образом, в процессе желательно путь исправить на относительный, чтобы было по аналогии с другими файлами:
Путь желательно должен быть относительным, чтобы мы могли свой проект затем переписывать хоть куда.
Попробуем собрать проект. Если всё нормально собирается, то в следующей части урока мы попробуем закрасить дисплей в какой-нибудь цвет, а затем продолжить работу по выводу изображений на экран данного дисплея.
Предыдущий урок Программирование МК STM32 Следующая часть
Отладочную плату можно приобрести здесь недорого (продавец проверенный) STM32F769I-DISCO
Смотреть ВИДЕОУРОК в RuTube (нажмите на картинку)
Смотреть ВИДЕОУРОК в YouTube (нажмите на картинку)
(Pack 2.9.0) При попытке собрать проект WB начал ругаться на отсуствие файла adv7533.h Ошибка в строке #53 файла stm32f769i_discovery_lcd.h Добавил в папку Components, папку adv7533 — ошибка исчезла
При генерации кода в кубе он начал ругаться:
These IPs still have some not configured or wrong parametr values:
[FATFS, Verify the Platform Settings Tab]
Настройки все сделал как и в уроке.
Сам же нашел ответ, он ругается что не выбран пин uSD_Detect. В принципе можно выбрать любой свободный и настроить на GPIO_Input и во вкладке конфигурации FATFS в разделе Platform Settings выбрать наш настроенный Pin. Для платы же DISCO Pin PI15.