Урок 40
Знакомство с платой NUCLEO STM32F767ZI
Очень рад вам сообщить, что у меня появилась очередная очень интересная отладочная плата — NUCLEO STM32F767ZI.
Данная плата является продуктом компании ST Microelectronics и представляет собой готовое решение для изучения вопросов программирования микроконтроллеров. Ценность плат Nucleo по сравнению с Discovery состоит в том, что данные платы не включают в себя массу различных компонентов кроме контроллера и на них практически ничего нет кроме контроллера и кварцевого резонатора, за исключением разве что некоторых мелочей. Смысл такой платы заклюается в том, что за счет вышеперечисленного у разработчика появляется возможность использовать практически все порты GPIO, так как они все свободны. Второй неоценимый плюс — это её цена. Она гораздо дешевле, чем у равноправных по контроллеру плат Discovery как раз засчёт того, что не приходится платить за отсутствующие дополнительные компоненты. Цена этой платы на данный момент в районе 40$.
Ну давайте посмотрим на данную плату (нажмите на картинку для увеличения)
Как мы видим, на плате присутствует очень много наружных конекторов, что позволяет нам активно пользоваться всеми функциями микроконтроллера, а также практически всем портами ввода-вывода, причем номера портов в данной плате в отличии от её предшественников, подписаны. Наружный конектор представляет собой свокупность выведенных наружу ножек контроллера, и на данные ножки по умолчанию не установлены разъёмы, то есть присутствуют пустые отверстия. Мы можем либо распаять удобные для нас любые конекторы с межпинным интервалом 2,54 мм, либо воспользоваться внутренними конекторами в виде разъёма типа ST Zio, который также включает полную поддержку разъёма Arduino-UNO V3 (A0-A5, D0-D15), а также дополнительных сигналов (A6-A8 и D16-D72). Микроконтроллер на плате установлен STM32F767ZIT6U, выполненный на новом ядре ARM Cortex-M7. Ну и также как на всех платах, здесь установлен программатор ST-Link/V2-1, который позволяет нам прошивать и отлаживать наш код в контроллере, а также, как у практически всех плат Nucleo, он позволяет без распайки дополнительной цепи кварцевого резонатора, пользоваться своим тактовым генератором основному микроконтроллеру.
Ну, про уникальные возможности контроллеров построенных на ядре M7 я уже неоднократно рассказывал и, думаю, повторять нет смысла, мы все прекрасно знаем о них. Также возможности или какие-то особенности данной платы мы увидим в будущих уроках в в процессе работы с данной платой, а работы предстоит немало. Это и Quad-SPI, и FMC, и прочие технологии. На Quad-SPI я немного остановлюсь. На данной плате он уникален тем, что мы к нему можем спокойно подключать уже внешние элементы, поддерживающие работу с ним. В плате Discovery F746 у нас такая возможность отсутствовала, так как там на ножки данной шины распаяна тестовая микросхема и использовать наружу мы их не могли. Пины, отвечающие за передачу данных ещё можно куда-то было ремапить, а пин такирования — нет. А без него никуда.
А теперь постепенно перейдём к практическому использованию. Для этого мы подключим данную плату посредством Data-кабеля типа USM Micro B. Так как мой персональный компьютер в своей практике повидал уже не мало плат на контроллерах STM32, то драйвер, соответственно установился автоматически. Если у вас это первая плата, то вам необходимо будет его скачать и установить. Об этом рассказано в предыдущих уроках и сложности никакой данный вопрос не представляет.
Теперь давайте узнаем, нет ли обновлений на прошивку программатора ST-Link. Порой могут приходить платы с немолодой прошивкой, вследствие чего могут быть всевозможные неполадки в программировании и работе платы. Поэтому запустим программу ST-LINK Utility и зайдём в пункт меню ST-LINK -> Firmare Update
Запустится следующий диалог, в котором мы нажимаем пока единственную активную кнопку Device Connect, в результате нажатия на который при удачном соединении с программатором мы получим версию уже присутствующей у нас в нём прошивке, а также чуть ниже версию доступной прошивки
Если у нас версия старее, чем предложенная, то нажимаем кнопку Yes и обновляемся. В нашем случае нам обновлять ничего не нужно. Поэтому просто закроем наш диалог. Также необходимо ни в коем случае не забывать о том, что версия ST-LINK Utility и версия ST-Link Upgrade тоже должна быть последняя. В противном случае её нужно скачать на сайте st.com и обновить. Именно так происходит в видеоуроке, который Вы можете посмотреть и ссылка на который есть в конце статьи.
Теперь давайте посмотрим прошивку самого контроллера, а не программатора. Для этого нажмем пункт меню Target -> Connect
Вот такая вот прошивка
Теперь непосредственно проверим плату в работе. Для этого запустим Cube MX.
Мы попробуем помигать двумя светодиодами, находящимися на плате. Но, прежде чем создавать проект, давайте посмотрим на схеме, к каким ножкам конроллера данные светодиоды разведены
А подключены они, как мы видим, к ножкам портов PB7 и PB14.
Теперь можно создавать проект и настраивать его. Только выберем мы сегодня не контроллер а плату. Для этого в диалоге создания нового проекта перейдём на закладку Board Selector и, отфильтровав там нашу отладочную плату, выберем её (нажмите на картинку для увеличения)
Нажмём ОК. У нас открылся проект и мы видим, что на визуальной схеме контроллера наши светодиоды уже включены на выход и обозначены
Так как тактирование платы осуществляется от генератора, который тактирует контроллер программатор, а в данном генераторе присутствует кварцевый резонатор на 8 МГц, то мы выберем вариант «Bypass Clock Source«, так как кварцевый резонатор подключен не к нашему контроллеру и мы пользуемся именно внешним генератором
Перейдём теперь в Clock Configuration и настроим там следующую конфигурацию (в видео сразу было неправильно, но мы поправимся уже на данном этапе, так как я тогда ещё не знал о существовании тактирования от генератора программатора)
Теперь зайдём в Project -> Settings и добавим там следующие настройки и пути
Нажмем ОК, затем сгенерируем и откроем проект в Keil, настроим программатор на авторезет и напишем в бесконечный цикл функции main() следующий исходный код
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET);
HAL_Delay(500);
}
/* USER CODE END 3 */
Мы используем такие уникальные переменные для ножек портов, так как именно так они переопределены в Cube. Соберём код и прошьём контроллер платы.
Мы видим, что наши светодиоды попеременно мигают с частотой раз в секунду (суммарная задержка 500+500). Ура! Наша плата работает!
Но так как показать в статичной версии сайта это невозможно, то советую также посмотреть и видеоурок, ссылка на который приведена ниже.
Предыдущий урок Программирование МК STM32 Следующий урок
Купить отладочную плату можно здесь STM32F767ZI-Nucleo
Смотреть ВИДЕОУРОК
Примеры Ваши очень полезны для начинающих. Но к сожалению они все разрознены как и ST. Я хочу применить данную плату для измерения переменных сигналов в реальном времени (без разрывов) хотя бы до частоты 10 кГц. АЦП ->DMA->Ethernet(UDP протокол) далее обработка и анализ на LabVIEW. Будет отличное подспорье студентам и преподавателям. Ждем от Вас уроков на эту тему.
Расскажите как на этой плате tcp server поднять… или такого в нете не найти…