Резервный домен STM32 (backup domain)
Часы STM32 продолжают идти, когда основное питание выключено, а несколько десятков байт переживают сброс и даже отключение платы. Всё это — резервный домен: небольшая часть кристалла со своим питанием от вывода VBAT.
Обновлено Редакция GAW
Резервный домен (backup domain) — часть кристалла STM32, которая получает питание от вывода VBAT, когда основное питание VDD отключено. В нём находятся часы RTC, генератор LSE с часовым кварцем и резервные регистры, а у STM32F4 — ещё 4 КБ резервной памяти BKPSRAM. Пока на VBAT есть батарейка, время идёт, а данные в резервных регистрах сохраняются (RM0090, разд. 5.1.2).
Что питает VBAT у STM32F4
- RTC и генератор LSE;
- 4 КБ BKPSRAM — только при включённом резервном стабилизаторе (бит BRE в PWR_CSR);
- выводы PC13–PC15 и PI8.
20 резервных регистров RTC_BKPxR (80 байт) входят в RTC и сбрасываются при срабатывании защиты от вскрытия (tamper). BKPSRAM tamper не стирает, но при включённой защите от чтения она тоже защищена, а при снятии защиты с уровня 1 на 0 стирается. ST сравнивает BKPSRAM с внутренней EEPROM при постоянно подключённом VBAT.
Доступ и сброс
После сброса домен защищён от случайной записи. Для доступа к RTC и резервным регистрам включают тактирование интерфейса PWR (бит PWREN), ставят бит DBP в PWR_CR, выбирают и включают тактирование RTC в RCC_BDCR; для BKPSRAM дополнительно ставят BKPSRAMEN в RCC_AHB1ENR. Сброс резервного домена делает бит BDRST в RCC_BDCR или включение после пропадания обоих питаний: он обнуляет регистры RTC, RCC_BDCR и бит BRE, но BKPSRAM не трогает (RM0090, разд. 6.1.3). У STM32F1 резервные регистры — отдельный блок BKP, а доступ к нему открывается так же, битом DBP (RM0008, разд. 6).
Схема питания
Если батарейки нет, RM0090 предписывает соединить VBAT с VDD и поставить конденсатор 100 нФ. Если батарейка есть, учитывают предупреждение ST: при быстром нарастании VDD выше VBAT + 0,6 В через внутренний диод в VBAT может пойти ток, и если батарея его не допускает, ставят внешний диод с малым падением. Настройку предделителей и калибровку часов считает калькулятор RTC STM32.
Не путать
С режимом Standby. Это режим сна при включённом VDD, а резервный домен — источник питания части кристалла: он работает и в Standby, и тогда, когда VDD нет вовсе (RM0090 называет оба случая для BKPSRAM). Подробнее о режимах — в статье о режимах сна.
Частые вопросы
Что делать с выводом VBAT, если батарейки нет?
Соединить с VDD и поставить на VBAT керамический конденсатор 100 нФ — так рекомендует RM0090 (разд. 5.1.2). Там же сказано, что во время задержки tRSTTEMPO после включения и после срабатывания PDR ключ питания домена остаётся подключён к VBAT. Наш вывод: при висящем VBAT в эти моменты RTC, LSE и резервные регистры питаются от неопределённого напряжения, поэтому вывод не оставляют свободным.
Почему запись в регистр RTC или резервный регистр не проходит?
После сброса резервный домен защищён от записи. Сначала включают тактирование интерфейса питания (PWREN в RCC_APB1ENR), затем ставят бит DBP в PWR_CR — только после этого RTC, его резервные регистры и BKPSRAM принимают запись (RM0090, разд. 5.1.2). У STM32F1 к этому добавляется тактирование блока BKP (RM0008, разд. 6).
Можно ли питать светодиод от PC13?
RM0090 этого не советует: выводы PC13–PC15 и PI8 питаются через ключ резервного домена, который пропускает лишь около 3 мА. Поэтому на выход их используют со скоростью не выше 2 МГц, с нагрузкой до 30 пФ и не как источник тока — светодиод лучше перенести на другой вывод. Включение «на землю», когда вывод не отдаёт, а принимает ток, RM0090 прямо не запрещает, но и не разрешает — это наш вывод.
Источники
- STMicroelectronics. RM0090 Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439, Rev 21 — разд. 5.1.2 — VBAT питает RTC, LSE, BKPSRAM при включённом резервном стабилизаторе и выводы PC13–PC15, PI8; без батареи VBAT соединить с VDD и поставить 100 нФ; ключ отдаёт до 3 мА, поэтому PC13–PC15 и PI8 на выход — не быстрее 2 МГц, нагрузка до 30 пФ, не источник тока для светодиода; при VDD > VBAT + 0,6 В во время запуска возможен ток в VBAT через внутренний диод — рекомендуется внешний диод; доступ: PWREN, бит DBP в PWR_CR, тактирование RTC в RCC_BDCR; 20 регистров RTC_BKPxR (80 байт) сбрасываются по событию tamper; BKPSRAM 4 КБ, сохраняется в Standby и VBAT при включённом стабилизаторе (бит BRE), стирается при снятии защиты чтения с уровня 1 на 0; 6.1.3 — сброс резервного домена битом BDRST или включением после пропадания обоих питаний, BKPSRAM этим сбросом не стирается
- STMicroelectronics. RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx, Rev 21 — разд. 6 — резервные регистры BKP; после сброса доступ к ним и к RTC запрещён, его открывают битами PWREN, BKPEN и DBP в PWR_CR
Нашли ошибку?
Смотрите также
- RTCСчётчик времени в режимах сна: источники такта, счётчик и календарь
- Часы RTC STM32PREDIV_A, PREDIV_S, PRL, калибровка CALP/CALM и CAL, уход в с/сут
- Часовой кварц 32 768 ГцКамертонный кварц для RTC: 2¹⁵ Гц, малая нагрузка
- HSE, HSI, LSE и LSIЧетыре тактовых генератора STM32: какой для чего
- Защита от чтения (RDP)Запрет чтения прошивки STM32 отладчиком и загрузчиком