Pwr src voltage что это
Описание названий напряжений на материнских платах.
Описание названий напряжений на материнских платах.
Даже базовые материнские платы предоставляют несколько производных величин помимо основного напряжения, а в моделях класса high-end этих значений несметное количество. Порой даже опытным энтузиастам разгона трудно понять значение того или иного параметра. Мы постараемся объяснить все эти значения напряжений на понятном языке.
Первыми в данном вопросе путаницу вносят производители материнских плат. Производители CPU и наборов микросхем тоже дают официальные названия всех напряжений, каждый производитель материнских плат, по непонятным причинам, присваивает им свои названия. В мануалах к платам производитель обычно не объясняет значение того или иного названия. Сначала рассмотрим, какие названия напряжений производители CPU дают своим продуктам.
Процессоры производства Intel используют следующие напряжения (официальные названия):
VCC. Основное напряжение CPU, которое неофициально может называться, как Vcore. Обычно, когда говорят “напряжение центрального процессора”, то имеют в виду данную величину. Опция, которая управляет данным напряжением на материнских платах, может называться “CPU Voltage”, “CPU Core”, и т.д.
VCCPLL. Напряжение, используемое в CPU, для синхронизации внутренних множителей (PLL, Фазовая автоматическая подстройка частоты). Это напряжение может быть изменено с помощью “CPU PLL Voltage”.
VAXG. Напряжение, подаваемое на видеоконтроллер, интегрированный в CPU. Доступно на Pentium G6950, Core i3 5xxx и Core i5 6xx процессоры. Эта опция может называться “Graphics Core”, “GFX Voltage”, “IGP Voltage”, “IGD Voltage” и “VAXG Voltage”.
CPU clock voltage. Некоторые материнские платы позволяют Вам менять напряжение базовой частоты CPU. Это можно делать через опции, называемые “CPU Clock Driving Control” or “CPU Amplitude Control”.
Процессоры Intel. Напряжения, относящиеся к памяти. В то время, как у всех процессоров производства AMD есть встроенный контроллер памяти, то у процессоров Intel, эта особенность присутствует только у более новых моделей (Core i3, Core i5 и Core i7). Поэтому установка напряжений, относящихся к памяти, может быть произведена через настройки CPU или северного моста в составе набора микросхем (MCH, Memory Controller Hub), в зависимости от Вашей платформы. По этой причине напряжения и были разнесены на две группы.
На шине памяти может присутствовать три различных вида напряжений:
VDDQ. Сигнальное напряжение на шине памяти. JEDEC (организация, стандартизирующая память) называет эту величину напряжением SSTL (Stub Series Termination Logic). Это распространенная величина напряжения памяти, и она может скрываться за следующими названиями: “DIMM Voltage”, “DIMM Voltage Control”, “DRAM Voltage”, “DRAM Bus Voltage”, “Memory Over-Voltage”, “VDIMM Select”, “Memory Voltage” и т.д. Значение по умолчанию для этой линии 1.8 в для памяти DDR2 (SSTL_1.8) или 1.5 в для DDR3 (SSTL_1.5).
Termination voltage. Напряжение, подаваемое на логические схемы в чипах памяти. По умолчанию данное напряжение устанавливается, как половина значения напряжения
Процессоры Intel. Напряжения, относящиеся к набору микросхем. Опции, связанные с набором микросхем, включают все напряжения, которые не были описаны на предыдущей странице:
North bridge voltage. Это напряжение, которое подается на северный мост в составе набора микросхем системной платы. Отметим, что Intel называют северный мост, как MCH (Memory Controller Hub, на материнских платах для процессоров без интегрированного контроллера памяти), IOH (I/O Hub, на материнских платах, под CPU со встроенным контроллером памяти. Реализация набора микросхем в двух чипах) или PCH (Platform Controller Hub, на материнских платах, где CPU также имеет интегрированный контроллер памяти, но набор микросхем реализован в виде одного чипа). Таким образом, название данной опции может немного изменяться в зависимости от платформы. В случае наборов микросхем PCH существует два отдельных напряжения, VccVcore (обычно обозначается в настройках материнской платы как “PCH 1.05 V” или “PCH PLL Voltage” и является основным напряжением чипа), а также напряжение VccVRM (такие опции, как “PCH 1.8 V” или “PCH PLL Voltage” регулируют напряжение, подаваемое на внутренние множители чипа).
PCI Express voltage. Если Вы хотите изменить напряжение PCI Express, то нужно будет сначала определить, каким образом в Вашей системе управляются слоты и линии PCI Express. Например, некоторые CPU от Intel, могут управлять одной x16 или двумя x8 PCI Express линиями для подключения для видеокарт, а низкоскоростными PCI Express управляет набор микросхем (PCH). На некоторых других платформах управление слотами PCI Express для видеокарт осуществляется северным мостом (MCH или IOH), в то время как низкоскоростными PCI Express, управляет чип южного моста (ICH). Напряжение, используемое на линиях PCI Express, обычно, регулируется аппаратно, поэтому оно автоматически изменяется при изменении напряжений CPU, северного (PCH/MCH) или южное моста, в зависимости от того, где реализовано управление линиями PCI Express. В некоторых наборах микросхем (например, Intel X58) есть возможность устанавливать напряжения для линий PCI Express. На материнских платах, основанных на таких чипсетах, Вы найдете специальные опции для установки напряжения PCI Express. Например, “IOHPCIE Voltage” изменяет напряжение линий PCI Express, которым управляет северный мост материнской платы (IOH). А при помощи такой опции, как “ICHPCIE Voltage” можно устанавливать напряжение линий ICHPCIE Voltage, которыми управляет южный мост материнской платы (ICH).
PCI Express clock voltage. Некоторые материнские платы позволяют Вам устанавливать напряжение элементов, отвечающих за частоту шины PCI Express. Данный параметр может называться “PCI-E Clock Driving Control” или “PCI Express Amplitude Control”.
Ремонт ноутбука своими руками.
Меню навигации
Пользовательские ссылки
Объявление
Информация о пользователе
Вы здесь » Ремонт ноутбука своими руками. » Samsung, Dell » QUANTA FX2 DELL (Model: PP 23LA) горят CAP_LED;NUM_LED нет старта
QUANTA FX2 DELL (Model: PP 23LA) горят CAP_LED;NUM_LED нет старта
Сообщений 1 страница 30 из 135
Поделиться102.02.2016 13:47:34
Поделиться202.02.2016 14:17:59
где ещё можно посмотреть что могло произойти с этой железкой.
Поделиться302.02.2016 15:24:38
Поделиться402.02.2016 16:27:31
. нармальны прикол , со «»стр43″»» на коком только она форуме.
Поделиться502.02.2016 16:39:04
По схеме вижу что индикация идёт с.
Вы должны попасть на 43 страницу схемы ноутбука.
На вашем месте надо помогать а вы заставляете.
На моем месте, я бы мог вообще ничего не делать и я никого ничего не заставляю.
У вас наверное ни зря такие полномочия. о чём то это должно говорить.
Но некоторые, ведут себя как то так :
Поделиться602.02.2016 18:48:04
. И я, кроме своей работы, нахожу время, что бы кому то помочь с их ремонтами. :
За это огромное человеческое спасибо.
Поделиться702.02.2016 18:57:55
На моем месте, я бы мог вообще ничего не делать и я никого ничего не заставляю.
На моем месте, я бы мог вообще ничего не делать и я никого ничего не заставляю.
—так вы его для того и создали, что бы общаться и помогать. Но вы же сами понимаете что ваш сайт посещают ни только квалифицированно грамотные спецы, но есть и те, кто начинает с ремонтом (у них то и возникает больше всего вопросов), ни заводите тогда с такими диалог, если считаете что такой клиент будет энергетически посылать в ваш адрес обиды. Лично у меня к вам никаких обид и претензий нет. Мне что было не понятно я сказал (старался не в грубой форме, чувствую что получилось всё да наоборот).
Вы должны попасть на 43 страницу схемы ноутбука.
DDR4 и Ryzen. Нюансы настройки и разгона памяти на платформе AMD AM4
Терминология
Ниже приведен список технических терминов, относящихся к разгону памяти с процессором Ryzen. Последний использует стандартную архитектуру памяти DDR4, поэтому вы можете быть знакомы с некоторыми из этих терминов. Некоторые другие термины являются новыми и характерными для UEFI материнских плат платформы AM4.
SOC Voltage — напряжение контроллера памяти. Предел 1,2 В.
DRAM Boot Voltage — напряжение, на котором происходит тренировка памяти при запуске системы. Лимит: до 1,45–1,50 В.
VDDP Voltage — это напряжение для транзистора, который конфигурирует содержимое оперативной памяти. Лимит: до 1,1 В.
VPP (VPPM) Voltage — напряжение, которое определяет надежность доступа к строке DRAM.
CLDO_VDDP Voltage — напряжение для DDR4 PHY на SoC. DDR4 PHY, или интерфейс физического уровня DDR4, преобразует информацию, которая поступает из контроллера памяти в формат, понятный модулям памяти DDR4.
Несколько нелогично, что снижение CLDO_VDDP часто может быть более выгодным для стабильности, чем повышение. Опытные оверклокеры также должны знать, что изменение CLDO_VDDP может сдвинуть или устранить дыры в памяти. Небольшие изменения в CLDO_VDDP могут иметь большой эффект, и для CLDO_VDDP нельзя установить значение, превышающее VDIMM –0,1 В. Tсли вы измените это напряжение, то потребуется холодная перезагрузка. Лимит: 1,05 В.
Vref Voltage — источник опорного напряжения оперативной памяти. «Настройка» взаимосвязи контроллера памяти и модуля памяти в зависимости от уровня напряжения, которое рассматривается как «0» или «1»; то есть напряжения, найденные на шине памяти ниже MEMVREF, должны рассматриваться как «0», а напряжения выше этого уровня должны считаться «1». По умолчанию этот уровень напряжения составляет половину VDDIO (около 0,500x). Некоторые материнские платы позволяют пользователю изменять это соотношение, обычно двумя способами: (1) «DRAM Ctrl Ref Voltage» (для линий управления с шины памяти; официальное название JEDEC для этого напряжения — VREFCA) и (2) «DRAM Ctrl Data Ref Voltage» (для строк данных с шины памяти; официальное название JEDEC — VREFDQ). Эти параметры настроены как множитель.
VTT DDR Voltage — напряжение, используемое для управления сопротивлением шины, чтобы достигнуть высокой скорости и поддержать целостность сигнала. Это осуществляется с помощью резистора параллельного прерывания.
PLL Voltage — определяет напряжение питания системы Фазовой АвтоПодстройки Частоты (ФАПЧ или PLL — Phase Locked Loop) и является актуальной лишь для повышения стабильности во время разгона системы с помощью BCLK. Лимит: 1,9 В.
CAD_BUS — САПР командной и адресной шины. Для тех, кто может тренировать память на высоких частотах (>=3466 МГц), но не может стабилизировать ее из-за проблем с сигнализацией. Я предлагаю вам попробовать уменьшить токи привода, связанные с «Командой и адресом» (увеличив сопротивление).
CAD_BUS Timings — задержка трансивера. Значения являются битовой маской (грубой / точной задержки). Аналог RTL/IOL в исполнении AMD. Имеют огромное влияние на тренировку памяти.
procODT — значение сопротивления, в омах, который определяет, как завершенный сигнал памяти терминируется. Более высокие значения могут помочь стабилизировать более высокие скорости передачи данных. Ограничение: нет.
RTT (время приема-передачи) — это время, затраченное на отправку сигнала, плюс время, которое требуется для подтверждения, что сигнал был получен. Это время задержки, следовательно, состоит из времени передачи сигнала между двумя точками. Настройка, которая отвечает за оптимизацию целостности сигнала. DRAM предлагает диапазон значений сопротивления нагрузки. Конкретное сопротивление приемника выводов DQ, представленное интерфейсу, выбирается комбинацией начальной конфигурации микросхемы и рабочей команды DRAM, если включено динамическое завершение на кристалле.
Geardown Mode — позволяет памяти уменьшать эффективную скорость передачи данных на шинах команд и адресов.
Power Down Mode — может незначительно экономить энергию системы за счет более высокой задержки DRAM, переводя DRAM в состояние покоя после периода бездействия.
BankGroupSwap (BGS) — настройка, которая изменяет способ назначения приложениям физических адресов в модулях памяти. Цель этого регулятора — оптимизировать выполнение запросов к памяти, учитывая архитектуру DRAM и тайминги памяти. Теория гласит, что переключение этого параметра может сместить баланс производительности в пользу игр или синтетических приложений.
Игры получают ускорение при отключенной BGS, а пропускная способность памяти AIDA64 была выше при включенной BGS.
Алгоритм настройки системы
Инструмент, который будет нам помогать с рекомендациями — DRAM Calculator for Ryzen. Самый главный, фундаментальный шаг — это запуск системы на определенной частоте, которую мы хотим получить. Для этого нам потребуется вручную установить такие настройки в UEFI: профиль XMP памяти (он может называться по-разному, смысл от этого не меняется), частоту для оперативной памяти (которую мы хотим получить), установить частоту BCLK (если присутствует такая настройка в прошивке), тайминги (которые рекомендует калькулятор), напряжение для SOC и DRAM (рекомендации калькулятора) и procODT + RTT (NOM, WR и PARK). Не забывайте про важный нюанс, что материнская плата или оперативная память может не справиться с вашими амбициями, потому советую посетить страницу поддержки вашей материнской платы и посмотреть QVL-список, в котором будут указаны частоты, на которых плата в заводских условиях функционировала без ошибок. Эта частота и будет нашей отправной точкой. Зачастую это 3000–3200 МГц.
Параметры procODT + RTT (NOM, WR и PARK) мы будем подбирать так, чтоб система имела минимальное кол-во ошибок. Тестовый пакет TM5 0.12 (Basic Preset). Безусловно, от всех ошибок мы не сможем избавиться, и для этого нам нужен будет следующий шаг.
Цель следующего шага — поиск самого оптимального напряжения для DRAM и SOC, при которых система будет иметь минимальное кол-во ошибок. Сначала подбираем напряжение для SOC, а затем для DRAM (калькулятор вам подскажет диапазон). Для отлова ошибок используем тестовый пакет TM5 0.12 (Basic Preset).
В половине случаев вы можете на данном этапе получить полностью стабильную систему. Если тестовый пакет TM5 0.12 не находит ошибок, то вы должны увеличить спектр тестовых программ для проверки стабильности. Вы можете использовать LinX, HCI, Karhu, MEMbench и другие программы. В случае если вышеописанные утилиты нашли ошибку, то вам стоит перейти к следующему шагу, отладочному.
На отладочном шаге главная цель — это изменение определенных таймингов, указанные на иллюстрации ниже.
На данном этапе вы должны проверить по очереди влияние каждого тайминга на стабильность системы. Примечание: я не рекомендую изменять все задержки сразу, постарайтесь набраться терпения. Если тестируемый тайминг никак не улучшает ситуацию, мы его возвращаем на место и проверяем по списку следующую задержку.
На этом шаге основной инструктаж по отладке системы для простых пользователей заканчивается. Дальнейшие шаги я могу посоветовать более опытным оверклокерам, которые знакомы с разгоном достаточно давно.
Тонкая настройка CAD_BUS
и корректировка дополнительных напряжений.
На каждой иллюстрации присутствуют списки параметров, которые мы используем или изменяем. Эти списки я сформировал так, чтобы более приоритетные настройки, которые могут помочь улучшить стабильность, вы проверили первыми. Безусловно, вы можете пойти своей дорогой, четких правил и закономерностей нет.
Power Management часть 2 (перевод из книги Mastering STM32)
Продолжаем перевод главы, которая описывает управление питанием в микроконтроллерах STM32.
18.3 Управление питанием в микроконтроллерах STM32F
До сих пор мы рассматривали параметры, свойственные всем микроконтроллерам STM32. Тем не менее, семейства микроконтроллеров STM32 делится еще на две больших ветки STM32F и STM32L. Вторая серия микроконтроллеров адресована как раз для энергосберегающих применений и обеспечивает большое количество режимов для минимизации потребления питания.
В этой части главы мы начнем с анализа того, как управлять режимами питания в микроконтроллерах STM32F. Важно подчеркнуть, что как это часто бывает с другими функциями, некоторые семейства STM32 и даже некоторые микроконтроллеры в рамках одного семейства имеют специфические особенности, которые отличаются от того, как управление питанием осуществляется в большинстве микроконтроллеров STM32. По этой причине всегда держите под рукой референс-мануал для конкретного микроконтроллера, который используете.
18.3.1 Источники питания
На рисунке 3 показаны все источники питания, которые могут быть у микроконтроллеров STM32 (следует отметить, что схема упрощена и некоторые из микроконтроллеров имеют более сложную схему питания, нежели изображенная). Как уже было сказано ранее, даже если мы используем лишь один источник питания, микроконтроллер имеет внутреннюю структуру распределения, которая определяет несколько областей напряжения, используемых для питания тех периферийных устройств, которые имеют схожие характеристики питания. Для примера, напряжение VDDA питает те аналоговые периферийные устройства, которым требуется отдельный (лучше отфильтрованный) источник питания, через выводы VDDA микроконтроллера.
Напряжения VDD и VDD18 являются наиболее значимыми. VDD подается внешним источником питания, когда как VDD18 формируется внутренним стабилизатором напряжения микроконтроллера. Этот стабилизатор можно настроить для работы в режиме пониженного энергопотребления, как мы увидим далее. Для сохранения содержания резервных регистров и обеспечения функционирования RTC, когда VDD отключен, можно запитать вывод VBAT от дополнительного резервного источника питания или от батареи. Вывод VBAT обеспечивает питание RTC, генератора LSE и одного или двух выводов, используемых для пробуждения микроконтроллера из режимов глубокого сна, обеспечивая работу RTC даже когда нет основного питания VDD. По этой причине источник питания VBAT называют источником питания RTC. Переключение на источник питания VBAT управляется посредством PDR (Power Down Reset), встроенного в блок сброса.
18.3.2 Режимы питания
В первой части этой главы мы увидели, что микроконтроллер на базе Cortex-M ядра обеспечивает три основных режима питания: Run, Sleep и Deep Sleep. И теперь самое время рассмотреть как инженеры ST переработали эти режимы в своих микроконтроллерах STM32F. Таблица 1 суммирует эти режимы и показывает три основные функции, предоставляемые HAL для каждого из режимов питания. Их мы проанализируем немного позже.
18.3.2.1 Режим Run
По умолчанию и после подачи питания или сброса микроконтроллера, STM32F устанавливает режим работы Run или по другому активный режим работы, который потребляет большое количество энергии даже при выполнении несущественных задач. Потребление этого режима и режима Sleep зависит от тактовой частоты микроконтроллера. На рисунке 4 показаны уровни энергопотребления некоторых микроконтроллеров серии STM32F4. В активном режиме основной стабилизатор обеспечивает полную мощность для домена 1.8/1.2V (это ядро, память и цифровая периферия). В этом режиме выходное напряжение стабилизатора 1.8/1.2V в зависимости от конкретного микроконтроллера STM32F, его можно программно масштабировать до различных значений напряжения и подробнее об этом будет сказано чуть позже. Некоторые более новые микроконтроллеры серии STM32F4 предоставляют сразу два режима работы:
18.3.2.1.1 Динамическое масштабирование напряжения в микроконтроллерах STM32F4/F7
Потребляемая мощность в цепи постоянного тока определяется потребляемым током и напряжением в цепи. Это означает, что мы можем уменьшить потребляемую мощность, уменьшив напряжение питания. STM32F4/F7 предоставляют технологию интеллектуального контроля питания под названием Dynamic Voltage Scaling (DVS), отличающуюся от той, что есть в серии STM32L. Идея DVS заключается в том, что многим встраиваемым системам не всегда требуются полные возможности обработки системы, поскольку не все подсистемы активны в одно время. В этом случае система может оставаться в активном режиме работы и процессор не будет работать на максимальной тактовой частоте. Напряжение, подаваемое на процессор, может быть уменьшено с уменьшением тактовой частоты. Благодаря такому механизму управления питанием, мы уменьшаем потребляемую мощность, отслеживая входное напряжение процессора в соответствии с требованиями к производительности системы.
Это выражается в масштабировании выходного напряжения регулятора STM32F4, которое падает до 1.2В, когда мы понижаем тактовую частоту. STM32F4/F7 предлагает три коэффициента масштабирования (scale 1, scale 2, scale 3). Максимально возможная тактовая частота ядра для конкретного коэффициента масштабирования зависит от конкретного микроконтроллера STM32. Например, STM32F401 имеет только два коэффициента масштабирования, scale 2 и scale 3, которые позволяют ядру работать на частотах 84МГц и 60МГц соответственно. Для управления масштабированием напряжения CubeHAL предоставляет следующую функцию:
которая принимает следующие константы:
Масштабирование напряжения можно изменить только в том случае, если источником системной тактовой частоты является HSI или HSE. Итак, чтобы увеличить/уменьшить скалирование напряжения вы должны выполнить следующие процедуры:
Во-первых, установите HSI или HSE в качестве источника системной тактовой частоты, используя
Во-вторых, для настройки PLL вызовите функцию
В-третьих, для настройки скалирования напряжения вызовите
И в-четвертых, установите новую системную тактовую частоту
Для получения дополнительной информации по этой теме смотрите апноут AN4365.
18.3.2.1.2 Режим Over/Under-Drive в микроконтроллерах STM32F4/F7
Некоторые микроконтроллеры из серии STM32F4 и все из STM32F7 предоставляют два или даже более вспомогательных режима. Эти режимы называются Over-Drive и Under-Drive. Первый заключается в увеличении тактовой частоты с помощью «разгона». Входить в режим Over-Drive рекомендуется когда приложение не выполняет критические задачи и источником системной тактовой частоты является HSI или HSE. Эти функции могут быть полезны, когда мы хотим временно увеличить/уменьшить тактовую частоту микроконтроллера без перенастройки тактового дерева, что обычно приводит незначительным издержкам. HAL предоставляет две удобные функции для выполнения этих операций:
Режим Under-Drive противоположен Over-Drive и заключается в понижении тактовой частоты и отключении некоторых периферийных устройств. В этом режиме возможно перевести внутренний регулятор напряжения в режим пониженного энергопотребления. В некоторых микроконтроллерах STM32F4/F7 этот режим доступен даже в Stop режиме.
18.3.2.2 Режим Sleep
Войти в спящий режим можно с помощью выполнения инструкций WFI или WFE. В спящем режиме все порты ввода/вывода сохраняют свое состояние. Нет необходимости заботиться о выполнении данных инструкций, т.к. CubeHAL предоставляет для этого специальную функцию:
Если вы посмотрите на функцию HAL_PWR_EnterSLEEPMode(), то вы обнаружите, что, если мы передадим параметр PWR_SLEEPENTRY_WFE, она выполнит две инструкции WFE последовательно. Это приводит к тому, что HAL_PWR_EnterSLEEPMode() входит в спящий режим таким же образом, как если бы она вызывалась с параметром PWR_SLEEPENTRY_WFI (двойной вызов инструкции WFE приводит к тому, что если установлен регистр событий, то он очищается первой инструкцией WFE, а вторая переводит микроконтроллер в спящий режим). Я не знаю почему ST использовали подобный подход. Если вы хотите получить полный контроль над режимами энергопотребления микроконтроллера, вам необходимо изменить содержание этой функции в соответствии с вашей задачей. Ясно, что микроконтроллер выйдет из спящего режима при условии выхода для инструкции WFE.
Если используется инструкция WFI для входа в спящий режим, любое прерывание от периферийного устройств, подтвержденной вложенным вектором в контроллере прерываний (NVIC), может вывести устройство из спящего режима.
Если же для входа в спящий режим используется инструкция WFE, то микроконтроллер выходит из спящего режима как только происходит событие. Событие пробуждения может быть сгенерировано в следующих случаях:
Этот режим предлагает самое низкое время пробуждения, поскольку не тратится время на вход/выход из прерывания.
18.3.2.3 Режим Stop
Режим Stop или режим остановки основан на режиме глубокого сна Cortex-M в сочетании с выключением тактирования периферийных устройств. В этом режиме все тактовые сигналы в домене 1.8В останавливаются, генераторы PLL, HSI и HSE отключены. SRAM и содержимое регистра сохраняется. Все порты ввода/вывода сохраняют свое состояние. Регулятор напряжения может быть как в нормальном режиме работы, так и в режиме пониженного энергопотребления. Для перевода микроконтроллера в режим остановки HAL предоставляет функцию:
Чтобы войти в режим остановки, все ожидающие прерывания биты линии EXTI периферийных устройств и RTC Alarm флаг должны быть сброшены. В противном случае процедура входа в режим остановки игнорируется и выполнение программы будет продолжено. Если приложению необходимо отключить внешний тактовый генератор HSE перед входом в режим остановки, источник системной тактовой частоты должен быть сперва переключен на HSI, а затем сброшен бит HSEON. В противном случае, если перед входом в режим остановки бит HSEON не сброшен, необходимо включить функцию систему безопасности CSS, чтобы обнаружить сбой внешнего генератора и избежать неисправности при входе в режим остановки.
Любая линия EXTI, сконфигурированная в режиме прерывания или события, вынуждает процессор выйти из режима остановки, если он был введен в режиме пониженного энергопотребления с использованием инструкций WFI или WFE. Поскольку и HSE, и PLL отключаются перед входом в этот режим, то при выходе из него источником системной тактовой частоты устанавливается HSI. Это означает, что наш код должен переконфигурировать дерево тактирования в соответствии с желаемой SYSCLK.
18.3.2.4 Режим Standby
Режим ожидания позволяет достичь минимального потребления. Он основан на режиме глубокого сна Cortex-M с полностью отключенным внутренним регулятором напряжения. Домен 1.8/1.2V отключен. PLL, генераторы HSI и HSE также отключены. SRAM и содержимое регистров теряется, за исключением регистров в standby режима. Для перевода микроконтроллера в режим ожидания HAL предоставляет функцию:
Микроконтроллер может выйти из режима ожидания, когда происходит внешний сброс (NRST), сброс IWDG, нарастающий фронт на одном из активированных выводов WKUPx или по событию от RTC. Все регистры сбрасываются после выхода из режима, за исключением регистра управления питанием PWR->CSR. После выхода выполнение программы возобновляется так же, как и после сброса. Используя макрос:
мы можем проверить, сбрасывается ли микроконтроллер после выхода из режима ожидания. Поскольку и HSE, и PLL отключаются перед входом в режим ожидания, то при выходе из него источником системной тактовой частоты устанавливается HSI. Это означает, что наш код должен переконфигурировать дерево тактирования в соответствии с желаемой SYSCLK.
Внимание!
Некоторые микроконтроллеры STM32 имеют аппаратную ошибку, которая не позволяет войти или выйти из режима ожидания. Для этого должны быть выполнены особые условия. Более подробную информацию по вашему микроконтроллеру можно получить в Errata.
18.3.2.5 Примеры режимов пониженного энергопотребления
В следующем примере для платы Nucleo-F030R8, показано, как работают режимы пониженного энергопотребления.
Макрос __HAL_RCC_PWR_CLK_ENABLE() в строке 9 включает периферийное устройство PWR: прежде чем мы сможем выполнить хоть какую-нибудь операцию, связанную с управлением питанием, нам необходимо включить PWR, даже если мы просто проверяем установлен ли флаг ожидания в регистре PWR->CSR. Это является источником головной боли для многих начинающих разработчиков.
Строки [13:21] проверяют установку флага ожидания: если установлен, то это означает, что микроконтроллер был сброшен после выхода из режима ожидания Standby. Строки [23:29] представляют режим работы: светодиод LD2 мигает пока не будет нажата кнопка USER на плате Nucleo, подключенная к PC13. Остальные строки в main() просто позволяют переключаться между тремя режимами пониженного энергопотребления при каждом нажатии кнопки USER.
Микроконтроллеры STM32 обычно имеют два вывода пробуждения, которые называются PWR_WAKEUP_PIN1 и PWR_WAKEUP_PIN2. Для многих микроконтроллеров STM32 в корпусе LQFP64 второй вывод пробуждения совпадает с PC13, который подключен к кнопке USER на всех платах Nucleo (кроме Nucleo-F302, где он подключен к выводу PB13). Тем не менее, мы не можем PWR_WAKEUP_PIN2 в нашем примере, потому что этот вывод подтянут к питанию резистором на печатной плате. Когда мы конфигурируем выводы пробуждения в сочетании с режимом ожидания, мы не используем соответствующую периферию GPIO, которая бы позволила нам настраивать вывод на вход, потому что она отключается перед входом в режим ожидания: выводы пробуждения напрямую обрабатываются периферийным устройством PWR, которое сбрасывает микроконтроллер, если один из двух выводов устанавливается в логическую единицу, т.е. на нем появляется напряжение питания. Итак, в примере мы используем вывод PWR_WAKEUP_PIN1, который соответствует выводу PA0 в микроконтроллере STM32F030.
Платы Nucleo позволяют измерить потребление тока микроконтроллера с помощью штыревого разъема IDD. Перед началом измерений необходимо установить соединения с платой, как показано на рисунке 5, сняв перемычку IDD и подключив щупы амперметра. Убедитесь, что амперметр настроен на шкалу мА. Таким образом, вы можете увидеть энергопотребление для каждого из режимов питания микроконтроллера.
18.3.3 Важное предупреждение для микроконтроллеров STM32F1
Во время разработки примеров для FreeRTOS в соответствующей главе, автор книги столкнулся с неприятным поведением микроконтроллера STM32F103 при входе в режим остановки с помощью функции HAL_PWR_EnterSTOPMode() из CubeF1 HAL. В частности, возникшая проблема связана с выходом из этого режима, когда микроконтроллер входит в него с помощью инструкции WFI. В режим остановки микроконтроллер входит правильно, но во время пробуждения от прерывания, он немедленно генерирует исключение Hard Fault. Изучив данный случай, автор пришел к выводу, что разработчики ST не следуют советам ARM в вопросе перехода в режимы пониженного энергопотребления в микроконтроллерах Cortex-M3, как описано здесь.
Изменение процедуры HAL следующим образом решило данную проблему:
Изменение заключается просто в добавлении двух инструкций барьера памяти, одной до и после инструкции WFI.
Автор задал вопрос по этой проблеме на официальном форуме ST, но на момент написания этой главы ответа еще не было.
Я очень стараюсь над данным циклом переводов и, если вам несложно, поделитесь этой статьей с другими и подписывайтесь на мой канал в telegram, где я публикую анонсы новых статей и много другой информации.