Начало работы с STM32 (Blue Pill) с помощью Arduino IDE


Для многих энтузиастов Arduino стала первой платой, с которой они начали свое знакомство с электроникой и микроконтроллерной техникой. Но по мере того как их навыки росли они стали замечать, что плата Arduino не очень хорошо подходит для промышленных задач и ее 8-битный центральный процессор очень медленно работает по сравнению со многими современными микроконтроллерами. Хорошей заменой плате Arduino в данном случае является плата разработки STM32 под названием STM32F103C8T6, которую также называют "синей таблеткой" (Blue Pill). Данная плата содержит в своем составе 32-битный процессор с архитектурой ARM Cortex M3, который по производительности значительно превосходит 8-битный микроконтроллер AVR в составе платы Arduino Uno.

Внешний вид проекта мигания светодиодом с помощью платы STM32F103C8T6

Также дополнительным преимуществом платы STM32F103C8T6 является то, что ее можно программировать с помощью знакомой многим среды Arduino IDE. В данной статье мы рассмотрим начало работы с платой STM32F103C8T6 (Blue Pill) и запрограммируем в ней мигание встроенного светодиода с помощью Arduino IDE.

Кроме рассматриваемой в данной статье платы STM32 Blue pill существуют и другие популярные типа плат на основе платформы STM32, например, плата STM32 Nucleo 64. В ближайшее время, надеюсь, на нашем сайте появится статья про начало работы с данной платой.

Необходимые компоненты

  1. Плата разработки STM32F103C8T6 (STM32 Blue Pill) (купить на AliExpress).
  2. Плата FTDI (3.3V) (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Общие принципы работы STM32 (Blue Pill)

Плата STM32 (Blue Pill) является платой разработки, основанной на микроконтроллере ARM Cortex M3. По своему внешнему виду она очень похожа на плату Arduino Nano, но по производительности она ее значительно превосходит. Внешний вид платы STM32 (Blue Pill) показан на следующем рисунке.

Внешний вид платы STM32 (Blue Pill)

Платы STM32 стоят значительно дешевле официальных плат Arduino. "Сердцем" платы STM32F103C8T6 является микроконтроллер от компании STMicroelectronics. Также плата содержит два кварцевых генератора – один на частоту 8 МГц, а другой – на частоту 32 кГц, который используется для управления внутренними часами реального времени (Real Time Clock, RTC). Микроконтроллер платы поддерживает работу в спящих режимах, что делает его эффективным для применения в устройствах, запитываемых от батареек/аккумуляторов.

Поскольку микроконтроллер платы работает от напряжения 3.3V, плата также содержит встроенный регулятор напряжения, понижающий напряжение с 5V до 3.3V для подачи питания на микроконтроллер. Хотя микроконтроллер платы работает от 3.3V, большинство контактов общего назначения (GPIO) платы хорошо переносят и напряжение 5V (но не все – будьте внимательны в данном вопросе).

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

Некоторых вполне резонно интересует вопрос почему плата STM32F103C8T6 называется "синей таблеткой" (Blue Pill). Точного ответа в сети на этот вопрос нет. Может быть, она называется так потому, что она окрашена в синий цвет, или потому, что она способна придать громадное "ускорение" вашим проектам.

Спецификация платы STM32F103C8T6

В данной плате используется микроконтроллер STM32F103C8, построенный на архитектуре ARM Cortex M3. Название платы STM32F103C8T6 обозначает следующее:

  • STM » обозначает производителя STMicroelectronics;
  • 32 » 32-битная архитектура ARM;
  • F103 » показывает архитектуру ARM Cortex M3;
  • C » 48-pin;
  • 8 » 64KB Flash памяти;
  • T » тип корпуса LQFP;
  • 6 » диапазон рабочих температур от -40°C до +85°C.

Технические характеристики микроконтроллера платы STM32F103C8T6:

  • архитектура: 32-bit ARM Cortex M3;
  • рабочее напряжение: от 2.7V до 3.6V;
  • рабочая частота процессора: 72 MHz;
  • число контактов GPIO: 37;
  • число контактов с поддержкой ШИМ: 12;
  • число аналоговых контактов: 10 (на них стоят 12-битные АЦП);
  • количество портов USART: 3;
  • интерфейсов I2C: 2;
  • интерфейсов SPI: 2;
  • Can 2.0: 1;
  • таймеры: 3 (16-битных), 1 (PWM, ШИМ);
  • Flash память: 64KB;
  • RAM (ОЗУ): 20kB.

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

Назначение контактов (распиновка) STM32 Blue pill

Распиновка платы STM32 Blue pill приведена на рисунке ниже. Как вы можете видеть, напротив каждого контакта краской нанесено его соответствующее обозначение. Обозначение контактов похожи на те, которые используются в платах Arduino. G обозначает общий провод/землю (ground pin), 3.3V – выход стабилизированного напряжения 3.3V, контакт 5V может быть использован для подачи питания на плату, также плата может получать питание через разъем micro USB. Встроенный светодиод платы подключен к контакту PC13 микроконтроллера.

Распиновка платы STM32 Blue pill

Но, в отличие от плат Arduino, плату разработки STM32 необходимо вручную переводить в режим программирования (programming mode) используя контакты boot 1 и boot 0 на джампере. Более подробно этот вопрос мы рассмотрим в разделе про программирование платы.

Программирование платы STM32F103C8T6 (STM32 Blue Pill)

STM32 является микроконтроллером семейства STMicroelectronics, поэтому все известные способы программирования ARM чипов применимы и для него. Одна из самых известных и часто используемых для его программирования интегрированных сред разработки (IDE) – это Keil ARM MDK. Также можно использовать такие программы как IAR workbench, Atollic TrueStudio, MicroC Pro ARM, Crossworks ARM, Ride 7, PlatformIO+STM32 и т.д.

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

Схема проекта

Для программирования платы STM32 Blue Pill с помощью Arduino IDE мы будем использовать плату FTDI, ее контакты Rx и Tx мы будем подключать к плате STM32 как показано на следующей схеме.

Схема подключения платы FTDI к плате STM32 Blue PillКонтакт Vcc платы FTDI подключен к контакту 5V платы STM32, а земля платы FTDI подключена к земле (Ground) платы STM32. Контакты Rx и Tx платы FTDI подключены к контактам A9 и A10 платы STM32 соответственно.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Программирование SMT32 через разъем Micro USB

Вы, наверное, удивлены почему в данной статье мы рассматриваем программирование платы SMT32 через последовательный порт с помощью платы FTDI, а не через разъем Micro USB, присутствующий на плате. Здесь все просто. Программирование SMT32 через разъем Micro USB будет рассмотрено в одной из последующих статей на нашем сайте, а здесь мы рассмотрим немного "архаичный", но, тем не менее, рабочий, а в некоторых случаях и более удобный способ программирования платы STM32 Blue Pill с помощью платы FTDI.

Теперь на нашем сайте доступна статья про программирование платы STM32 Blue Pill через USB порт.

Подготовка Arduino IDE для программирования платы STM32 (Blue Pill)

Для этого выполните следующую последовательность шагов.

Шаг 1. Если у вас еще не установлена Arduino IDE, то скачайте и установите ее по этой ссылке. Убедитесь, что в процессе ее установки вы выбрали правильную операционную систему.

Шаг 2. После установки Arduino IDE нам необходимо скачать и установить в нее пакеты для работы с платой STM32. Для этого в Arduino IDE откройте пункт меню File -> Preferences.

Шаг 3. Откроется новое диалоговое окно. В данном окне в поле additional Boards Manager URL вставьте следующую ссылку:

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Добавление поддержки плат STM32 в Arduino IDE

Затем нажмите OK.

Шаг 4. После этого откройте пункт меню Tool -> Boards -> Board Manager. Откройте окно менеджера плат, в нем выполните поиск “STM32F1” и установите найденный пакет.

Шаг 5. После завершения процесса установки пакета в пункте меню Tools найдите пункт Generic STM32F103C series как показано на рисунке ниже. Убедитесь в том, что выбран вариант тип 64kFlah, скорость CPU 72MHz и измените метод загрузки (upload method) на Serial.

Выбор типа платы Generic STM32F103C series в Arduino IDE

Шаг 6. Теперь подключите вашу плату FTDI к компьютеру и в диспетчере устройств Windows проверьте к какому COM порту произошло ее подключение. После этого выберите этот же порт в пункте меню Tools->Port в Arduino IDE.

Шаг 7. Теперь, когда все необходимые настройки сделаны, проверьте правый нижний угол Arduino IDE – в нем вы должны увидеть номер COM порта, к которому подключена ваша плата. В нашем случае это оказался порт COM7.

Проверка сделанных настроек в правом нижнем углу Arduino IDE

Теперь ваша Arduino IDE готова к программированию платы разработки STM 32 Blue Pill.

Загрузка программы мигания светодиодом в плату STM32F103C8T6

Чтобы проверить корректность работы платы STM32F103C8T6 и возможность ее программирования с помощью Arduino IDE загрузим в нее простую программу мигания светодиодом. Пример этой программы может быть найден в следующем пункте меню Arduino IDE:

Пример программы мигания светодиодом для плат STM32 в Arduino IDE

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

Светодиод в представленном примере будет мигать с интервалом в 1 секунду.

Как уже указывалось ранее, перед загрузкой программы в плату STM32 ее необходимо перевести в режим программирования, для этого нужно переместить джампер boot 0 в нижнее положение. Положения данного джампера для режимов работы и программирования показано на следующем рисунке.

Положения джампера платы STM32 для переключения между режимами программирования и работы

Перед загрузкой программы удостоверьтесь в том, что данный джампер установлен для режима программирования, после этого нажмите кнопку сброса (Reset button). Как только вы нажмете данную кнопку плата перейдет в режим программирования и зеленый светодиод выключится – это будет означать что плата готова к загрузке программы. Нажмите кнопку загрузки программы (upload button) в Arduino IDE, после этого ваша программа должна скомпилироваться и записаться в плату. Если все работает так, как надо, то на экране вы должны увидеть примерно следующую картину.

Индикация процесса успешной загрузки программы в плату STM32

Примечание: иногда Arduino IDE будет показывать сообщение Uploading даже если программе не удалось успешно загрузиться в плату. Поэтому по процентам загрузки программы (выделены оранжевым цветом в консоли) проверяйте действительно ли программа загрузилась успешно.

Тестирование работы проекта

При успешной загрузке программы в плату STM32 вы должны увидеть как светодиод зеленого цвета начнет мигать с интервалом в 1 секунду. Вы можете увеличить или уменьшить этот интервал по своему желанию.

После загрузки программы в плату необходимо джампер boot 0 снова перевести в режим работы чтобы при следующем после выключения подаче питания на плату программа начала выполняться автоматически.

Тестирование работы проекта

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
607 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован.