Stm32 nucleo подключение к компьютеру

Обновлено: 06.07.2024


Nucleo — это семейство плат, поддерживающих онлайн среду разработки mbed. Платы этого семейства предоставляют большие возможности для разработчика. Однако обычно, чем больше возможностей, тем выше сложность в освоении и, особенно, тем труднее знакомство. К счастью Nucleo лишён этого недостатка: благодаря среде mbed с возможностями этой платфоры очень просто познакомиться. Покажем это на примере разработки аналога «Hello, world» для микроконтроллерного мира — программы, моргающей светодиодом.

План действий

Плата Nucleo прошивается очень просто: при подключении к компьютеру она определяется как «флешка». Вы просто копируете файл прошивки на эту «флешку». И всё — плата прошита. Прошивки мы будем разрабатывать в среде mbed.

mbed — это онлайн среда разработки. Чтобы воспользоваться ею, необходимо просто зарегистрироваться. Пользоваться средой можно абсолютно бесплатно.

Итак, вот последовательность наших действий:

2. Выбор платы


Можно начинать программировать? Ещё нет. Надо указать системе, какие платы у вас есть. Для это зайдите в раздел «Platforms»…


…и выберите свою плату (в нашем случае это Nucleo-F401RE).


Откроется страница выбранной платы. Справа будет кнопка добавления платы в список имеющихся у вас.

3. Создание проекта


Теперь можно открыть среду разработки…


…и создать новую программу.


При этом вам потребуется выбрать программу, которая будет взята за основу и плату. Мы выбираем Blinky — «моргалку». С ней нам вообще ничего писать не придётся, это уже готовый проект, моргающий светодиодом.

4. Работа в среде

Как видите, пример простой. Документация к классам доступна прямо из среды разработки. В списке файлов вашей программы есть пункт «mbed», который файлом на самом деле не является. Он содержит документацию по классам, функциям и типам. Также, документация доступна онлайн на сайте проекта.


5. Сборка проекта и прошивка платы


Перед сборкой программы подсоедините устройство по USB к компьютеру. Оно должно определиться в системе как новый носитель информации. По сравнению с Arduino mbed имеет весомое преимущество: установка драйверов для этой платформы не требуется. Для сборки программы и прошивки платы нажмите кнопку «Compile». Откроется окно с предложением сохранить файл прошивки на вашем компьютере. Сохраните файл прямо на диск, который появился при подключении платы. Прошивка начнётся автоматически по окончании записи файла. После прошивки устройство перезагрузится (диск на короткое время пропадёт и появится снова).

Что дальше?

Теперь вы умеете создавать программы, транслировать их в файл прошивки для вашей аппаратной платформы и прошивать. Пользуясь документацией, вы можете теперь писать полноценные программы, управляющие не только светодиодами. В вашем распоряжении классы для работы с аналоговыми входами, UART, АЦП, ШИМ и многое другое.


В предыдущем своем посте я попытался коротко ознакомить вас с платформой Nucleo от ST.
В этом посте я хочу рассказать вам на живом примере некоторые сильные стороны этой платформы, которая имеет все шансы потеснить приевшиеся всем Arduino, и показать что все примеры кода и шилды от Arduino, прекрасно подходят для платформы Nucleo.

Почему Nuleo-F401?

Платформа Nuleo Представляет собой гибрид платформ DISCOVERY и Arduino, позволяя пользователям, без проблем использовать почти все расширения и все примеры кода для

Особенности микроконтроллера STM32F401RE вы можете изучить и самостоятельно, я выбрал ST Nucleo-F401, по причине того что на момент покупки это была старшая из доступных моделей, отличающаяся от остальных, своей большей производительностью и большим объемом памяти.

Начало Работы!


Выбираем «No, I haven't created an account before» (Нет, я не создавал ранее учетную запись)


Заполняем регистрационную форму и жмем «SignUp» (Зарегистрироваться)



После это вверху слева нажимаем «Platform» и открываем список всех поддерживаемых проектом платформ, и в списке переходим к нашей платформе(в нашем случае это Nucleo-F401RE).


Открыв описание платформы мы находим слева кнопку «Add to your mbed Compiler» нажимая ее мы добавляем выбранную платформу в список своих платформ.


Теперь давайте нажмем на свой ник (вверху справа) и перейдем на главную страницу своего профиля, здесь справа внизу мы можем увидеть только что добавленную платформу.


Собственно все мы зарегистрировались и добавили свою платформу.

Установка драйверов.
  1. сначала нужно установить USB драйвер ST-LINK/V2-1 для программатора, для Windows Vista, 7 и 8 STSW-LINK008 или STSW-LINK009 для Windows XP
  2. Произвести Обновление прошивки подключенного по USB программатора ST-LINK/V2-1 STSW-LINK007

Начнем по порядку, скачиваем актуальный Драйвер и обновление прошивки на этой странице КЛАЦ
нам предположительно нужны два фала один "ST-LINK/V2-1 firmware upgrade" второй допустим "ST-LINK/V2-1 USB driver on Windows Vista, 7 and 8"


Распаковываем скачаные нами архивы, и приступаем.
Запускаем установку драйверов: в распакованном архиве STSW-LINK008 или STSW-LINK009 запускаем файл под именем stlink_winusb_install для нашей платы (плата еще не подключена по USB).


Запускаем этот файл, который сам определит разрядность системы и тип установки. Соглашаемся со всем, и жмем да, далее и т.д.
Теперь можем подключить по USB нашу плату и увидеть что светодиоды загорелись и у вас определился новый сменный носитель.

Запускаем обновление прошивки программатора нашей платформы:
Для этого подключаем нашу отладочную платформу к компьютеру, переходим в папку с распакованным архивом обновления программатора «STSW-LINK007» и запускаем файл «ST-LinkUpgrade»


В появившемся окошке жмем «Device Connect» (Подключение устройства), после обноружения устройства и подключению к нему жмем «Yes >>>» программка сама все сделает и в конце отключиться от устройства, после этого можете закрыть ее.

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

Подключение платформы:

Для любопытных я постараюсь разъяснить некоторые режимы работы поподробнее:
Сведения для любопытных, нажми чтобы увидеть. ОСТОРОЖНО!
Краткие технические сведения из руководства


image

Режимы работы светодиодов.
  • «Медленно мигающий красный» / «Выкл» — при включении питания до установки подключения по USB
  • «Быстро мигает красный» / «Выкл» — после первого правильного обмена данными между ПК и STLINK/V2-1 (процесс подключения)
  • «Красный светодиод включен» — если подключение между ПК и ST-LINK/V2-1 установлено
  • «Зеленый включен: подключение выполнено успешно или операция завершена коректно
  • „Мигающий красный“ / „зеленый“ — во время передачи данных.(Сам процесс прошивки)
  • „Оранжевый включен“: Сбой связи.
  • Когда значение ввода/вывода(I/O) высокого значения, светодиод включен.
  • Когда значение ввода/вывода(I/O) низкого значения, светодиод выключен.

LD3 PWR: красный светодиод указывает, что часть с микроконтроллером питается и +5 В питание подается.

Кнопки

В1 USER: кнопка пользователя подключена к ввод/вывод PC13 (вывод 2) микроконтроллера STM32.
В2 RESET: эта кнопка подключается к NRST, и используется для сброса микроконтроллера STM32.

Примечание: Синие и черные пластиковые колпачки на кнопках могут быть удалены в случае необходимости, например, когда шилд или плата расширения подключается сверху Nucleo. Это позволит избежать давления на кнопки и следовательно возможного постоянного случайного нажатия

Перемычка JP6 (IDD)
  • Перемычка Включена: STM32 микроконтроллер питается (по умолчанию).
  • Перемычка ВЫКЛ: амперметр должен быть подключен для измерения тока микроконтроллера STM32. Если нет амперметра, STM32 микроконтроллер не питается.
Встроенный ST-LINK/V2-1
  • Драйвера USB перенумерованы
  • Интерфейс виртуального порта COM по USB
  • Интерфейс Устройства хранения данных по USB
  • USB менеджер питаниея
  • SWIM интерфейс.(нужно для программирования STM8)
  • Минимальное поддерживаемое напряжение приложений ограниченно до 3 В
Разделение печатной платы

STM32 Nucleo печатная плата платформы делится на две части: ST-LINK часть и целевая MCU часть, которые можно разделить, чтобы уменьшить размер платы. В этом случае оставшиеся целевая MCU часть может питаться только по VIN, E5V и 3,3V на разъеме ST Morpho CN7 или VIN и 3,3 на Arduino CN6. При этом все еще можно использовать ST-LINK часть чтобы программировать главный микроконтроллер с помощью проводов между CN4 SWD и разъемах на ST Morpho (SWCLK CN7 пин-15 и SWDIO CN7 пин-13).

Режимы питания платы.

Источник питания осуществляется либо от компьютера через кабель USB или от внешнего источника: VIN (7В-12В), E5V (5 В) или +3V3 выводы питания на CN6 или CN7.
ST-LINK/V2-1 поддерживает питание платформы по USB, сам программатор при этом потребляет ток до 100 мА.

Вся плата STM32 Nucleo включая платы расширения может питаться от ST-LINK USB при условии что суммарный ток потребления не будет превышать 300мА (Включая потребление ST-LINK 100 мА) при выполнении этих условий красный светодиод LD3 включен и микро контролер работает. Если ток потребления выше, то необходимо использовать внешний источник питания для всего проекта или только для плат расширения (не забывая про общую землю).

Когда плата будет питаться от USB (U5V) перемычка должна быть подключена между контактами 1 и 2 JP5 в положение U5V. JP1 перемычка может быть установлена только в случае когда плата питается от USB и максимальное потребление тока на U5V не должно превышать 100 мА (в том числе всевозможные платы расширений или Arduino Shield).

VIN (7В-12В) или E5V (5В-5,5В) может использоваться в качестве внешнего источника питания в случае, когда ток потребления Nucleo и платами расширений превышает допустимый ток для USB. В этом состоянии все еще можно использовать подключение по USB, для программирования или отладки, но сначала обязательно подключите плату к источнику питания используя VIN или E5V, после чего подключите кабель USB к ПК.

  • Подключите перемычку между контактами 2 и 3 JP5.
  • Убедитесь, что JP1 удалена.
  • Подключите внешний источник питания к VIN или E5V.
  • Напряжение на внешнем источнике питания 7 V <VIN <12 В до VIN или 5 В для E5V.
  • Убедитесь, что LD3 включен.
  • Подключите ПК к разъему USB CN1.
  • Перемычка на JP5 между pin 2 и pin 3.
  • Перемычка удалена на JP1.

Для остальных достаточно запомнить что на плате есть перемычка JP5 и у нее есть два положения, питание микроконтроллера от USB (положение U5V не более 300mA) или от внешнего источника (E5V) питания например от 5 Вольт подключенных к CN7 (самые Левый разьем, контакты пин-6 E5V и пин-8 GND). Схема разъемов

И так мы подключились и увидели что в нашем компьютере определился сменный носитель, это признак того что все сделано правильно и все работает. Проверить корректно ли работает сам микроконтроллер можно понажимав пользовательскую кнопку, при кликании по ней, частота мерцания пользовательского светодиода должна изменяться. Наигравшись со светодиодом идем дальше.

Теперь самое время создать нашу первую программу в Embed и прошить ею наш контролер.
Подобные подразделы я буду убирать под сполер, чтобы экономить место.

Первая программа и первое программирование
Создание проекта программы в Mbed

На странице своего профиля в Mbed открываем страницу с нашей платформой, дальше используя картинки как помощь, делаем следующие:
(1) Открываем онлайн компилятор

(2-3) Создаем проект под названием „Blinky LED test for the ST Nucleo boards“ и нажимаем „OK“


(4 — 5) Открываем и компилируем бинарный файл (5).

После чего нам будет предложено сохранить это бинарник (процедура зависит от вашего браузера). Полученный бинарник мы просто копируем или перемещаем на сменный носитель Nucleo, причем если сразу после копирования обновить содержание сменного носителя то вы его уже не сможете увидеть, что свидетельствует что микро контроллер пере-прошит! (во время прошивки вы увидите как весело мигает светодиод LED_COM)

Пост писался всю ночь и вскоре будет дополнен примерами, хочу отметить что любые расширения от Arduino с легкостью подходят и под Nucleo, со скетчами тоже не возникает проблем.


Цель

Измерить с точностью до 1 мВ в диапазоне 0..3,3 В напряжение на 6-и аналоговых входах микроконтроллера (стоит отметить, что платформа преобразует напряжение USB с 5 В до 3,3 В с погрешностью). Предать информацию на персональный компьютер для отображения напряжений на графике. Дискретность измерения по времени 1 секунда.

Компьютерная периферия

  • STM32F411RET6 in LQFP64 package
  • ARM®32-bit Cortex®-M4 CPU with FPU
  • 100 MHz max CPU frequency
  • VDD from 1.7 V to 3.6 V
  • 512 KB Flash
  • 128 KB SRAM
  • GPIO (50) with external interrupt capability
  • 12-bit ADC with 16 channels
  • RTC
  • Timers (8)
  • I2C (3)
  • USART (3)
  • SPI (5)
  • USB OTG Full Speed
  • SDIO

Фотография платформы Nucleo-F411RE изображена на рисунке 1.


Схема подключения платформы изображена на рисунке 2.


Далее приведён листинг на С++:

На рисунке 3 показан скриншот компилятора.


Прибор подключается к компьютеру через USB-порт. Устройство эмулирует COM-порт. Через USB-UART интерфейс осуществляется работа с микроконтроллером. В платформе есть две кнопки для сброса микроконтроллера и для управления прибором. Кнопка управления прибором не реализуется.

Программное обеспечение


Теперь в память платформы можно скопировать файл adc_NUCLEO_F411RE. Скриншот Flash-памяти платформы Nucleo-F411RE изображен на рисунке 5.


После того как драйвера установлены, узнайте какой COM-порт распознан для данной платформы. Смотреть рисунок 6, где изображен скриншот.


Смотреть скриншот программного обеспечения на рисунке 7.


В программном обеспечении выберите соответствующий COM-порт и нажмите кнопку «Connect». Замигает зелёный светодиод LD2 на платформе Nucleo-F411RE – начнётся измерение напряжения и обмен данными между платформой и компьютером. На графике будут отображены 6 напряжений с дискретностью в 1 секунду. Для очистки графика нажмите кнопку «Clear».

Если измерять напряжения нет смысла, нажмите на кнопку «Disconnect». И выньте USB-вилку из персонального компьютера.

Nucleo-64 STM32F030

Подготовка проекта в CubeMX

Начнем с запуска генератора инициализационного кода CubeMX. При ее запуске выбор небольшой. Нам нужен пункт меню New Project.

Обычно разработка электронных устройств предполагает то, что вы сами подбираете контроллер, готовите плату для устройства и т.д. На вкладке MCU Selector есть возможность найти выбранный ранее контроллер, либо при помощи параметрического поиска подобрать именно тот, который оптимально подойдет под ваши задачи, но у нас готовая отладочная плата от производителя, поэтому надо перейти на вкладку Board Selector.
Если вы используете ту же плату что и мы, то необходимо выбрать те же пункты, что указаны на картинке.

После этого вам откроется окно на вкладке Pinout, в котором очень удобно при помощи графического интерфейса настраивается периферия контроллера.
На основном экране показан условно сам контроллер. При нажатии мышкой на каждый из выводов контроллера выпадает меню, в котором перечислены все функции, которые он может выполнять (вход, выход, прерывания, АЦП и и.д.)
В левой части список основных настроек периферийных модулей контроллера. Например, если вы в этом списке раскроете пункт меню USART2 и поставите в нем галочку, то увидите сразу как на контроллере соответствующие выводы изменят свое состояние.
Но нам пока ничего здесь не надо менять. То есть мы работаем с заготовкой, которая уже настроена на нашу плату. В ней уже настроен UART, светодиод, кнопка и некоторые дополнительные функции, которые уже есть на плате.

Далее переходим на вкладку Clock Configuration. STM32 имеют очень сложную систему тактирования, которая позволяет замедлять работу отдельных функций на аппаратном уровне или полностью отключать отдельные модули, что в свою очередь дает дополнительные возможности по экономии энергии.
Опять же нам тут трогать ничего не надо, но ознакомиться с ней стоит.

На вкладке Configuration вам предоставляется дополнительные возможности по настройке подключенной к проекту периферии, которая для нашего случая уже заранее настроена.

Нажмите на кнопку GPIO (General Purpose Input/Output, порты ввода/вывода общего назначения).
У нас выбрано два вывода. К выводу PA5 мы еще на первой вкладке подключили светодиод, а к выводу PC13 кнопку. Здесь они настроены на выход и вход соответственно, а в этом меню можно произвести их более тонкую настройку.

Вкладку Power Consumption мы пока трогать не будем. Пока настройки и расчет потребляемой мощности нас не интересует.

На этом настройка завершена и мы готовы к тому, чтобы сгенерировать проект для дальнейшей работы в Keil.
Во вкладке Project выбираем пункт Generate Project. На этом шаге среда уже не знает что мы собираемся делать далее и тут уже придется что-то делать.
Задайте проекту имя и укажите директорию для его хранения (желательно без кириллических символов). Toolchain/IDE (инструментарий, Integrated Development Environment – интегрированная среда разработки) – в этом пункте необходимо выбрать MDK-ARM V5.

После нажатия кнопки Ok утилита начнет скачивание необходимых файлов и подготовит структуру проекты.
По окончании ее работы вы сможете найти файл проекта для Keil uVision.

CubeMX сразу предложит вам открыть сгенерированный проект. Сделайте это и Keil uVision откроется автоматически. В проводнике слева найдите файл main.c и откройте его.

Работа с проектом в Keil uVision

Прошивка контроллера

Ранее мы уже подключили плату и проверили, что STLink работает. Можно прошить плату через STLink Utility, но лучше сразу настроить Keil на работу с ним.
Откройте пункт меню Debug -> Options. На вкладке Debug у вас должен быть выбран Use ST-Link Debugger.

Нажмите на кнопку Settings и перед вами откроется новое окно.

Перейдите на вкладку Flash Download и установите галочку Reset and Run. Эта галочка нужна чтобы программа запускалась на выполнение сразу после перезагрузки.

Теперь нажмите на кнопку Load на панели инструментов и через мгновение вы увидите как на плате замигает светодиод. Вы можете изменить время и убедиться в том, что это действительно вы его контролируете.
Сам светодиод на плате подписан как LD2. Если он не замигал, то, возможно, плата просто не начала исполнять программу после обновления прошивки. Попробуйте перезагрузить ее при помощи черное кнопки.

Пользовательский светодиод на плате

Пользовательский светодиод на плате

Итоги

Hello world на светодиоде это огромный шаг. Если вы проделали его и до этого хорошо знали язык (применяя его на другой платформе), то вы можете уверенно говорить, что STM32 вы освоили. То есть у вас есть полный инструментарий для работы с этими контроллерами.
Кому-то все эти действия могут показаться сложными, но надо помнить, что мы настроили очень мощный инструмент, дающий огромные возможности разработчику. Если посмотреть на сам код который мы написали, то он вполне будет понятен даже тем, кто только поверхностно знаком с Arduino. Все остальное связано только с настройкой среды.
Другими словами, если надо только мигать светодиодом, то возможно, проще будет это сделать и на Arduino, но если в перспективе вы хотите использовать USB, работать с файловой системой, RTOS и т.д., то на STM32 это будет не намного сложнее чем мигать светодиодом, тогда как для Arduino это почти недоступно.

Читайте также: