61. Минимальная обвязка микроконтроллера: условия запуска
Микроконтроллер — не микросхема, которую достаточно запаять и подать питание. У него есть условия запуска, и если хоть одно не выполнено, плата ведёт себя непредсказуемо: то стартует, то нет, то работает неделю и перезагружается.
Раздел про то, что обязано быть на плате, что желательно, чего можно не ставить — и что случится, если сэкономить на каждом пункте.
Как это называется в документации
Оригинал Перевод power-on reset (POR) сброс при подаче питания brown-out reset (BOR) сброс при просадке питания reset temporization задержка после достижения порога VDD rise / fall time rate скорость нарастания и спада питания NRST вывод сброса internal pull-up (RPU) внутренняя подтяжка filtered / not filtered pulse отфильтрованный / гарантированно принятый импульс decoupling развязка по питанию VDDA, VREF+ питание и опора аналоговой части load capacitance (CL) нагрузочная ёмкость кварца stray capacitance монтажная ёмкость boot mode режим загрузки
61.1 Питание: все выводы, и у каждого конденсатор
У корпуса на 48–64 вывода питание заведено на четыре пары выводов. Подключать надо все — не «хотя бы одну». Внутри кристалла они питают разные области, и неподключённая пара означает, что часть схемы питается через паразитные связи.
К каждому выводу — конденсатор 100 нФ, физически вплотную (раздел 53.5), плюс один общий на 4,7 мкФ.
Кроме VDD и VSS есть выводы, которые легко пропустить. У F4 это VCAP_1 и VCAP_2 — выход внутреннего стабилизатора ядра: на каждый по керамическому конденсатору 2,2 мкФ с ESR меньше 2 Ом на землю, без них ядро не запустится или будет сбоить. VBAT — к батарейке или, если её нет, к VDD со 100 нФ. VREF+ там, где он выведен отдельно (у F407 — в корпусах от 100 выводов), — к VDDA или к опорному источнику. Число и назначение выводов питания — по таблице выводов конкретного корпуса.
Аналоговое питание заводится отдельно и фильтруется: ферритовая бусина и конденсаторы 1 мкФ и 10 нФ. Бусина — не дроссель на сотни микрогенри: её «600 Ом» указаны на 100 МГц, а на низких частотах она ведёт себя как индуктивность около 1 мкГн (раздел 168.3). С 1 мкФ это фильтр со срезом около 160 кГц: помеху на 500 кГц он ослабит всего примерно в девять раз, а около среза возможен резонансный подъём. Бусина давит в основном помехи в десятки мегагерц; против пульсаций импульсного преобразователя на сотнях килогерц нужен настоящий дроссель в десятки микрогенри или свой линейный стабилизатор от входа до преобразователя (раздел 55.6). Без этого АЦП будет измерять шум своего же источника питания.
61.2 Пороги запуска
Числа этого подраздела — для G4; у F103 и F407 схема сброса другая, её таблица — в конце подраздела. Камень удерживается в сбросе, пока питание не поднялось до порога. Нижний уровень включён всегда:
| Напряжение | |
|---|---|
| порог запуска (типовой) | 1,66 В |
| разброс между экземплярами | 1,62 … 1,70 В |
| гистерезис | 20 мВ |
Дополнительно можно включить один из настраиваемых уровней:
| Уровень | Порог |
|---|---|
| 0 (всегда) | 1,66 В |
| 1 | 2,10 В |
| 2 | 2,31 В |
| 3 | 2,61 В |
| 4 | 2,90 В |
Зачем они: при питании 3,3 В уровень 4 оставляет 0,4 В запаса. Просадка на 10 % его ещё не задевает (2,97 против 2,90), а на 15 % уже задевает — и камень уйдёт в сброс, вместо того чтобы работать на грани и портить данные во Flash. Для устройств с записью настроек это важнее, чем кажется.
После достижения порога камень ждёт ещё 250 мкс (до 400 в худшем случае), прежде чем начать выполнять программу. За это время запускается внутренний генератор и загружаются байты конфигурации.
У F103 и F407 уровней меньше, и задаются они иначе:
| F103 | F407 | |
|---|---|---|
| порог запуска (типовой) | 1,92 В | 1,72 В |
| сброс по просадке | не настраивается | три уровня в байтах конфигурации: 2,19 / 2,50 / 2,83 В; с завода выключен |
| задержка после порога | 2,5 мс (1…4,5) | 1,5 мс (0,5…3) |
| детектор PVD, 8 уровней | 2,08…2,78 В | 2,04…3,03 В |
Уровни просадки и детектора указаны по спаду питания. Детектор (раздел 10.7) только вызывает прерывание: уйти в сброс при просадке программа F103 должна сама.
61.3 Скорость нарастания и спада питания
Тут два несимметричных требования, и второе часто упускают.
Нарастание не нормируется вовсе — от нуля до бесконечности. Камень стартует при любой скорости подъёма питания, хоть мгновенной, хоть за секунды.
Спад ограничен снизу: не быстрее 10 мкс на вольт, то есть с 3,3 В до нуля — не быстрее 33 мкс. Слишком резкий провал схема сброса не успевает отследить, и камень может начать выполнять программу при недостаточном питании.
На практике требование выполняется само собой: конденсатор 10 мкФ по питанию при потреблении 50 мА разряжается 660 мкс — в двадцать раз медленнее предела. Но если питание отключается ключом с быстрым спадом и без конденсатора, проверить стоит.
61.4 Вывод сброса
Внутри уже есть подтяжка 25…55 кОм, типовая 40. Внешний подтягивающий резистор не нужен — это самая частая лишняя деталь на любительских платах.
Кнопка сброса подключается напрямую на землю: через внутреннюю подтяжку потечёт до 132 мкА, последовательный резистор не требуется. Чтобы сброс сработал, на выводе должно быть ниже 0,99 В (при питании 3,3 В).
Фильтр входа отбрасывает короткие помехи:
| Длительность импульса | Что будет |
|---|---|
| короче 70 нс | гарантированно отфильтруется |
| 70…350 нс | как повезёт |
| длиннее 350 нс | гарантированно пройдёт |
Конденсатор 100 нФ на выводе сброса нужен — но не для формирования сброса, а для защиты от помех. С подтяжкой 40 кОм он даёт постоянную времени 4 мс, и до порога отпускания проходит 4,8 мс — это в двенадцать раз дольше собственной задержки камня. То есть длительность сброса при таком конденсаторе задаёт именно он.
⚠️ Специальная схема сброса не нужна. Внутри есть и сброс по питанию, и сброс по просадке, и фильтр, и подтяжка. Внешний супервизор питания ставят только там, где требования жёстче встроенных, — и тогда его выбирают осознанно, а не «на всякий случай».
61.5 Выбор режима загрузки
Вывод (или выводы) выбора загрузки определяют, откуда камень стартует: из Flash, из системной памяти с заводским загрузчиком или из ОЗУ (раздел 4.7).
Его нельзя оставлять висящим в воздухе: подтянутый ни к чему вывод считывает наводку, и камень стартует то из своей программы, то из загрузчика — «через раз», причём по-разному в зависимости от того, держите ли вы плату в руках.
Правильно: резистор 10 кОм на землю (или на питание, если нужен загрузчик по умолчанию) и, если пригодится, перемычка или кнопка.
61.6 Кварц: когда нужен и как считать
Внутреннего генератора хватает для большинства задач: погрешность около 1 %, чего достаточно для UART до 115200 и для любой логики. Кварц нужен, когда:
- работает USB на F1 или F4 — там нужна точность лучше 0,25 % (раздел 20).
У G4, как и у F072 (раздел 6), есть внутренний генератор 48 МГц
(
HSI48), который подстраивается по кадрам от хоста (блокCRS), и устройство USB обходится без кварца; - нужны часы реального времени — тогда часовой кварц на 32 768 Гц;
- измеряется время или частота;
- связь идёт на высокой скорости или по длинной линии.
Конденсаторы считаются по нагрузочной ёмкости кварца, а не берутся «22 пФ, как у всех»:
C = 2 × (CL − Cмонтажа)
Монтажная ёмкость дорожек и выводов — около 5 пФ. Для кварца с нагрузочной 10 пФ нужны конденсаторы по 10 пФ, для 20 пФ — по 30 пФ. Если монтажная ёмкость окажется больше половины нагрузочной, внешние конденсаторы не нужны вовсе.
Цена ошибки для часового кварца: 5 пФ мимо — это около 75 ppm, то есть 6,5 секунды в сутки и 39 минут за год. Часы, которые «уходят», — почти всегда не «плохой кварц», а неверные конденсаторы.
Дорожки к кварцу — короткие, с землёй вокруг, и ничего быстрого рядом.
61.7 Отладочный разъём
Четыре сигнала: две линии обмена, земля и питание. Пятым полезно вывести сброс — он позволяет отладчику зацепиться за камень, который успевает уйти в сон или переназначить выводы отладки (раздел 4.4).
Разъём стоит ставить даже на плату, где отладка «не планируется»: контактные площадки под иглы занимают миллиметры, а без них перепрошивка требует выпаивания.
61.8 Итого: обязательное и желательное
| Что | Нужно |
|---|---|
| все выводы питания подключены | обязательно |
| 100 нФ у каждого вывода питания | обязательно |
| общий конденсатор 4,7 мкФ | обязательно |
| питание аналоговой части с фильтром | обязательно, даже если АЦП не нужен |
| вывод выбора загрузки притянут резистором | обязательно |
| конденсатор 100 нФ на выводе сброса | настоятельно рекомендуется |
| отладочный разъём или площадки | настоятельно рекомендуется |
| кнопка сброса | желательно |
| кварц | по задаче |
| внешний резистор подтяжки сброса | не нужен |
| внешняя схема сброса | не нужна |
61.9 Грабли
Плата не стартует. Проверить по порядку: питание на всех выводах, вывод выбора загрузки, вывод сброса не прижат к земле, питание аналоговой части.
Стартует через раз. Вывод выбора загрузки висит в воздухе.
Работает, пока не тронешь плату. То же самое — ёмкость руки меняет наводку на висящий вывод.
Отладчик не видит камень. Программа успела переназначить выводы отладки или ушла в сон; подключить сброс к отладчику и войти в режим «под сбросом».
АЦП выдаёт мусор. Нет питания аналоговой части или оно не отфильтровано.
Случайные перезагрузки. Нет конденсатора на выводе сброса, либо просадка питания задевает порог.
Часы уходят на минуты в год. Конденсаторы кварца не под его нагрузочную ёмкость.
Кварц не запускается. Слишком большие конденсаторы, длинные дорожки, кварц не на ту нагрузочную ёмкость.
Поставили внешнюю схему сброса — стало хуже. Она конфликтует со встроенной и мешает отладчику дёргать сброс.
61.10 Итоги
- Все выводы питания подключены, у каждого 100 нФ вплотную, плюс общий 4,7 мкФ и отдельный фильтр на аналоговое питание. Бусина с 1 мкФ срезает только от ~160 кГц; против помехи преобразователя — дроссель.
- У F4 — по 2,2 мкФ керамики на VCAP_1 и VCAP_2; VBAT без батарейки — к VDD со 100 нФ.
- G4 стартует при 1,66 В и ждёт после этого 250 мкс (до 400); F103 — при 1,92 В и 2,5 мс, F407 — при 1,72 В и 1,5 мс.
- Настраиваемый порог G4 2,90 В при питании 3,3 В ловит просадку на 15 %, не мешая просадке на 10 %; у F407 то же делает уровень 2,83 В, у F103 настраиваемого порога нет.
- Нарастание питания не нормируется; спад — не быстрее 10 мкс на вольт, и конденсатор 10 мкФ выполняет это с двадцатикратным запасом.
- На выводе сброса уже есть подтяжка 25…55 кОм: внешний резистор и внешняя схема сброса не нужны. Конденсатор 100 нФ даёт 4,8 мс сброса.
- Вывод выбора загрузки нельзя оставлять висящим — отсюда «стартует через раз».
- Конденсаторы кварца считают по формуле
2 × (CL − Cмонтажа); ошибка в 5 пФ для часового кварца — 39 минут в год.
Дальше: раздел 62 «Защита выводов» — что происходит, когда снаружи приходит то, чего плата не ждала.