Home > ARM, Контроллеры, С++, stm32 > 4. Регистры для резервного копирования (BKP)

4. Регистры для резервного копирования (BKP)

4.1 Введение в BKP

Резервные регистры – это 10 16-битных регистров в устройствах с низкой и средней емкостью или 42 регистра в устройствах с высокой емкостью. Соответственно, резервные регистры могут хранить в себе 20 или 84 байта данных соответственно.

Эти регистры расположены в резервном домене (backup domain), который запитывается от выхода VBAT, в случае отключения питания на VDD. Эти регистры не сбрасываются ни после выхода контроллера из режима ожидания, ни после сброса.

В дополнение ко своей основной функции, резервные регистры служат для обнаружения сигнала сброса и для калибровки часов реального времени.

После сброса доступ к регистрам заблокирован и резервный домен закрыт от возможной паразитной записи. Для разблокировки доступа к регистрам необходимо произвести следующие действия:

  1. Включить тактирование интерфейсов питания и резервного копирования за счет устанвки битов PWREN и BKPEN в регистре RCC_APB1ENR.
  2. Установить бит DBP в регистре управления питанием PWR_CR для разблокировки доступа к резервным регистрам и часам реального времени.


4.2 Основные особенности BKP

  • Емкость регистров – 20 байт для устройств со средней и низкой емкостью, 84 байта для устройств с высокой емкостью.
  • Регистр статуса/управления для управления детектированием сигнала сброса с поддержкой прерываний.
  • Специальный калибровочный регистр для хранения калибровочного значения RTC


4.3 Функциональное описание BKP

4.3.1 Детектирование сброса
Пин сброса (TAMPER pin) генерирует событие сброса каждый раз при изменении состояния пина с 0 на 1 или с 1 на 0 (в зависимости от состояния бита TPAL в регистре управления резервным копированием BKP_CR).
Чтобы предотвратить потерю событий сброса, линия, используемая для определения типа фронта, соединяется логическим “И” с линией включения сброса.

  • Когда TPAL=0, если на пине TAMPER был высокий уровень до включения детектирования сброса (до установки бита TPE), то дополнительное событие сброса будет сгенерировано как только будет включено обнаружение сброса.
  • Когда TPAL=1, если на пине TAMPER был низкий уровень до включения детектирования сброса (до установки бита TPE), то дополнительное событие сброса будет сгенерировано как только будет включено обнаружение сброса.

Если установить бит TPIE в регистре BKP_CSR, то прерывание будет сгенерировано как только будет обнаружен сигнал сброса.

После того, как будет обнаружен и проделан сброс, пин сброса (TAMPER  pin) должен быть отключен, а потом вновь включен битом TPE перед повторной записью в резервные регистры (BKP_DRx). Это ограждает прошивку от записи данных в регистры BKP_DRx пока пин сброса показывает наличие сброса. Это эквивалент определения уровня на пине сброса.

4.3.2 Калибровка RTC
Контроллер имеет возможность вывести тактирование RTC с предделителем 64 на пин сброса (TAMPER pin). Это можно включить установкой бита CCO в регистре калибровки RCT BKP_RTCCR.

Тактирование может быть замедлено до 121 ppm (part per millon) с помощью конфигурирования битов CAL[6:0].

Для более подробного ознакомления с темой калибровки RTC просьба обратьтся к AN2604.

4.4 Программирование BKP

void BKP_ClearFlag (void)

Сбрасывает флаг ожидания события от пина Tamper.
Вход:

  • Параметров не принимает.

Выход:

  • Значения не возвращает.
void BKP_ClearITPendingBit (void)

Сбрасывает флаг ожидания прервания от пина Tamper.
Вход:

  • Параметров не принимает.

Выход:

  • Значения не возвращает.
void BKP_DeInit (void)

Возвращает все регистры BKP к их первоначальному значению.
Вход:

  • Параметров не принимает.

Выход:

  • Значения не возвращает.
FlagStatus BKP_GetFlagStatus (void)

Проверяет, включена ли генерация события по сигналу на пине Tamper.
Вход:

  • Параметров не принимает.

Выход:

  • Состояние флага: SET или RESET.
FlagStatus BKP_GetITStatus (void)

Проверяет, включена ли генерация прерывания по сигналу на пине Tamper.
Вход:

  • Параметров не принимает.

Выход:

  • Состояние флага: SET или RESET.
void BKP_ITConfig (FunctionalState NewState)

Включает или отключает генерацию прерывания по фронту на пине сброса.

Вход:

  • NewState – новое состояние. Принимает следующие значения: ENABLE и DISABLE.

Выход:

  • Значения не возвращает.
uint16_t BKP_ReadBackupRegister (uint16_t BKP_DR)

Читает содержимое из указанного регистра.

Вход:

  • BKP_DR – указывает регистр, из которого необходимо провести чтение. Имя имеет вид BKP_DRx, где x=1..42.

Выход:

  • Содержимое регистра.
void PWR_RTCOutputConfig (uint16_t BKP_OutputSource)

Указывает что необходимо выводить от RTC на пин Tamper.

Вход:

  • BKP_OutputSource– указывает тип выходной характеристики. Принимает следующие значения:
    • BKP_RTCOutputSource_None – от RTC ничего не выводится на ногу Tamper.
    • BKP_RTCOutputSource_CalibClock – выводится импульсы от RTC с предделителем 64.
    • BKP_RTCOutputSource_Alarm – вывод сигнала от будильника.
    • BKP_RTCOutputSource_Second – Вывод импульса каждую секунду.

Выход:

  • Значения не возвращает.
void BKP_SetRTCCalibrationValue (uint8_t CalibrationValue)

Устанавливает калибрующее значение RTC.

Вход:

  • CalibrationValue – калибрующее значение RTC. Это число в диапазоне от 0 до 0x7F.

Выход:

  • Значения не возвращает.
void BKP_TamperPinCmd (FunctionalState NewState)

Включает или отключает активацию пина Tamper.

Вход:

  • NewState – состояние. Может быть ENABLE или DISABLE.

Выход:

  • Значения не возвращает.
void PWR_TamperPinLevelConfig (uint16_t BKP_TamperPinLevel)

Устанавливает тип фронта на пине сброса (TAMPER) для реагирования на него.

Вход:

  • BKP_TamperPinLevel– указывает тип выходной характеристики. Принимает следующие значения:
    • BKP_BKP_TamperPinLevel_High – реакция по нарастающему фронту.
    • BKP_BKP_TamperPinLevel_Low – реакция по ниспадающему фронту.

Выход:

  • Значения не возвращает.
void BKP_WriteBackupRegister (uint16_t BKP_DR, uint16_t Data)

Записывает указанные данные в регистр.

Вход:

  • BKP_DR – имя регистр для записи. Имя имеет вид BKP_DRx, где x=1..42.
  • Data – данные для записи.

Выход:

  • Значения не возвращает.
Advertisements
  1. Юрай
    31.07.2012 at 16:07

    А причем тут тэг “Altium”?

  2. 31.07.2012 at 16:22

    Да, действительно не при чём. Спасибо!

  3. MarcelLof
    15.03.2014 at 02:45

    111

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: