Перейти к содержанию

Вывод NRST

У STM32 нет отдельного входа и выхода сброса: один вывод NRST и принимает внешний сброс, и сам опускается в ноль, когда сброс пришёл изнутри — от сторожевого таймера, программы или схемы питания. Отсюда правила, что к нему можно подключать.

Обновлено Редакция GAW

NRST — вывод внешнего сброса микроконтроллеров STM32. Низкий уровень на нём вызывает системный сброс: все регистры, кроме флагов причины сброса и резервного домена, принимают начальные значения (RM0008, разд. 7.1.1). Особенность STM32 в том, что вывод двунаправленный: любой сброс — от сторожевых таймеров IWDG и WWDG, программный через бит SYSRESETREQ, от схемы питания — микроконтроллер выводит на NRST и держит вывод в нуле во время задержки. Генератор импульса гарантирует сброс длительностью не меньше 20 мкс: в RM0008 (разд. 7.1.2) — для каждого источника, внешнего или внутреннего, в RM0090 для STM32F4 — для каждого внутреннего источника; при внешнем сбросе импульс длится, пока NRST удерживают в низком уровне.

Параметры вывода

ПараметрSTM32F103 (DS5319, табл. 39)
Подтяжка RPU30 / 40 / 50 кОм (мин. / тип. / макс.)
Низкий уровень VIL(NRST)не выше 0,8 В
Высокий уровень VIH(NRST)не ниже 2 В
Гистерезис200 мВ
Подавляемый импульс VF(NRST)до 100 нс
Гарантированно принимаемый импульс VNF(NRST)от 300 нс

Подтяжка постоянная: это резистор последовательно с PMOS-ключом, поэтому внешний резистор на питание обычно не нужен. Вход — триггер Шмитта, и короткие помехи до 100 нс он отбрасывает, но импульс между 100 и 300 нс может пройти, а может и нет: параметры заданы проектом и в производстве не проверяются.

Типовая схема

ST рекомендует конденсатор 0,1 мкФ между NRST и землёй (DS5319, рис. 31): он гасит наводки, из-за которых плата сбрасывалась бы сама. Параллельно конденсатору ставят кнопку на землю. Внешняя схема сброса должна опускать NRST ниже VIL(NRST) max, то есть 0,8 В, — иначе сброс не будет принят. Это важно, если вывод тянут к земле через резистор или диод: падение на них не должно оставлять на NRST больше 0,8 В.

К NRST подключают только выходы, которые умеют отпускать линию: кнопку, выход супервизора питания с открытым стоком, вывод сброса отладчика. Двухтактный выход, который держит единицу, будет бороться с внутренним ключом в момент сброса от сторожевого таймера. Как собрать цепь сброса при включении питания с супервизором, показано в схеме «Сброс при включении и просадке питания».

Откуда был сброс

После перезапуска программа узнаёт причину по флагам сброса в регистре RCC_CSR. Сброс с вывода отмечает флаг PINRSTF, рядом лежат флаги IWDGRSTF, WWDGRSTF, SFTRSTF и PORRSTF (RM0008, разд. 7.3.10). Сами они не очищаются: все флаги сбрасывает запись единицы в бит RMVF. Поэтому флаги читают в начале программы и сразу стирают, иначе при следующем запуске к новой причине добавятся старые. Пример распиновки и цепи сброса популярного микроконтроллера — на странице STM32F1.

Частые вопросы

Обязателен ли конденсатор на NRST?

ST в даташите STM32F103 (DS5319, рис. 31) рекомендует 0,1 мкФ между NRST и землёй: он защищает от паразитных сбросов наводками. Внутренняя подтяжка — от 30 до 50 кОм, так что с конденсатором 0,1 мкФ постоянная времени около 4 мс (наш расчёт: 40 кОм × 0,1 мкФ). Импульсы короче 100 нс вход и сам отфильтрует, но длинные помехи — нет.

Можно ли подключить к NRST выход супервизора питания?

Можно, если выход с открытым стоком: NRST двунаправленный, и при внутреннем сбросе (сторожевой таймер, программный сброс) микроконтроллер сам опускает его в ноль не меньше чем на 20 мкс (RM0008, разд. 7.1.2). Двухтактный выход, который держит единицу, будет спорить с внутренним ключом и мешать сбросу всей платы.

Как понять, что сброс был от кнопки на NRST?

По флагу PINRSTF в регистре RCC_CSR: его ставит аппаратура при сбросе с вывода NRST (RM0008, разд. 7.3.10). Флаги остальных источников лежат там же. Ни один из них не очищается сам — все сбрасывает запись в бит RMVF, поэтому после чтения флаги стирают, чтобы при следующем запуске видеть только новую причину.

Источники

  1. STMicroelectronics. STM32F103x8, STM32F103xB datasheet (DS5319 Rev 20, July 2025) — разд. 5.3.14, табл. 39 «NRST pin characteristics»: входной буфер КМОП, постоянная подтяжка RPU 30 / 40 / 50 кОм (мин. / тип. / макс.) — резистор последовательно с PMOS-ключом; VIL(NRST) от −0,5 до 0,8 В, VIH(NRST) от 2 В до VDD + 0,5 В, гистерезис триггера Шмитта 200 мВ; VF(NRST) — подавляемый импульс до 100 нс, VNF(NRST) — импульс от 300 нс гарантированно проходит (заданы проектом, в производстве не проверяются); рис. 31: рекомендуемая защита — конденсатор 0,1 мкФ на землю, сеть сброса защищает от паразитных сбросов, уровень на NRST должен опускаться ниже VIL(NRST) max, иначе сброс не будет принят
  2. STMicroelectronics. RM0008 Reference manual STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx, STM32F107xx (Rev 21, February 2021) — разд. 7.1.1: системный сброс вызывают низкий уровень на NRST, окончание счёта WWDG и IWDG, программный сброс (бит SYSRESETREQ), сброс при входе в Standby или Stop по опциям nRST_STDBY и nRST_STOP; источник определяют по флагам RCC_CSR; разд. 7.1.2: источники сброса действуют на вывод NRST, он удерживается низким во время задержки; сигнал системного сброса выводится на NRST, генератор импульса гарантирует длительность не менее 20 мкс для каждого источника, при внешнем сбросе импульс формируется, пока NRST в нуле; рис. 7 — RPU, фильтр, ключ на землю; разд. 7.3.10 (RCC_CSR): флаги WWDGRSTF, IWDGRSTF, SFTRSTF, PORRSTF, PINRSTF ставит аппаратура, все очищаются записью в бит RMVF; PINRSTF — сброс с вывода NRST
  3. STMicroelectronics. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437, STM32F429/439 (Rev 21, June 2024) — разд. 6.1.2 (RCC): генератор импульса гарантирует сброс не короче 20 мкс для каждого внутреннего источника — то же устройство вывода NRST у STM32F4

Нашли ошибку?