Пользователь
0,0
рейтинг
24 июля 2014 в 13:39

Разработка → Быстрый старт ST Nucleo-F401 + краткое руководство

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



Почему Nuleo-F401?



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

Arduino. В Этой платформе реализована поддержка MBED.ORG, благодаря чему снимается головная боль многих новичков в установке, настройке и использовании компиляторов для ARM. В mbed.org импортированы почти что все существующие расширения для Arduino. В отличии от уже широко распространенной и полюбившихся многим платформы DISCOVERY, платформа на своем борту не имеет никакой периферии, такой как например акселерометр, компас и т.д. Зато платформа Nucleo призвана сделать работу на ней столь же простой как и на платформах от Arduino. Так же платформа имеет гибкую схему питания(3.3В-5В-7В-12В), встроенный обновленный программатор ST-LINK/V2.1 для программирования любых STM32, встроенный виртуальный COM порт (подключенный по умолчанию к USART), упрощенную процедуру программирования микроконтроллера благодаря эмуляции сменного носителя давая доступ к флеш памяти микроконтроллера.

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

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


Для Начала нам потребуется зарегистрироваться на Mbed.org и добавить нужную нам платформу в список своих устройств.

Инструкция для чайников, нажми чтобы увидеть
Регистрация на Mbed.org


Для этого следуем по ссылке mbed.org/account/signup и следуя инструкциям, заполняем регистрационную форму.



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



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



Должно появиться сообщение «Welcome to mbed! To register a board, please plug the board in and click on MBED.HTM»



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



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



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



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


Установка драйверов.

На сайте Mbed.org в разделе нашей платформы, в низу мы можем увидеть ссылку перейдя по которой нам нужно скачать, установить и запустить:
  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
Режимы работы светодиодов.

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


USER LD2: зеленый светодиод пользователя, светодиод подключен к Arduino контакту D13, соответствующий контакту ввода/вывода микроконтроллера PA5 (контакт 21) или PB13 (контакт 34)
  • Когда значение ввода/вывода(I/O) высокого значения, светодиод включен.
  • Когда значение ввода/вывода(I/O) низкого значения, светодиод выключен.


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

Кнопки

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

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


Перемычка JP6 (IDD)

Перемычка JP6, помечена IDD, используется для измерения потребления тока микроконтроллером, для этого удалите перемычку и, подключите амперметр.
  • Перемычка Включена: STM32 микроконтроллер питается (по умолчанию).
  • Перемычка ВЫКЛ: амперметр должен быть подключен для измерения тока микроконтроллера STM32. Если нет амперметра, STM32 микроконтроллер не питается.


Встроенный ST-LINK/V2-1

Внутрисхемный отладчик/программатор ST-LINK/V2-1 поддерживает только SWD для устройств STM32.
Изменения по сравнению с ST-LINK/V2 версией:
Новые возможности, поддерживаемые в ST-LINK/V2-1:
  • Драйвера USB перенумерованы
  • Интерфейс виртуального порта COM по USB
  • Интерфейс Устройства хранения данных по USB
  • USB менеджер питаниея

Особенности не поддерживаемые ST-LINK/V2-1:
  • SWIM интерфейс.(нужно для программирования STM8)
  • Минимальное поддерживаемое напряжение приложений ограниченно до 3 В

Режимы работы встроенного ST-LINK/V2-1:
Состояние перемычек Значение
обе CN2 перемычки одеты ST-LINK/V2-1 работает программируя микроконтроллер на плате (по умолчанию)
обе CN2 перемычки сняты ST-LINK/V2-1 работает программируя микроконтроллер по внешнему разъему CN4 (поддерживается SWD)

Распиновка разъема SWD:
Pin CN4 Значение
1 VDD_TARGET VDD для устройства
2 SWCLK SWD такт
3 GND Земля
4 SWDIO SWD ввод/вывод данных
5 NRST сброс программируемого МК
6 SWO Не используется


Разделение печатной платы

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 к ПК.

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

Если этот порядок не соблюдается, то плата может питаться сначала по VBUS потом по VIN или E5V, при этом может выйти из строя порт USB на компьютере или возникнут глюки микроконтроллера (! То же самое относиться к кнопке сброса!)
Когда плата будет питаться от VIN или E5V, конфигурация перемычек должна быть следующая:
  • Перемычка на JP5 между pin 2 и pin 3.
  • Перемычка удалена на JP1.

Внешний источники питания:
Вход питания Контакты Разъемов Напряжение Ток Ограничение
VIN CN6 pin 8, CN7 pin 24 от 7V до 12V 800 mA 800 mA если Vin=7 V, 450 mA если 7 V<Vin (< или =) 9 V, 250 mA если 9 V<Vin (< или =) 12 V
E5V CN7 pin 6 от 4.75V до 5.25V 500 mA


(Собственно микро манул окончен. Можно выдохнуть и продолжить)

Для остальных достаточно запомнить что на плате есть перемычка 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, со скетчами тоже не возникает проблем.
Кордубин Сергей @Roon_Boh
карма
12,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (36)

  • +2
    Вижу что второй пост мой сразу кому то не понравился. Прошу отписываться так как ввиду того что я обычный смертный, не могу читать мысли. И следственно не могу понять причины, хотя возможно просто не читали под спойлером
    Сведения для любопытных, нажми чтобы увидеть. ОСТОРОЖНО!
    • +5
      Забей на них, обычное дело.
      • +2
        Смотря кому и куда забивать и что забивать. Можно же и переборщить =)
        • 0
          Не, правда, забейте. Тут уже много лет есть некие, судя по всему, боты, в количестве двух-трех штук, которые просто ходят и минусют _все_ появляющиеся посты сразу после публикации. Почти у любой статьи в определенных хабах будут эти три минуса.
  • 0
    а под Linux есть варианты? у Arduino нет с этим проблем!
    • 0
      Заранее оговорюсь что я не сторонник спорить что лучше. Как понять ваш вопрос? что под Linux? Микроконтролер под Linux? Да есть. Можно ли на эту плату Linux? При желании все можно. Среда разработки под Linux? Да есть.
      • 0
        Именно под IDE и тулчейны был вопрос.
        • 0
          IDE эклипс например, тулчены на сайте производителя. Но сам лично еще не пробывал
    • +2
      Под stm32 можно вполне комфортно разрабатывать в Linux и без каких-либо пробем. Собственно я так и делаю.
      Компиляция с помощью соответствующего arm-gcc тулчейна и прошивка с помощью нативного stlink.
      Лично я пишу код в VIM и отлаживаю в консольном gdb, но при большом желании без проблем прикручиваются Eclipse и другие IDE.
      • 0
        +5
      • +1
        Кроме stlink можно ещё использовать OpenOCD, в его дистрибутив входят конфиги для всех семейств STM32 и отладчиков ST-Link 1/2/2.1
        Для разработки также можно использовать Qt Creator.
  • 0
    Есть ли альтернатива использованию mbed.org?
    Среда разработки под Linux? Да есть.

    А подробнее?)
    • 0
      Конечно же есть, от платных до бесплатных, мало того ST выпустила STM32CubeF4 полная библиотека, можете ее использовать почти в любом IDE.
    • 0
      Я уже не говорю о таких вещах как программы для настройки тактовых генераторов и прочее, ST старается упростить процесс программирования и сделать его максимально доступным
  • 0
    Подскажите новичку:
    Мне нужно снимать показания с счетчиков воды.
    1. Использовать радио передатчик без внешнего источника питания и передавать значения — 0, 1 (цепь замкнута, цепь разомкнута)
    2. Могу ли я использовать N батареек для автономной ее работы до года?
    Подойдет ли для этих целей Nuleo-F401?

    Если ли у нее часы реального времени?
    • 0
      RTC встроенный есть, так же есть режим работы в энергосберегающем режиме, но для вашего приложения есть другие серии, они меньше потребляют энергии. Что касается батареек, то вы можете сконфигурировать питание от 3.3 Вольт, и отдельно часов реального времени, добавить Аккумулятор как на материнских платах Компьютера, это обеспечит вам работу тактового генератора, и сохранение оперативных данных, когда внешнее питание пропадет. Но рекомендую самому ознакомиться что к чему так как я тоже новичок.
    • 0
      Насчет радио передатчика, без питания, то наверное это на базе RFID решений, но тогда будут ограничения по частоте смены логической еденицы. Как я себе представил ваше устройство, то оно просто представляет из себя катушку, которую то мы замыкаем то размыкаем,, но Лучше подсчитайте максимальную частоту, и соберите приложение на базе RFID. хотя можно и без него. Есть такое дело как Энкодер, есть такое дело как турбина, думаю два этих устройства при объединении даст вам лучший результат.
    • 0
      для ваших целей лучше использовать что-то вроде nrf24le1
  • +2
    Посмотрел сайт mbed.org.
    С одной стороны, нельзя не признать ..., но, с другой стороны, нельзя не отметить…
    Впечатление весьма двойственное.
    Наверное для начинающего вполне прилично и быстро, но вот для нормальной работы — что то сомневаюсь.
    • 0
      Полностью с вами согласен, один из минусов отсутствие возможности работы отладчика, но как новичок который об этом ничего не знает скажу что не испытываю трудностей, так как на плате есть виртуальный ком, и я просто вывожу информацию о ходе операции, (вообще то виртуальный ком сам по себе хорош для того чтобы собрать пробный станочек с ЧПУ). Второй минус не сразу понятно что и как у них организованно. Ну и факт о том что новички как правило плохо знают иностранные языки.
      • 0
        Ну и факт о том что новички как правило плохо знают иностранные языки.
        Английский давно уже является лингва франка во многих областях науки, технологий и т.д. В наше время не знать его хотя бы на уровне чтения документации — просто несерьёзно, особенно для программиста. Конечно, качественный перевод лишним не бывает, но зачастую заниматься им просто нерационально (да и некому), и, как следствие, незнание английского резко отрезает разработчика от огромного пласта ценной информации. К тому же, перевод всегда отстаёт по времени, если только не делается параллельно с написанием оригинала.
        • 0
          Это понятно, проблема в том, что они именно стараются перевести, как в школе учат, а не воспринимать на английском.
  • 0
    Совсем не ясно в чём прикол-то это штуковины!?
    • –1
      STM32, Стильно, модно, молодежно! :) А по факту производительность как у TI Stellaris, но нету USB host зато есть совместимость с шилдами от ардуино.
      • 0
        Вы про Отладочную плату от Texas Instruments с процессором Cortex-M4F? Чесно говоря не задавался этим вопросом. Но USB а тем более режим работы как хост для новичков это не то чтобы темный лес, а скорее трясина в которой они увязнут. И целевая аудитория у этих плат разная.
      • 0
        нету USB host
        Цитата от STM:
        USB 2.0 full-speed device/host/OTG controller with on-chip PHY
        • –1
          Возможно я чего то не понял но просто так подцепить USB вроде как не получиться, там какая то ПЛИС нужна, и из той же цитаты там 2 таких порта.
        • 0
          В контролере может и есть, а вот разьема на плате я не увидел
          • 0
            сделай свой шилд. Заодно мат часть окрепнет. Зачем вам на плате начального уровня USER_USB?
      • 0
        как странно… «зато есть совместимость с шилдами от ардуино»… Так для этого есть сама Arduino! просто кто-то в очередной раз хочет изобрести велосипед и на почве этого прославиться, как новый убийца чего-то модного…
        • 0
          Мне от этого был только плюс, в одном устройстве простота Arduino, и интересующий меня STM32. Велосипед не изобретали, скорее было бы точнее выразиться к внедорожнику прилипли на ножной привод.
  • 0
    В пункте «Сведения для любопытных, нажми чтобы увидеть. ОСТОРОЖНО!»
    очень не корректный перевод есть.

    ST-LINK/V2-1 поддерживает питание платформы по USB, сам программатор при этом потребляет ток до 100 мА.

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


    В оригинале

    The ST-LINK/V2-1 supports USB power management allowing to request more than
    100 mA current to the host PC.
    All parts of the STM32 Nucleo board and shield can be powered from the ST-LINK USB
    connector CN1 (U5V or VBUS). Note that only the ST-LINK part is power supplied before
    the USB enumeration as the host PC only provides 100 mA to the board at that time. During
    the USB enumeration, the STM32 Nucleo board requires 300 mA of current to the Host PC.
    If the host is able to provide the required power, the targeted STM32 microcontroller is
    powered and the red LED LD3 is turned ON, thus the STM32 Nucleo board and its shield
    can consume a maximum of 300 mA current, not more.
    • 0
      это здорово наверное что вы нашли ошибку, был бы признателен за помощь в осмыслении ошибки.
      • 0
        ST-LINK/V2-1 поддерживает управление питанием через USB, позволяя запрашивать более 100мА.
        Все части платы STM32 Nucleo и шилдов могут питаться от USB разъёма ST-LINK CN1 (U5V или VBUS).
        Заметьте, что программатор ST-LINK — это единственная часть платы, которая питается до того, как плата выполнит согласование с USB-хостом (другими словами до того, как загрузится драйвер USB устройства).
        Во время согласования с USB-хостом STM32 Nucleo запрашивает 300мА.
        Если компьютер способен предоставить запрашиваемую мощность, тогда питание поступает на сам микроконтроллер STM32 и загорается красный светодиод LD3, таким образом STM32 Nucleo и шилды могут потреблять не более 300мА.
        • 0
          Если конкретно про помощь в осмыслении, то

          — программатор ST-LINK/V2-1 потребляет около 45-50мА — это я замерил
          — USB устройства без драйверов могут потреблять не более 100мА — это стандарт USB
          — после загрузки драйверов USB устройства могут потреблять полную мощность порта, до 500мА USB2.0 и до 900мА USB3.0, но STM32 Nucleo запрашивает только 300мА на этапе подключения к USB, поэтому 300мА — это максимально разрешённый ток для всего устройства на базе STM32 Nucleo.
          — STM32 Nucleo не будет работать без драйверов, так как питание на сам микроконтроллер не будет поступать до полного подключения к USB, тоесть до согласования с USB-хостом и загрузки драйвера. Несмотря на то, что 100мА хватит на питание как программатора, так и микроконтроллера вместе взятых.
          — Если хочется всё же запустить STM32 Nucleo без драйверов, то нужно просто поставить перемычку JP1. Питание работать будет, перепрограммировать контроллер вы не сможете.
          • 0
            Спасибо, за уточнение =)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.