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

PVD — программируемый детектор напряжения

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

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

PVD (programmable voltage detector, программируемый детектор напряжения) — блок в микроконтроллерах STM32, который сравнивает напряжение питания VDD с порогом, выбранным программой, и сообщает о его пересечении флагом и прерыванием. В отличие от сброса по пониженному питанию, PVD ничего не сбрасывает: его задача — дать программе время сохранить данные или перевести устройство в безопасное состояние, пока напряжение ещё рабочее (DS5319, разд. 2.3.10).

Пороги STM32F103

PLS[2:0]Номинал по RM0008Тип. порог по DS5319 (нарастание / спад)
0002,2 В2,18 / 2,08 В
…шаг 0,1 В…
1112,9 В2,88 / 2,78 В

Гистерезис PVD — 100 мВ. Ниже всех порогов PVD лежит сброс PDR: у STM32F103 он срабатывает при спаде до 1,80–1,96 В и работает всегда.

Как настроить

По RM0008 (разд. 5.2.2): порог задают битами PLS[2:0] в регистре PWR_CR, включают PVD битом PVDE. Флаг PVDO в PWR_CSR равен 1, когда VDD ниже порога, и 0, когда выше. Этот сигнал подключён к линии EXTI 16: падение питания ниже порога — нарастающий фронт PVDO, восстановление — спадающий, и прерывание настраивают на нужный фронт; приоритет задаёт NVIC.

Время на сохранение — это время, за которое питание упадёт от порога PVD на спаде до наименьшего гарантированного рабочего напряжения 2,0 В (DS5319); ниже работа не гарантирована, хотя сброс PDR наступает только при 1,80–1,96 В. Время определяется ёмкостью по питанию и током, а не микроконтроллером (оценка при постоянном токе):

t≈C⋅(UPVD.спад−UDD.min)I.t \approx \frac{C \cdot (U_\text{PVD.спад} - U_\text{DD.min})}{I}.

Не путать PVD с детектором пониженного питания AVR и со сбросом при включении: те формируют сброс, а PVD — только предупреждение. И не путать с одноимённым сокращением в зарядных устройствах NiMH — там PVD означает окончание заряда по спаду напряжения после пика, см. статью «Аккумуляторы и батарейки». Схемы сброса, пороги STM32 и ATmega328P и внешние супервизоры — в статье «Сброс по питанию, BOD и супервизор», распиновки серии — на странице «STM32F1».

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

Чем PVD отличается от сброса по питанию в STM32?

Сброс POR/PDR в STM32F103 работает всегда и держит микроконтроллер в сбросе ниже 1,8–1,96 В. PVD не сбрасывает, а только сообщает: при выбранном пороге 2,2–2,9 В он выставляет флаг и может вызвать прерывание, пока микроконтроллер ещё работает. По умолчанию PVD выключен — его включают битом PVDE.

Как получить прерывание по PVD?

Выбрать порог битами PLS[2:0] в PWR_CR, включить PVD битом PVDE, затем настроить линию EXTI 16 и разрешить прерывание PVD в NVIC. На линию приходит выход PVDO: он становится 1, когда VDD опускается ниже порога. Поэтому прерывание при падении питания — по нарастающему фронту, при восстановлении — по спадающему.

Сколько времени даёт PVD на сохранение данных?

Столько, сколько нужно питанию, чтобы упасть от порога PVD на спаде до наименьшего рабочего напряжения 2,0 В. Это зависит от ёмкости по питанию и тока потребления, а не от микроконтроллера. Например (наш расчёт), при PLS = 111 (спад 2,78 В тип.), 100 мкФ и токе 20 мА: 100 мкФ · 0,78 В / 20 мА ≈ 3,9 мс. Ниже 2,0 В работа не гарантирована, хотя сброс PDR ещё не наступил.

Источники

  1. STMicroelectronics. RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx (Rev 21, February 2021) — разд. 5.2.2: PVD сравнивает VDD/VDDA с порогом, выбранным битами PLS[2:0] в PWR_CR, включается битом PVDE; флаг PVDO в PWR_CSR (1 — VDD ниже порога, 0 — выше) показывает, выше или ниже порога напряжение; событие подключено к линии EXTI 16 и может вызывать прерывание при снижении и/или повышении; PLS: 000…111 — 2,2…2,9 В с шагом 0,1 В (номиналы, точные значения — в даташите)
  2. STMicroelectronics. STM32F103x8, STM32F103xB datasheet (DS5319 Rev 20, July 2025) — разд. 2.3.10: PVD позволяет выдать предупреждение и перевести МК в безопасное состояние; POR/PDR активны всегда; табл. 9: VDD 2,0–3,6 В; табл. 11: PVD при PLS = 000 — нарастание 2,10/2,18/2,26 В, спад 2,00/2,08/2,16 В, при 111 — 2,88/2,78 В тип.; гистерезис PVD 100 мВ; спад PDR 1,80/1,88/1,96 В

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