Home > ARM, Контроллеры, С++, stm32 > Глава 3. Управление питанием

Глава 3. Управление питанием

3.1 Источники питания

Для нормальной работы контроллеру необходимо от 2.0 до 3.6 вольт (VDD). Встроенный регулятор обеспечивает 1.8 V для питания ядра.

Часы реального времени (RTC) и регистры для резервного сохранения информации могут быть отдельно запитаны от VBAT, когда питание на  VDDотключено.

Рис. 1 Схема питания

Рис. 1 Схема питания

Замечание: VDDA и VSSA должны быть подключены к VDD и VSSсоответственно.

3.1.1 Независимый источник питания для АЦП и ЦАП 

Чтобы обеспечить точность преобразования, АЦП и ЦАП имеют собственный вход питания, который может быть дополнительно очищен от помех и проэкранирован при разводке платы.

  • Вход питания для АЦП и ЦАП доступен на ноге  VDDA
  • Подключение к изолированной земле для АЦП и ЦАП доступно на ноге  VSSA

Если вывод VREF-  доступен (в зависимости от количества ножек), то он должен быть подключен к  VSSA.

В корпусах с количеством выводов 100 и 144:

Для повышения точности преобразования при низких максимальных уровнях напряжения на выводах АЦП и ЦАП, можно подключить вывод  VREF+  к внешнему источнику опорного напряжения. Напряжение на VREF+ – максимальное напряжение, которое соответсвует максимальному преобразованному значению в АЦП и ЦАП. Напряжение на  VREF+  может изменяться с 2.4 вольт, до  VDDA.

В корпусах с 64 выводами:

Выводы VREF+  и VREF-  недоступны и подключены к  VDDA и VSSA соотвественно.

3.1.2 Резервные источники питания

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

От вывода  VBAT  запитываются:  модуль RTC, LSE генератор и выводы с PC13 до PC15, обеспечивающие функционирование часов реального времени даже при отключенном питании на VDD .

Переход с VDD  на  VBAT  контролируется с помощью значением напряжения PDR (Power down reset), встроенного  в блок сброса.

Внимание!

В течение tRSTTEMPO ( tRSTTEMPO – время между моментом, когда  VDD =   VPOR и выходом контроллера из режима сброса) или после того, как был обнаружен PDR, переключатель между VDD  и  VBAT остается подключенным к VBAT .

Во время запуска контроллера,  если время подачи питания на VDD меньше  tRSTTEMPO и   VDD >VBAT + 0.6 В, это напряжение может быть “спущено” в линию  VBAT  через внутренний диод, который соединяет  VDD с переключателем питания (который в данный момент подключен к VBAT ).

Если источник питания, подключенный к VBAT  не может выдержать этот скачок напряжения, то необходимо предусмотреть диод с низким падением напряжения между источником питания и входом VBAT .

Если не планируется использовать источник резервного питания, то рекомендуется замкнуть VBAT  на  VDD  с помощью керамического конденсатора на 100 мкФ.

Когда на резервный домен (backup domain) подается напряжения с VDD, доступны следующие возможности:

  •  PC14 и PC15 используются как обычные выводы GPIO или LSE
  • PC13 может использоваться как GPIO, вывод TAMPER, калибрующий сигнал RTC или будильник RTC.

Если же на него подается напряжение с VBAT , то доступны следующие возможности:

  • PC14 и PC15 используются только как выводы LSE.
  • PC13 может использоваться как вывод TAMPER, будильник RTC.

3.1.3 Регулятор напряжения

Регулятор всегда включается после выхода устройства из режима сброса. Он работает в 3 режимах, которые зависят от режима работы контроллера.

  • Обычный режим. Регулятор обеспечивает полное питание для домена 1.8В (ядро, память, цифровая периферия)
  • Режим останова. Регулятор обеспечивает пониженное питание для домена 1.8В, сохраняются значения регистров и SRAM.
  • Режим ожидания. Регулятор отключен. Содержимое регистров и SRAM утеряно, кроме схемы ожидания и резервного домена.

3.2 Контроль источников питания

3.2.1 Сброс при старте (POR – power on reset)/сброс при отключении (PDR – power down reset)  

Контроллер имеет встроенные схемы POR и PDR для обеспечения нормальной работы контроллера. Контроллер находится в режиме сброса, пока напряжение питания на VDD / VDDA ниже, чем установленный порог срабатывания   VPOR / VPDR.

Рис 2. POR/PDR

Рис 2. POR/PDR

3.2.2 Программируемый детектор напряжения (PVD)

Программируемый детектор напряжения (Programmable Voltage Detector, PDV) может использоваться для наблюдения за  VDD / VDDA  с помощью сравнения его с величиной, выбранной битами PLS[2:0] в регистре управления управления питанием (PWR_CR).

PVD включеается с помощью установки бита PVDE.

В статусном регистре PWR_CSR есть флаг PVDO, который показывает выше или ниже VDD / VDDA, чем порог срабатывания PVD. Изменение этого регистра может генерировать прерывание, если оно разрешено в регистрах EXTI.

3.3 Режимы с низким энергопотреблением  

По умолчанию, после сброса работает в режиме нормального энергопотребления. Режимы пониженного энергопотребления для снижения потребления энергии контроллером, когда нет необходимости в его функционировании (например при ожидании внешнего прерывания).

Контроллер может работать в следующих режимах:

  • Спящий режим – такирование ядра остановлено, периферия, в том числе и ядро, работает.
  • Режим останова – тактирование всех устройств отключено.
  • Режим ожидания – отключен домен 1.8В.

Снижение энергопотребления может быть осуществлено с помощью следующих методик:

  • Замедление тактирования системы
  • Прекращение тактирования периферии на шинах APB и AHB, когда они не используются.

3.3.1 Замедление системных частот

В обычном режиме величины системных частот (SYSCLK, HCLK, PCLK1, PCLK2) могут быть программно уменьшены с помощью предделителей. Предделители могут так же использоваться для замедления периферии перед погружением в спящий режим.

3.3.2 Отключение периферийного тактирования

В режиме нормального энергопотребления, сигналы HCLK и PCLKx для периферии и внешних запоминающих устройств могут быть отключены в любой момент для сохранения питания

3.3.3  Спящий режим

Вход в спящий режим

Вход в спящий режим осуществляется с помощью инструкций WFI (wait for interrupt) или WFE (wait for event). Есть возможность выбора механизма входа в спящий режим в зависимоти от бита SLEEPONEXIT:

  • Sleep-now: если бит SLEEPONEXIT сброшен, то устройство уходит в спящий режим как только была вызвана инструкция WFI или  WFE.
  • Sleep-on-exit: если бит SLEEPONEXIT установлен, то устройство входит в спящий режим как только произойдет выход из обработчика прерывания.

В спящем режиме все пины ввода-вывода сохраняют своё состояние.

Выход из спящего режима.

Если для входа в спящий режим была задействована инструкция  WFI, то выход контроллера из спящего режима может быть спровоцирован вызовом любого прерывания от периферии.

Если для входа в спящий режим была задействована инструкция WFE, то выход контроллера из спящего режима осуществляется как только происходит какое-либо событие. Это событие может быть сгенерировано:

  • за счет включения прерывания в регистре управления периферией, но не в  NVIC и за счет установки бита SEVONPEND в регистре управления ядром. После восстановления контроллера из WFE, бит ожидания периферийного прерывания и бит ожидания периферийного канала NVIC.
  • за счет конфигурирования внешнего или внутреннего EXTI в режиме событий.

3.3.4 Режим останова.

Режим останова базируется на режиме глубокой спячки ядра. В этом режиме останавливаются все генераторы тактовой частоты в 1.8В домене, а так же отключаются PLL, HSI и HSE RC.

В режиме останова все пины ввода-вывода сохраняют своё состояние.

Вход в режим останова. 

Вход может быть осущевствлен следующими способами:

Вызовом инструкций WFI или WFE пока:

  • Установлен бит SLEEPDEEP
  • Очищен бит PDDS в регистре PWR_CR
  • Выбран режим регулятора напряжения битом LPDS в регистре PWR_CR

Если во время перехода устройства в спящий режим происходит программирование флеш-памяти, то переход откладывается до завершения процесса программирования.

С доступом к домену APB ситуация аналогичная.

В режиме останова путем изменения соответствующих конфигурационных битов можно включить следующие возможности:

  • Независимый сторожевой таймер (IWDT): он может быть запущен с помощью своего регистра. Однажды запущен, он может быть остановлен только вводом контроллера в режим сброса.
  • Часы реального времени (RTC): с помощью бита RTCEC в своём регистре управления.
  • Внутренняя тактирующая RC-цепочка (LSI RC): с помощью бита LSION.
  • Внешний генератор на 32.768 кГц (LSE OSC): с помощью бита LSEON.

Выход из режима останова.

Если вход был инициирован с помощью WFI, то с помощью любой линии EXTI, сконфигурированной в режиме прерывания.

Если с помощью WFE, то с помощью любой линии EXTI, сконфигурированной в режиме события.

Во время выхода из режима останова HSI RC генератор выбран как основное системное тактирующее устройство.

3.4.5 Режим ожидания.

Режим ожидания – режим с минимальным энергоптреблением. Основан на режиме глубоко сна контроллера вместе с отключенным регулятором питания. В этом режиме 1.8В домен отключен, PLL и генераторы HSI и HSE аналогично отключены. Содержимое SRAM и всех регистров (кроме резервных) утеряно.

Вход в режим ожидания.

Вызовом инструкций WFI или WFE пока:

  • Установлен бит SLEEPDEEP
  • Установлен бит PDDS в регистре PWR_CR
  • Сброшен бит WUF в регистре (PWR_CSR)

Также можно включить следующие возможности:

  • Независимый сторожевой таймер (IWDT): он может быть запущен с помощью своего регистра. Однажды запущен, он может быть остановлен только вводом контроллера в режим сброса.
  • Часы реального времени (RTC): с помощью бита RTCEC в своём регистре управления.
  • Внутренняя тактирующая RC-цепочка (LSI RC): с помощью бита LSION.
  • Внешний генератор на 32.768 кГц (LSE OSC): с помощью бита LSEON.

Выход из режима ожидания.

Выход может быть осуществлен с помощью:

  • нарастающего фронта на пине  WKUP
  • нарастающему фронту будильника RTC
  • внешнего сигнала на пине NRST
  • сброса IWGT

Отладочный режим.

По усолчанию отладочное соединение таеряется при переходе контроллера в режим останова или ожидания, так как ядро больше не получает тактирующего сигнала.

Однако с помощью битов регистра DBGMCU_CR  можно включить возможность отладки контроллера в режимах с низким потреблением энергии.

3.3.6 Автовыход из режима пониженного энергопотребления 

Часы реального времени могут вызывать выход из режима пониженного энергоптребления без вызова прерывания. Можно настроить RTC на поддъем контроллера из этих режимов через определенные промежутки времени. Для этого можно выбрать 2 источника тактирующего сигнала для RTC с помощью битов RTCSEL[1:0] регистра управления RTC:

  • Внешний кварц на 32.768 кГц (LSE OSC)
  • Внутренняя RC-цепочка

Чтобы поднять устройство из режима останова с помощью события от будильника RTC необходимо сделать следующее:

  •  Настроить линию 17 EXTI на возрастающий фронт
  • Настроить RTC на генерацию будильника

3.4 Регистры управления питанием

3.4.1 Регистр управления питанием (PWR_CR)

31

9

8

7

6

5

4

3

2

1

0

Reserved

DBP

PLS[2:0]

PVDE

CSBF

CWUF

PDDS

LPDS

rw

rw

rw

rw

rw

rc_w1

rc_w1

rw

rw

Биты 31:9 – зарезервированы, всегда читаются как 0.

Бит 8 DBP (disable backup domain write protection) – отключение защиты от записи резервного домена.

0: Доступ к RTC и регистрам для резервного копирования отключен.

1:  Доступ к RTC и регистрам для резервного копирования включен.

Биты 7:5 PLS[2:0] (PVD level selection) – Выбор порога срабатывания детектора напряжения.

000: 2.2 В

001: 2.3 В

010: 2.4 В

011: 2.5 В

100: 2.6 В

101: 2.7 В

110: 2.8 В

111: 2.9 В

Бит 4 PVDE (power voltage detector enable) – включение детектора напряжения.

0 – PVD отключен.

1 – PVD включен.

Бит 3 CSBF (clear standby flag) – Очистить флаг ожидания.

Бит всегда читается как 0.

0 – не принесет результатаю.

1 – Очистка флага ожидания SBF.

Бит 2 CWUF (clear wakeup flag) – очистить флаг пробуждения.

Бит всегда читается как 0.

0 – не принесет результата.

1 – Очистка флага WUF после 2 тактов системного генератора.

Бит 1 PDDS (power down deepsleep) – бит перехода в глубокий сон с отключением питания. Работает вместе с LPDS.

0 – Вход в режим останова, когда CPU входит в режим глубокого сна. Статус регулятора зависит от бита LPDS.

1 – Вход в режим ожидания, когда CPU входит в режим глубокого сна.

Бит 0 LPDS (low-power deepsleep) – бит перехода в глубокий сон с режимом пониженного энергопотребления. Работает вместе с PDDS.

0 – Регулятор напряжения включен во время режима останова.

1 – Регулятор напряжения в режиме низкого энергопторебления во время режима останова.

3.4.2 Регистр управления/статусный регистр (PWR_CSR)

31

9

8

7

3

2

1

0

Reserved

EWUP

Reserved

PVDO

SDF

WUF

rw

r

r

r

Биты 31:9 – зарезервированы, ситаются как 0.

Бит 8 EWUP (Enable WKUP pin) – назначение пина WKUP.

0 – Пин WKUP используется как GPIO. Событие на WKUP не прерывает режим ожидания устройства.

1 – Пин WKUP используется для пробуждения устройства из режима ожидания по нарастающему фронту.

Биты 7:3 – зарезервированы, читаются как 0.

Бит 2 PVDO (PVD output) – флаг статуса программируемого регулятора напряжения. Бит устанавливается и сбрасывается аппаратно.

0: VDD / VDDA выше порога срабатывания PVD

1: VDD / VDDA ниже порога срабатывания PVD

Замечание: Во время режима ожидания PVD отключен, поэтом бит PVDO читается как 0 после выхода устройства из режима ожидания и после сброса, пока не установлен бит PVDE.

Бит 1 SBF (standby flag) – бит устанавливается и сбрасывается только POR/PDR или с помощью установки бита CSBF в регистре PWR_CR

0: Устройство не в режиме ожидания

1: Устройство в режиме ожидания

Бит 0 WUF (wakeup flag) – бит устанавливается аппаратно, а сбрасывается с помощью POR/PDR или с помощью установки бита CWUF в регистре PWR_CR.

0: Пробуждающего события нет

1: Пробуждающее событие пришло с пина WKUP или от будильника RTC.

 3.5 Программирование модуля управления питанием

void PWR_BackupAccessCmd (FunctionalState NewState)

Включает или отключает доступ к резервным регистрам и регистрам RTC.

Вход:

  • NewState – состояние разрешения доступа. Может быть либо ENABLE, либо DISABLE.

Выход:

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

Очищает указанный флаг PWR.

Вход:

  • PWR_FLAG – указывает флаг, который надо сбросить. Прнимает следующие значения: PWR_FLAG_WU (wake up flag) и PWR_FLAG_SB (standby flag)

Выход:

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

Сбрасывает значения регистров PWR к их первоначальному значению.

Вход:

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

Выход:

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

Вводит устройство в режим ожидания.

Вход:

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

Выход:

  • Значения не возвращает.
void PWR_EnterSTOPMode (uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)

Ввводит устройство в режим останова.

Вход:

  • PWR_Regulator – устанавливает состояние регулятора при входе в режим останова. Прнимает следующие значения: PWR_Regulator_ON (регулятор включен) и PWR_Regulator_LowPower (регулятор находится в режиме пониженного энергопотребления)
  • PWR_STOPEntry – устанавливает тип инструкции (WFE или WFI) с которой должен быть осуществлен вход режим останова. Принимает следующие значения: PWR_STOPEntry_WFI и PPWR_STOPEntry_WFE.

Выход:

  • Значения не возвращает.
FlagStatus PWR_GetFlagStatus (uint32_t PWR_FLAG)

Возвращает состояние указанного флага (установлен или нет).

Вход:

  • PWR_FLAG – указывает флаг, состояние которого надо проверить. Принимает следующие значения: PWR_FLAG_WU (wake up flag), PWR_FLAG_SB (standby flag) и PWR_FLAG_PVDO (PVD Output)

Выход:

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

Влючает или отключает детектор напряжения.

Вход:

  • NewState – статус детектора напряжения. Принимает следующие значения: ENABLE, DISABLE (standby flag) и PWR_FLAG_PVDO (PVD Output)

Выход:

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

Устанавливает порог срабатывания детектора напряжения.

Вход:

  • PWR_PVDLevel – вольтаж порога. Принимает следующие значения: от PWR_PVDLevel_2V2 (2.2 вольта) до PWR_PVDLevel_2V9 (2.9 вольта) с шагом 0.1 вольт.

Выход:

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

Устанавливает возможность пробуждения контроллера по сигналу на пробуждающем пине.

Вход:

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

Выход:

  • Значения не возвращает.
Advertisements
  1. Гарик
    07.07.2011 at 22:39

    1.В предложении явно не хватает слова.
    “После восстановления контроллера из WFE, бит ожидания периферийного прерывания и бит ожидания периферийного канала NVIC”.
    2. “осущевствлен”
    3. “поддъем”
    4. “энергоптреблением”.
    5. “Основан на режиме глубоко сна

  2. ilya
    16.04.2014 at 13:08

    “Если не планируется использовать источник резервного питания, то рекомендуется замкнуть VBAT на VDD с помощью керамического конденсатора на 100 мкФ.”

    Может 100 нФ ?!

  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: