/*Внимание! В схеме присутствует ошибка, пин PB8_BOOT0 стянут на корпус, вместо подтяжки к +3.3V, ошибка в gerber файлах ещё не устранена, ожидайте обновления*/ Доброго времени суток!!! Позвольте представить вашему вниманию модель самодельной отладочной платы на базе STM32G431CB под названием STM32G431 DevBoard V1.1 (название присвоено для удобства), сочетающую высокую функциональность и доступность цены, которая обладает рядом преимуществ в сравнении с аналогичными разработками от компании STM и продуктами, представленными на AliExpress. Введение Краткий обзор семейства STM32G4 Анализ схемы электрической принципиальной Сравнение с аналогами Анализ печатной платы Монтаж компонентов на печатную плату Проверка работоспособности платы, создание тестовой прошивки Стоимость Вывод Файлы проекта на GitHub Список использованных источников В феврале 2021 года виртуозы из STMicroelectronics удивили нас серией микроконтроллеров STM32G4 вместе с отладочными платами на базе этого семейства. Однако на сегодняшний день высокая цена на отладочные платы ставит под вопрос их доступность для большинства энтузиастов (для меня в том числе) и профессионалов, работающих с stm32. По состоянию на 29.06.23 цена в Беларуси и России на оригинальные платы от STM колеблется от 50$ (nucleo) до 200$ (discovery). Если же взглянуть на аналоги, которые можно приобрести на AliExpress, то сразу видно, что они не примечательны в следующем: двухрядный штырьевой разъём, скудный выбор (мало продавцов), micro-usb, отсутствие посадочного места под Flash-память, ограниченный функционал (позже поясню) и всё ещё высокая стоимость. В связи с сложившимися обстоятельствами было принято решение создать свою уникальную печатную плату, которая будет лишена вышеперечисленных недостатков и позволит реализовать весь потенциал микроконтроллера STM32G431CB. За опору я буду брать слайды из официальной презентации STM32G4 компании STM. Она полностью на английском языке. В своих комментариях я буду стремиться к максимальной ясности, но не стану изменять (переводить) первоисточник в надежде на то, что мои читатели знакомы с техническим английским и без труда поймут содержание презентации (знание английского в этой области является необходимостью).   Тот, кто уже знаком с данным семейством, может пропускать этот раздел и переходить непосредственно к разделу "Анализ схемы электрической принципиальной". Довольно интересное семейство, т.к. оно относится к семейству Mainstream и предназначено для работы со смешанными сигналами. На рисунке 1 видно, что STM32G4 является продолжением развития семейства F3. Уже на слайде мы видим, что у данного микроконтроллера увеличена тактовая частота ядра Cortex-M4 до 170 МГц (🔥ух... горячо🔥). Данное семейство оснащено аналоговой периферией, что очень хорошо подходит для управления моторами, промышленным оборудованием, построения импульсных источников питания, коррекции коэффициента мощности и другое. В семейство STM32G4 интегрированы компараторы c настраиваемым уровнем гистерезиса, операционные усилители с настраиваемым программно коэффициентом усиления, ну и, само собой, АЦП, ЦАП и прочее (рисунок 2). Вся эта система собрана на одном кристалле. Таким образом, это уменьшает размеры печатной платы и стоимость проекта, так как теперь нет необходимости покупать дополнительные компоненты. Стоит также заметить, что всё данное семейство выпущено в малогабаритных корпусах. Стоит заметить ещё определённые особенности (рисунок 3): поддержка power delivery 3.0, наличие CAN-шин в одном контроллере до 3 штук, математический ускоритель (особенно полезен для управления моторами). Познакомившись кратко с семейством STM32G4 приступим к анализу схемы электрической принципиальной STM32G431 DevBoard V1.1 (рисунок 4). Рисунок может быть не совсем чётким, поэтому смотрите файл на GitHub, ссылка на все исходные файлы/документы в конце статьи. Итак, я взял всеми известные BluePill и BlackPill, склеил их, добавил что-то новое и получил нечто такое, о чём вы сейчас читаете😊.  Выделим основные моменты на схеме. На схеме мы видим микросхему Flash-памяти W25Q32. Установлен разъём USB Type C. Расширено количество выводов на штырьевом разъёме до 48 контактов вместо 40, как на платах аналогах. Установлены 3 кнопки: пробуждения (wake up), сброса (reset) и выбора режима загрузчика (BOOT0). Установлен LC-фильтр в цепи питания аналоговой периферии. Описав данное семейство в разделе "Краткий обзор семейства STM32G4", схему электрическую принципиальную STM32G431 DevBoard V1.1, а также проведя анализ доступных отладочных плат от STM и на AliExpress, я наконец-то могу раскрыть суть ограниченного функционала отладочных плат от STM и AliExpress, упомянутого в разделе "Введение": На плате NUCLEO или DISCOVERY от STM и китайских аналогах на базе G431 установлен micro-USB. Этот разъём уже ну совсем кажется устаревшим. Даже кабели приходится где-то в полках искать под этот разъём🤭. На плате STM32G431 DevBoard V1.1 этот недостаток устранён (установлен разъём USB Type C); На плате NUCLEO или DISCOVERY от STM и китайских аналогах на базе G431 есть пины под питание аналоговой части (VDDA, VSSA). Зачем-то эти пины привязывают к основному питанию от стабилизатора напряжения на 3.3В или к питанию от программатора. В описываемой самодельной плате добавлена перемычка между VDDA и VDD, разделяющая, таким образом питание аналоговой периферии c основным питанием микроконтроллера, чтобы при желании была возможность задать нужное напряжение питания операционных усилителей, компараторов и другой аналоговой периферии. По умолчанию, если не планируется делать какие-нибудь навороченные проекты, эту перемычку следует замкнуть (об этом расскажу подробно в разделе "Анализ печатной платы"). В данном контроллере есть интересный пин REF+ (стабильное опорное напряжение). Его назначение можете посмотреть на рисунке 4 (скриншот взят из "Reference manual. RM0440-STM32G4" с.230/2124). В описываемой плате добавлена перемычка между REF+ и VDDA, чтобы при желании была возможность использовать REF+ как вход или выход. На некоторых отладочных платах с AliExpress китайцы почему-то закорачивают цепь питания +5В между USB, стабилизатором напряжения и штырьевым разъёмом. С одной стороны это как обычно, но с другой стороны вы можете запитать плату, к примеру, от 12В, потом воткнуть USB и можно понять, что произойдёт. Поэтому этот момент решён следующим образом: добавлен защитный диод Шоттки, подключённый последовательно с разъёмом USB Type C. Таким образом, можно подключать внешнее напряжение выше 5В и при этом сохранять подключённым USB. Более того, параллельно в обход защитному диоду добавлена перемычка на тот случай, если вы не хотите подавать напряжение извне и не хотите иметь падение напряжения на диоде,  т.е. получать чистые +5В от USB (смотря правда насколько у вас точное питание от USB, но это всё лирика). Добавлено посадочное место под Flash-память, которого нет на плате NUCLEO и китайских аналогов. Это позволит открыть для себя возможности записывать большой объём данных, который слишком велик для внутренней памяти STM32. Расширено количество контактов на штырьевом разъёме до 48. Выведено на разъём больше выводом МК и контактов под питание. В этом разделе расскажу только про упомянутые выше перемычки на плате, когда их надо оставить разомкнутыми, когда замкнуть и конкретно для чего каждая из них предназначена. Все подробности нужно смотреть на схеме электрической принципиальной, сборочном чертеже печатной платы и в перечне элементов. Итак, всего 4 перемычки на плате именованные как J1, J2, J3, J4. J3 – перемычка, отвечающая за питание аналоговой периферии МК. Эту перемычку следует замкнуть, если нужно, чтобы на VDDA (DDA на плате) приходило +3.3В от программатора или от стабилизатора напряжения. В ином случае нужно подавать на VDDA напряжение извне. J2 – перемычка для контакта REF+ (соединяет REF+ и VDDA). Если REF+ задействовать как выход, замыкать перемычку не нужно. Если настроить этот вывод как вход, то перемычку нужно замкнуть и REF+ будет запитан от VDDA. J4 – перемычка для питания платы только от USB. Итак, на плате предусмотрена возможность питания от внешнего источника питания от 5В до 16В. Если запитывать плату от внешнего источника, то перемычка должна быть разомкнута, чтобы не подать на USB напряжение внешнего источника. При этом подключать кабель USB можно, так как последовательно с USB стоит защитный диод. Можно и не замыкать перемычку, когда плата запитывается только USB. Просто тогда будет падение напряжения на диоде, что не очень приятно во многих случаях. Я себе купил стабилизатор напряжения RT9193-33GB, но у него максимальное входное напряжение 6В! Я предлагаю вам использовать другой: SPX3819M5-L-3-3/TR, у него максимальное входное напряжение 16В. J1 – перемычка-стяжка вывода PB2 на общую линию, которая была сделана, потому что я не совсем на момент разработки разобрался с загрузчиком (BOOT1). Не буду рассказывать тут историю, поясню лишь, что конкретно в этом контроллере BOOT0 привязан к PB8, а BOOT1 настраивается программо, в отличие от BluePill и BlackPill, где PB2 привязан к BOOT1. По сути эта перемычка не имеет значения. Но если вдруг нужно по умолчанию стянуть пин PB2 на общую линию, можно замкнуть её😊. В ином случае можно не ставить резистор R5 на 10кОм и оставить перемычку разомкнутой. Если вам эта перемычка сильно режет глаз, пишите в комментариях, как время будет уберу её, подредактирую схему и остальные файлы. Будет версия V1.2 Как видите, для замыкания/размыкания перемычек потребуется каждый раз брать паяльник... Я не хотел использовать штрыевой разъём и закупать jumpers под эту тему – громоздко, неудобно. Ну, начнём на ваших глазах устанавливать компоненты на печатную плату и запаивать их. Для удобства выполнения задачи был сделан сборочный чертёж печатной платы (см. ссылку а GitHub). Покажу вам плату в физическом воплощении, ещё не собранную: Вы могли заметить, что фотографии платы и изображения 3D-модели платы из САПР отличаются. Кроме того, кто-то уже мог задаться вопросом "почему STM32G431 DevBoard V1.1?". Думаю уже догадались, версия V1.0 у меня: нет маркировки выводов разъёма на нижней стороне платы, из-за особого шрифта производитель не смог напечатать имя автора (моё). Во время монтажа компонентов я заметил, что посадочное место под кварц 8 МГц нужно немного поправить, площадки перемычек довольно маленькие, из-за чего их неудобно замыкать припоем. В V1.1 все эти недостатки устранены. Ещё момент: кому-то может быть неудобно паять диоды Шоттки в корпусе SOD-523, я запаял и оно работает, но в принципе да, для удобства надо было брать побольше корпус (в V1.1 не менял диоды). Больше чего-то сверхъестественного или режущего глаз я не заметил, возможно вы что-нибудь полезное посоветуете. Короче говоря, если вас вдруг заинтересует данный проект и вы решите его повторить, то результат будет чуть интереснее, чем у меня😊🤭😊 В общем говорим волшебное "ахалай-махалай" и получаем Перемычки J2, J3, J4 я замкнул. J1 как ранее было сказано лучше оставить разомкнутой. Припой ПОС-61 ⌀0.6мм, паяльник "красный", мне для бытовых нужд хватает. Флюс – китайская банка-подделка на AMTECH. Кто бы не говорил, для для 95% своих нужд я использую этот флюс. Когда-то давно я читал статью на Habr про сравнение флюсов, уже не могу найти, видимо автор отозвал статью... Раз так, значит подробнее об этом. Данный флюс – пародия на американский флюс Amtech. Удобный тюбик, насадка с резьбой, что удобно, можно купить с поршнем и соплами, как это делаю я. Без запаха, хорошо растекается, застывает в твёрдое желе, средней активности, ничего вам на плате не разъест, очень дешёвый. С таким флюсом паяется очень удобно и приятно, одно тюбика, если вы паяете раз в неделю примерно такую плату, которую я описываю, хватит до 2-х лет. Я паяю чаще и больше, поэтому за 2 года у меня уже в пользовании тюбик 6-ой наверное (использую его на работе, домашний тюбик уже долго лежит). Менять не собираюсь, так как он очень дешёвый и такого качества не найти, даже если в 3 раза дороже искать. Иногда паяю BGA чипы и там да, такому флюсу конечно можно довериться, но лучше использовать FluxPlus или тот же Amtech, но оригинальный. Я же для BGA использую FluxPlus (такой же тюбик по размеру, но цена за штуку 15$). Недостаток китайского флюса: многовато дыма, если есть вытяжка – не страшно. Если вытяжки нет, несмотря на отсутствие запаха и вроде как отсуствие едких веществ, дышать дымом всё-же не надо.  Настало время залить тестовую прошивку в нашу плату, чтобы проверить её работоспособность. Не буду показывать создание проекта, просто покажу скриншот и видео в доказательство, что всё работает и затем подведём итоги... А, кстати! Разъём под ST-Link я делал так, чтобы я больше не занимался построением паутины из проводов, чтобы подключить программатор. Теперь провода идут напрямую от программатора к плате без каких-либо перегибов. (Маленькое уточнение, программатор у меня самодельный, я упоминал его в своей прошлой статье и, возможно, скоро на него выйдет обзор). Проверка работы 3 каналов АЦП через прерывание по DMA: Теперь просто помигаем светиком на видео: 10 плат на pcbWay с доставкой в Беларусь стоили 15$, стоимость компонентов на все платы составила около 25$ (в эту стоимость входил только 1 микроконтроллер). Компоненты покупались на AliExpress. (В перечне элементов указаны ссылки на продавцов). Отладочная плата STM32G431 DevBoard удобная в использовании, позволяет полностью реализовать функционал микроконтроллера STM32G431, обладает малой ценой и габаритами, обладает рядом уникальных свойств по сравнению с платами-аналогами. В версии V1.1 исправлены недочёты, которые присутствовали в версии V1.0. В общем целом из-за наличия выше перечисленных особенностей, а также опираясь на тот факт, что данный проект открытый, данная отладочная плата выступает весомым конкрурентом платам-аналогам, которые можно увидеть от компании STMicroelectronics и сторонних продавцов. На GitHub я выложил производственные файлы отладочной платы, схему электрическую принципиальную, сборочный чертёж печатной платы, перечень элементов и изображения 3D-модели печатной платы.  Вот ссылка: https://github.com/AnZoRiN228/STM32G431-DevBoard-V1.1 Руководство по программированию STM32G4 Документация на STM32G431 Обзор семейства STM32G4 от NR-electronics Перезентация семейства STM32G4 от компании STMicroelectronics Руководство по программированию на STM32F401 Документация на STM32F4 Документация на STM32F103 Руководство по программированию STM32F1 STM32-Моделирование аналоговых сигналов и АЧХ (математическим методом)  P.S. Огромная благодарность моему другу Михаилу Альховику, который проспонсировал этот проект!  Вот и всё. На эту статью у меня ушло гораздо больше, чем я планировал, поскольку всё же нужно было качественно описать все моменты, чтобы не возникало много вопросов. К тому же в процессе написания статьи обнаруживались ошибки на плате, которые в процессе были устранены. Буду очень рад если кто-то захочет себе сделать такую плату, она действительно дешевле и удобнее чем те, которые нам предлагают купить на рынке. Оставляйте комментарии, делитесь мнениями, надеюсь на ваши объективные оценки! Спасибо за внимание!  Инженер-электроник