Насколько низко (мощность) вы можете опуститься?
В моем последнем посте «Основы режима низкого энергопотребления Arm Cortex-M» мы исследовали основы режимов низкого энергопотребления, которые можно найти на каждом процессоре Arm Cortex-M, и как мы могли бы использовать инструкции WFI и WFE для установки процессора. спать. Однако остается вопрос, как эти режимы с низким энергопотреблением реализованы на реальном микроконтроллере и как эти режимы влияют на нашу встроенную систему? В этом посте мы более подробно рассмотрим, как перевести микроконтроллер в спящий режим, и посмотрим, сколько энергии на это нам нужно.
Эксперименты в режиме низкого энергопотребления
Лучший способ изучить режимы низкого энергопотребления - выбрать микроконтроллер и фактически запустить процессор в различных режимах низкого энергопотребления. Для этого поста я решил стереть пыль с моей испытанной платы NXP Kinetis-L Freedom, с которой я не только экспериментировал, но и использовал во многих продуктах, приложениях и курсах. Я также решил, правильно или неправильно, измерить не только количество энергии, потребляемой микроконтроллером, но и всю отладочную плату. MCU обычно является одним из самых энергоемких устройств на плате, но я часто обнаруживал, что измерение тока всей системы напоминает мне, что это не единственный потребитель энергии на плате. Оптимизация микроконтроллера может занять много времени, но это не всегда единственное устройство, для которого может потребоваться оптимизация энергопотребления.
Начните с базового измерения
Всякий раз, когда я работаю над оптимизацией энергопотребления продукта, я сначала начинаю с измерения базового уровня энергии. Обычно это делается путем профилирования текущего потребления устройства в течение нескольких секунд или минут, чтобы понять, с чего мы начинаем. Для эксперимента с платой для разработки я оставил Kinetis-L в рабочем режиме без перехода в спящий режим, все периферийные устройства были включены и настроил плату на периодическое переключение светодиода. Используя IAR Embedded Workbench с отладчиком I-Jet и I-Scope, я смог профилировать простую базовую линию для моей платы:~ 16,9 мА, когда светодиод был выключен, и ~ 18,0 мА, когда светодиод был включен, что можно увидеть ниже на Рис. 1. Как видите, важно отметить, откуда вы проводите измерения, иначе вы можете значительно отклониться от анализа.
щелкните, чтобы увеличить изображение
Рис. 1. Измерение тока макетной платы со светодиодным индикатором, переключающимся один раз в секунду. (Источник:автор)
Оптимизация энергии с помощью режимов ожидания и глубокого сна
Самый быстрый способ увидеть некоторую экономию энергии - включить режим ожидания или глубокого сна. Изучение технических характеристик процессоров Kinetis-L показывает, что в режиме ожидания потребляется от 3,7 до 5,0 мА при напряжении 3 В. В этом режиме тактовая частота ЦП и периферийных устройств отключена, но вспышка находится в спящем режиме, который позволяет процессору просыпаться в течение интервала времени прерывания (12-15 тактовых циклов). Режим ожидания легко реализовать, код для перехода в режим ожидания можно увидеть ниже:
void Sleep_Wait (void)
{
SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
asm («WFI»);
}
void Sleep_Deep (void)
{
SCB_SCR | =SCB_SCR_SLEEPDEEP_MASK;
asm («WFI»);
}
void Sleep_Stop (void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL | =SMC_PMCTRL_STOPM (0);
dummyread =SMC_PMCTRL;
Sleep_Deep ();
}
void Sleep_VLLS1 (void)
{
volatile unsigned int dummyread =0;
SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL | =SMC_PMCTRL_STOPM (0x4);
SMC_VLLSTRL =SMC_VLLSCTRL_LLSM (1);
dummyread =VLLS_CTRL;
Sleep_Deep ();
}
щелкните, чтобы увеличить изображение
Рис. 2. Время перехода от режимов пониженного энергопотребления к различным режимам на Kinetis-L. (Источник:техническое описание Kinetis-L)
Заключение
Все микроконтроллеры Arm будут иметь стандартные режимы низкого энергопотребления, но каждый поставщик кремниевых компонентов настраивает режимы низкого энергопотребления, доступные разработчикам. Как мы уже видели, поставщики кремний часто предлагают несколько режимов, которые действуют как низко висящие фрукты и оказывают минимальное влияние на задержку пробуждения. Они также обеспечивают несколько режимов с очень низким энергопотреблением, которые почти выключают процессор и потребляют всего несколько сотен микроампер или меньше! Разработчикам часто необходимо сбалансировать количество энергии, которое они хотят получить, с тем, насколько быстро им нужна их система, чтобы просыпаться и реагировать на события. Компромиссы определенно зависят от конкретного приложения, поэтому не стоит ожидать, что вы сможете запустить режим с минимальным энергопотреблением для каждого продукта и приложения.
Джейкоб Бенинго - консультант, советник и преподаватель встраиваемого программного обеспечения, который в настоящее время работает с клиентами из более чем десятка стран, чтобы кардинально преобразовать их программное обеспечение, системы и процессы. Не стесняйтесь обращаться к нему по адресу [email protected], на его веб-сайте www.beningo.com и подпишитесь на его ежемесячный бюллетень Embedded Bytes Newsletter.
Встроенный
- Как можно использовать мониторинг 3D-принтера для масштабирования аддитивного производства?
- Как можно масштабировать до серийного производства добавок с помощью аддитивного MES?
- Как данные IIoT могут повысить прибыльность в бережливом производстве
- Сколько реалий может быть у вас в промышленной автоматизации?
- Как отключение электроэнергии может повредить ваши источники питания
- Причины низкого коэффициента мощности
- Узнайте, как сваривать морскую латунь
- Как зарядить конденсатор?
- Как настройка PDP может сэкономить вам деньги
- Как сделать гидравлику более прочной?