Андрей Смирнов
Время чтения: ~15 мин.
Просмотров: 13

Alex_EXE

LessonSTM.png

В уроке получим минимальную информацию об отладочной плате STM32F103C8T6. Добавим к плате компоненты необходимые для загрузки программ в микроконтроллер (прошивка FLASH).

Предыдущий урок     Список уроков     Следующий урок

В наших уроках будем использовать отладочную плату на базе микроконтроллера STM32F103C8T6.

Часто ее называют  ”Blue pill”, в переводе – синяя таблетка или пилюля.

По моей партнерской ссылке плата стоит всего 175 руб.

Технические характеристики платы STM32F103C8T6.

В последующих уроках мы будем подробно изучать функциональные возможности микроконтроллера и платы. Сейчас коротко, только общие характеристики.

Микроконтроллер
Число разрядов 32 бита
Максимальная частота 72 мГц
Объем памяти программ (FLASH) 64 / 128 кБайт
Объем памяти данных (RAM) 20 кБайт
Выводы 37
Таймеры общего назначения 3
Расширенный таймер  с ШИМ управления двигателем 1
Системный таймер 1
Сторожевые таймеры 2
UART 3
SPI 2
I2C 2
CAN 1
USB 1
Контроллеры прямого доступа к памяти 7
АЦП 2 АЦП, 10 каналов, время преобразования 1 мкс
Часы реального времени есть
Аппаратный модуль расчета CRC есть
Напряжение питания микроконтроллера 2 … 3,6 В
Напряжение питания платы 5 В
Ток потребления до 50 мА
Размеры платы 53 x 22,5 мм

Выводы микроконтроллера непосредственно соединены с выводами платы.

Lesson2_3.png

Сейчас обращаем внимание на следующее:

  • Микроконтроллер питается от напряжения 3 В и высокие уровни выходных и входных дискретных сигналов у него тоже 3 В. Но часть выводов, обозначенных на схеме закрашенной точкой, допускают при использовании в качестве входов подключение сигналов с уровнями 5 В. Так называемые толерантные к 5 В входы. Остальные входы рассчитаны на напряжение не более напряжения питания, обычно 3 В. Повышение этого напряжения свыше 4 В приведет к повреждению микроконтроллера.
  • При использовании в качестве выходов, выводы микроконтроллера допускают вытекающий и втекающий ток не более 20 мА. Рекомендуется не более 8 мА. Но 3 вывода, отмеченные восклицательным знаком, могут быть использованы только в схемах с втекающим током и не более 3 мА.
  • К выводу PC13 подключен светодиод общего назначения. Светится он при низком уровне сигнала.

Система питания платы.

Схема цепей питания выглядит так.

Lesson2_4.png

Узел вырабатывает напряжение 3,3 В, необходимое для питания микроконтроллера. Используется стабилизатор XC6204.

Он получает питание 5 В либо с USB порта, либо с вывода платы 5 V. Эти цепи соединены непосредственно без защитного диода. Поэтому использовать плату с одновременным питанием от этих двух источников нельзя.

Ток потребления микроконтроллера зависит от частоты тактирования и использования периферийных устройств.

Частота, мГц Ток потребления, мА
Все периферийные устройства включены 72 50
48 36
36 29
24 20
16 15
8 9
Все периферийные устройства выключены 72 33
48 25
36 20
24 14
16 11
8 7

Я привел эту таблицу, чтобы вы поняли насколько важно выбирать оптимальную частоту тактирования, особенно в приложениях критичных к энергопотреблению. Микроконтроллеры STM32 позволяют это делать гибко и оперативно.

Вот полная принципиальная схема платы.

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

Четырех контактный разъем на торце платы предназначен для загрузки программ с помощью аппаратного программатора, например StLink. Но в микроконтроллере существует программный загрузчик, позволяющий зашить программу через UART 1 (выводы A9 и A10). Он называется системным загрузчиком и зашивается в память микроконтроллера на этапе производства.

За режим работы платы отвечают  2 желтые перемычки.

Это обычный режим работы. При включении или сбросе запускается программа из FLASH.

При таком положении перемычек запускается системный загрузчик. Это режим прошивки FLASH-памяти микроконтроллера.

При таком положении перемычек программа загружается в ОЗУ. Используется на этапе отладки для сохранения ресурса программирования FLASH-памяти.

Соответствие состояния входов BOOT и режимов работы микроконтроллера STM32.  Перемычка BOOT0 на рисунках расположена сверху.

BOOT1 BOOT0 Режим запуска программы
Внутренняя FLASH
1
1 Системная память
1 1 Внутреннее ОЗУ

Таким образом, процесс программирования через системный бутлоадер выглядит так:

  • подключить выводы A9 и A10 к COM порту компьютера;
  • установить перемычку BOOT0 в режим запуска из системной памяти;
  • сбросить микроконтроллер;
  • запустить на компьютере программу прошивки FLASH микроконтроллера;
  • вернуть перемычки в состояние запуска программы из FLASH;
  • сбросить микроконтроллер.

Во первых в современных компьютерах не часто встречается COM порт. Во вторых слишком много манипуляций с перемычками и сбросом. Утомительное занятие.

Я упростил этот процесс так.

Плату подключил к компьютеру через мост USB-UART. Я использовал PL2303, но можно применить любой другой модуль, даже плату Ардуино со встроенным преобразователем интерфейсов. Например, Arduino Nano. Надо только соединить вход сброса с землей для того, чтобы микроконтроллер не влиял на сигналы преобразователя интерфейса CH340.

Вместо перемычки BOOT0 я установил кнопку. Еще одну кнопку припаял на сигнал сброса. Штатной кнопкой сброса пользоваться неудобно.

Вот моя схема отладочного модуля.

Резистор 10 кОм припаян между выводами трех контактного разъема PLS, установленного вместо перемычки BOOT0.

Питание плата STM32 получает от моста USB-UART. На нем надо установить перемычку питания в положение 5 В.

У меня все это выглядит так.

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

Для программирования:

  • Нажимаю и удерживаю кнопку ПРОШИВКА, кратковременно нажимаю кнопку СБРОС.
  • Загружаю программу во FLASH микроконтроллера.
  • Отпускаю кнопку ПРОШИВКА.
  • Нажимаю кнопку СБРОС.

Все это делается пальцами одной руки.

В следующем уроке будем устанавливать программное обеспечение для разработки приложений STM32, создадим и загрузим в микроконтроллер первую тестовую программу.

Предыдущий урок     Список уроков     Следующий урок

Поддержать проект в TECHNO BROTHER1 год назад

Добрый… день? Сегодня я хотел бы поделиться моим опытом начинающего экспериментатора с stm32. В данном посте мне хотелось бы помочь тем, кто хочет перейти с ардуино или просто начать использовать stm32 для своих поделок. Я и сам не имею богатого опыта работы с данными контроллерами, но буду рад поделиться своим первым опытом, и сделанными на этом пути ошибками. Надеюсь, кому-то это будет интересно.

Для начала, нам понадобится stm32f103C8T6, и дебаггер ST-Link V2. И то и другое можно купить в китае или в местных магазинах электроники, цена обоих, примерно по 2$. А так же нам потребуется 4 джампера, для соединения этих устройств. Этого будет достаточно, что-бы помигать светодиодом или управлять какими-либо внешними устройствами, но начнем с малого.

Первое, что нам понадобится — установить драйвер для программатора. Его можно найти здесь (внизу): http://www.st.com/en/development-tools/stsw-link009.html

Кроме того нам понадобятся STM32CubeMX его качаем тут: http://www.st.com/en/development-tools/stm32cubemx.html

А так же среда разработки, я предпочитаю официальный софт с поддержкой, потому берем ставую не так давно бесплатной Atollic TrueSTUDIO вот тут: http://www.st.com/en/development-tools/truestudio.html

Затем, нам нужно подключить, используя 4 джампера, наш программатор к плате контроллера следующим образом:

После этого, если возможность записи прошивки в память на вашей плате не заблокирована — все готово к созданию нового проекта. Если же запись в память вашей платы заблокирована, вы можете решить это, подключив плату аналогичным образом, но используя улилиту STM32 ST-Link Utility и переключив джампер Boot0 в положение 3.3v. Что такое Boot0 можно глянуть тут: http://wiki.stm32duino.com/images/a/ae/Bluepillpinout.gif но вообще эта статья не об этом.

Итак, для начала создадим проект, используя STM32CubeMX, эта программа предназначена для удобной инициализации периферии и создания проекта, для IDE в которой мы будем далее работать, поверьте, куб действительно прекрасен. После нажатия на кнопку «New Project», попадаем на окно выбора чипа. В нашем случае это stm32f103c8tx. Выбираем его и нажимаем «Start Project».

Следующее за этим окно выгляит довольно пугающе для начинающих, но в действительности, не представляет особых сложностей. Перед нами изображение установленного на плату чипа микроконтроллера. И все что нам нужно для начала это помигать светодиодом, потому, по аналогии с ардуино, если вы с ним работали, выбираем ножку, к которой присоединен светодиод, которым мы будем мигать. В нашем случае — это ножка PC13. Кликаем на ножку и выбираем GPIO_Output.

Вообще в stm32, в отличие от ардуино, где визуально пины делятся только на аналоговые и цифровые, пины разделены на группы, PA, PB, PC, PD. Это обусловлено тем, что stm имеет 32 разрядные регистры (GPIOA, GPIOB, GPIOC, GPIOD) для управления выходами, потому каждый регистр может управлять 16 выходами микроконтроллера, у микросхем старших поколений stm этих выходов очень много, потому было принято решение сгруппировать выходы, в соответствии с именами регистров.

Так же !ВНИМАНИЕ нужно включить возможность дебага ВНИМАНИЕ! микроконтроллера иначе, прошивка у вас зальется только 1 раз а затем вам потребуется выводить ваш контроллер из состояния легкого ступора, потому как ST-Link не будет его видеть. Если это произошло, вам прийдется потанцевать с бубном используя STM32 ST-Link Utility и так же переключив джампер Boot0 в положение 3.3v.

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

Stm32 может тактироваться от любого из 2х встроенных резонаторов, медленного и быстрого LSI 40KHz(по умолчанию) и HSI 8MHz, встроенных в сам чип и таким образом, обходиться без внешнего резонатора. Либо же использовать внешние резонаторы с частотой 4-16MHz (HSE), если вам нужно ускорить ваш камень или LSE c частотами 0-1000 KHz если вам нужно жертвовать скоростью ради энергопотребления.

Настройку частоты камня и переферии делаем во вкладке ClockConfiguration следующим образом, для этого просто задаем значение 72 в поле HCLK(MHz) и нажимаем enter. Затем соглашаемся с тем, что б STM32CubeMX настроил все за нас и нажимаем снова ок, готово. Внимание! Если на предыдушем шаге вы не вклчили RCC -> HSE -> Crystal/Ceramic Resonator, то вы не сможете установить значение 72 MHz и ваш камень может работать на частоте максимум 36MHz используя внутренний кварц.

На этом конфиг закончен, теперь необходимо создать проект, для этого выбираем кнопку в виде шестерни сверху:

В открывшемся окне заполняем поля:

Project Name, Project Location и ВНИМАНИЕ! выбираем IDE для которой будет создан наш проект, в нашем случае это TrueSTUDIO, если этого не сделать, то будет создан проект для IAR (EWARM).

Так же, я рекомендю переключиться на следующую вкладку (Code Generation) и выбрать в разделе Generated files пункт Generate peripheral initialization as a pair of .c/.h files per peripheral. Это позволит очистить ваш main файл проекта от инициализации перефирии, путем выноса ее в отдельные файлы. Я рекомендую делать так всегда.

Затем нажимаем ок и создаем проект. Если вы все сделали верно, то куб сразу же предложит вам скачать необходимые для вашего контроллера библиотеки и затем отрыть проект в Atollic TrueSTUDIO:

Все что нам необходимо, это добавить следующий код внутрь цикла while в нашем main и нажать debug, перед этим убедитесь, что оба режима бут отключены (желтые переключатели установлены, как на первом фото):

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);

HAL_Delay(100);

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);

HAL_Delay(100);

Дождаться загрузки и выйти из режима дебага. К сожалению, заливка кода в контроллер без входа в режим дебага по умолчанию невозможна в AtollicTRUESTUDIO, но впринципе это можно обойти потанцевав с бубном, хотя эта статья не об этом. Если все было сделано верно, то светодиод на плате замагает с заданной частотой.

Это моя первая статья про микроконтроллеры и первая статья по электронике в целом, не судите строго, надеюсь она будет интересна хотя бы кому-то. Если будет интерес с вашей стороны — дайте знать, буду писать про stm32 дальше.

STM32F103-USBCNC-Pinout.jpg

Для станка ЧПУ мне понадобился контроллер с поддержкой USB. Держать компьютер с LPT портом мне надоело, к тому же таскать каждый раз системный блок на балкон, где у меня установлен станок — надоело еще больше.

Я давно уже видел на aliexpress различные расширители портов для ардуино, на всякие граверы, выжигатели, 3D принтеры, а значит должно существовать решение и для ЧПУ. И такое решение есть — библиотека GRBL.

И тут меня ждало небольшое разочарование.

-во первых скорость работы — у меня одна ось сделана на каленой шпильке из стали 45, но там метрическая резьба, и я получаю либо нормальную скорость, при свободном перемещении с полношаговым режимом шагового двигателя (и лишним шумом и резонансами) , либо низкую скорость, но зато более-менее тихую работу.

-во вторых библиотека это требует чип Atmega 328 , у меня же были только в наличии модули pro mini с atmega168

Ждать новые модули было лениво, и я стал искать. Для начала я нашел прошивку от древней версии GRBL (вроде это была версия 0,6) Но она оказалась глючная и практически все программы, отправляющие на нее G-код отказались от ее поддержки.

Я стал гуглить и наткнулся вот на этот вот форум http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=21393&p=477776#p477776

И тут удача, STM32 STM32F103C8T6 Blue pill у меня были, и при этом GRBL доработали, и вместо трех осей он поддерживает аж цеых 5, благо у данного микроконтроллера ножек хватает.

Снимок.jpg
GRBL на STM32

Об этой отладочной плате можно посмотреть информацию здесь http://wiki.stm32duino.com/index.php?title=Blue_Pill , у меня было несколько таких отладочных плат, ссылки на эти отладочные платы, а так же на метриалы, и то, чем можно все это дело прошить или отладить будут в конце статьи.

Стоит отметить, что за основы был взята портированая прошивка с этого проекта https://github.com/usbcnc/grbl/wiki , GRBL 1.1f полностью перенесенный на stm32f103 с сохранением большей части исходного кода и даже комментариев от родного GRBL. Как и в оригинальной (под модули ардуино) прошивке имеем 3 оси, но уже, как утверждает автор переноса, частота возрастает, до 180кГц! На сколько это честно — не буду судить, но скорее всего реальная скорость будет ниже раза в полтора.

Эту прошивку я не рассматривал, и сразу скачал модернизированую на 5 осей версию с форума. Сам проект битает вот здесь https://github.com/robomechs/6-AXIS-USBCNC-GRBL

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

Прошивку я заливал при помощи китайского клона st link, но вполне сгодится и переходник USB to COM, ( USART или иными словами RS232) ссылки на проверенный переходник так же в конце статьи.

заливка прошивки не составляет ни какого труда.

01.jpg
STM32 ST-LINK Utility

Для открытия файла с прошивкой необходимо выбрать File->OpenFile и выбрать файл для прошивки

02.jpg

Что бы подключиться к контроллеру необходимо нажать эту кнопку. Думаю не стоит напоминать, что контроллер уже необходимо подключить к программатору, а программатор ST-Link подключить к USB порту. Драйвера на ST-Link искать не нужно, они автоматически ставятся с утилитой (по крайней мере у меня так было). ST-Link и Blue pill соединяются согласно маркировки. В Blue pill для этого специально выведены 4 отдельных с короткой стороны — именно сюда и подключается программатор. Выводы подписаны, сложности быть не должно. Самое главное не перепутать провода питания между собой, если напутаете в сигнальных — ничего страшного, контроллер просто не будет читаться, а если перепутаете полярность, то плату с вероятностью 99,99% можно будет выбрасывать.

03.jpg

Для запуска процесса прошивки необходимо выбрать пункт Target->Program или Target->Program & Verufyty. Во втором случае процесс прошивки будет идти чуть дольше (секунд на 5-10) но программа проверит корректность залитой прошивки (сравнит их).

Сама прошивка занимает 5-20 секунд.

06.jpg

После успешной прошивки увидите вот эту надпись.

07.jpg

После завершения прошивки платка подключается просто через микро USB разьем, ни каких переходников ей не надо. Для платки потребуется поставить драйвер, чтобы конроллер определился операционной системой как COM порт https://www.st.com/en/development-tools/stsw-stm32102.html

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

STM32F103-USBCNC-Pinout-1024x724.jpg
распиновка Blue pill для GRBL

Остальная работа с модулем идентична работе с библиотекой GRBL на arduino, и описывать е я не буду, так же как и софт для отправки G-кода в контроллер. Скажу лишь то, что я пользуюсь программой Universal Gcode Sender

Ну а теперь обещанные ссылки и прошивка.

Сам файл прошивки

Файл прошивки для заливки в контроллер http://r13-project.ru/stm32grbl11/

Плата STM32F103C8T6 Blue pill

http://ali.pub/3h37sk,

http://ali.pub/3h3841,

http://ali.pub/3h386y

Плата Stlink ST-Link V2

http://ali.pub/3h38sc

http://ali.pub/3h390i

Драйвер шагового двигателя из видео

Я использовал драйвер на микросхеме TB6560 , но по этим микросхемам много противоречивых отзывов, поэтому рекомендую другой драйвер TB6600 (опять же по отзывам, хотя у меня и с этими дрйверами проблем не быо). Стоит учесть, что в первом дрйвере уже встроениа оптическая развязка, в случае аварии погорит только драйвер, не унеся с собой остальную электронику. Актуально было во времена управления через LPT порт компьютера, где это могло привести к выбрасыванию на помойку всего компа.

TB6560

http://ali.pub/4ilbdw

http://ali.pub/4ilbjj

http://ali.pub/4ilbo0

http://ali.pub/4ilbp6

TB6600

http://ali.pub/4ilbuf

http://ali.pub/4ilbzo

http://ali.pub/4ilc27

http://ali.pub/4ilc3y

Если не хотите приобретать отдельный программатор для STM32, тогда возьмите переходник USB to COM , им тоже можно прошить контроллер, программой FLASHER STM32 — STM32 Flash loader demonstrator

Я пользуюсь такими конверторами, и пока они меня не подводили.

http://ali.pub/3h3a28

http://ali.pub/3h3aiy

Подробнее про прошивку контроллера можно посмотреть в видео из этой статьи Настройка GRBL самодельного лазерного гравера на примере STM32 blue pill, там отдельно в видео показаны 2 способа прошить контроллер.

Подробнее о настройке библиотеки GRBL можете прочесть здесь: Настройки библиотеки GRBL 1.1f

Если возникнут вопросы пишите в комментарии или в  группе в контакте. https://vk.com/public179183134

Используемые источники:

  • http://mypractic.ru/urok-2-plata-stm32f103c8t6-zagruzka-programmy-vo-flash-pamyat-mikrokontrollera-cherez-sistemnyj-butloader.html
  • https://pikabu.ru/story/dlya_nachinayushchikh_stm32f103c8t6_5944637
  • http://r13-project.ru/2019/06/22/grbl-%d0%bd%d0%b0-stm32-stm32f103c8t6-blue-pill/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации