Минимальный рабочий набор, который даст вам прошить и запустить любой микроконтроллер STM32.

Микроконтроллер STM32 требует для подключения не так много, как к примеру серия LPC — однако, и здесь есть свои тонкости. Разобьём все требования по группам.

Питание

Необходимо обеспечить микроконтроллер питанием — Vdd и GND. Сложность заключается в том, что:

  1. В микросхеме обычно есть несколько линий Vdd и GND. Линии GND внутри кристалла соединены очень тонкими проводами, лишь для уравнивания потенциалов — по ним не может течь большой ток. Линии Vdd же зачастую вообще не соединены, и питают только свою отдельную часть микросхемы. Поэтому обязательно нужно соединить все контакты Vdd и GND микросхемы.
  2. Также обычно есть линии питания аналоговой части — AVdd и AGND. Их тоже нельзя оставлять без питания, подключите их к источнику опорного напряжения или к Vdd/GND, если требования к точности АЦП невысоки.
Ни в коем случае не забывайте это сделать, МК не запустится без питания аналоговой части. В даташитах и Reference manuals этому факту не уделено никакого внимания, однако опыт показывает что это так.

Сброс

В общем случае линия сброса не должна висеть в воздухе. Однако, она подтянута внутренним слабым резистором к «+», и исключительно для тестовых целей её можно оставить висящей. Конечно, идеальным решением будет применение специальных микросхем сброса — супервизора питания или формирователя сигнала сброса. Кстати, по умолчанию после сброса все ножки GPIO отключены для экономии питания, но есть и побочный положительный эффект: даже если они случайно замкнуты на землю или питание — КЗ не случится.

Помехи

В схемах с такой высокой скоростью работы становятся важными помехи от внешних и внутренних источников. Ведь при работе на 168МГц внутри микроконтроллера 168 миллионов раз в секунду переключаются миллионы транзисторов — все они, конечно, генерируют большое количество помех по питанию. Более того, эти помехи рождаются прямо внутри микросхемы, и действуют на неё же внутри — единственная для нас возможность как-то на них повлиять это установка хороших конденсаторов сразу возле корпуса микросхемы.

Что такое хорошие конденсаторы? Конечно, желательно плёночные, но в формате SMD их не бывает. Поэтому используем стандартные SMD-конденсаторы, но ставим их парами — я обычно применяю 10мкФ + 100нФ.

Зачем ставить маленький конденсатор параллельно большому, ведь их ёмкости сложатся? Маленький конденсатор имеет гораздо меньшее значение ESR (последовательного сопротивления), и сможет значительно быстрее реагировать на резкие изменения тока потребления и лучше сглаживать резкие выбросы. Большой же конденсатор обеспечит МК стабильным током, не зависящим от длины и индуктивности линии питания.

Большой конденсатор подобен катапульте, он «бьёт по площадям», но не обладает достаточной маневренностью для близкого контакта; маленький конденсатор не имеет большой силы, но благодаря своей проворности успевает отразить натиск мелких и резких помех.

В случае подключения AVdd к Vdd я также советую сделать хотя бы простой фильтр в виде пары конденсаторов вблизи AVdd и AGND (если есть AGND, если нет — подключите конденсаторы между AVdd и GND).

Режим загрузки

Все микроконтроллеры STM32 поддерживают несколько режимов загрузки — из пользовательского Flash, из RAM и из внешней памяти. Самый распространённый режим — это, конечно, загрузка из Flash. Он соответствует конфигурации BOOT0=0, BOOT1=0 — т.е. подключаем оба контакта BOOT к земле. Эти выводы не имеют подтяжек к линиям питания, поэтому их нельзя оставлять плавающими.

Также есть возможность загрузки встроенного бутлоадера, и приём прошивки через UART или USB, но пока не будем этого касаться.

Итого

Таким образом, минимальный рабочий набор для микроконтроллера STM32F050F4P6 — это 1 и 15 контакты на землю, а 5 и 16 — на +3.3В.

Для прошивки — 19 контакт подключите к SWDIO программатора, а 20 — к SWCLK. Землю программатора подключите к земле контроллера.