Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Мастерство low-power режимов на Arm Cortex‑M: Практические советы и энергосбережение

В моей предыдущей статье «Arm Cortex‑M low-power mode fundamentals» я обозначил базовые low-power состояния, доступные на каждом Cortex‑M процессоре, и как использовать инструкции WFI и WFE для входа в сон. Следующий логический вопрос: как эти режимы реализованы на реальных микроконтроллерах и какое влияние они оказывают на общий энергобюджет встроенной системы? Этот пост погружается в hands-on экспериментацию с NXP Kinetis‑L Freedom board для количественной оценки выигрышей и компромиссов.

Экспериментация с Low Power режимами

Наиболее надежный способ оценить low-power поведение — запустить устройство в его различных состояниях питания и измерить полученный потребляемый ток. Для этого исследования я возродил NXP Kinetis‑L Freedom board — платформу, которую я использовал в многочисленных продуктах и курсах — для сбора конкретных данных. Хотя микроконтроллер обычно является крупнейшим потребителем питания на плате, измерение всего системного тока необходимо: другие компоненты (например, стабилизаторы напряжения, сенсоры и коммуникационные модули) могут значительно вносить вклад в общий потребляемый ток. Оптимизация только MCU может принести существенные выгоды, но голisticheский взгляд предотвращает скрытые утечки.

Начните с базового измерения

До внесения любых изменений я захватил базовый профиль тока, запуская Kinetis‑L в нормальном run режиме, оставляя все периферийные устройства включенными и переключая LED каждую секунду. Используя IAR Embedded Workbench с I‑Jet отладчиком и I‑Scope, я наблюдал стабильный ток примерно 16.9 mA когда LED был выключен и около 18.0 mA когда LED был включен (см. Рисунок 1). Точная точка измерения критична — разные тестовые точки могут давать заметно разные результаты.

кликните для увеличения
Мастерство low-power режимов на Arm Cortex‑M: Практические советы и энергосбережение
Рисунок 1. Измерение тока отладочной платы с LED, переключающимся раз в секунду. (Источник: Автор)

Оптимизация энергии с Wait и Deep Sleep режимами

Включение wait режима процессора — быстрый способ сэкономить питание. Согласно даташиту Kinetis‑L, wait режим потребляет между 3.7 mA и 5.0 mA при 3 В, потому что CPU и периферийные такты отключены, пока флеш остается в low-leakage doze состоянии. Процессор все еще может пробудиться за 12–15 тактовых циклов при прерывании.

void Sleep_Wait(void) { SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK; asm("WFI"); }

С всего этими двумя строками ток платы упал с 18.0 mA до 15.9 mA — снижение на 11.6 %. При питании от 680 mAh батареи, время работы устройства увеличилось бы с 37.8 часов до 42.8 часов — дополнительные пять часов работы за минимальные изменения кода.

Мы можем пойти дальше, входя в deep sleep режим:

void Sleep_Deep(void) { SCB_SCR |= SCB_SCR_SLEEPDEEP_MASK; asm("WFI"); }

Установка одного бита в SCB_SCR снижает ток до 14.8 mA, экономия 17.8 %. На 680 mAh батарее время работы поднимается до 46 часов — существенная выгода от всего нескольких дополнительных строк.

Использование Stop и VLLS режимов для микроамперного потребления

Stop режим может снизить потребление MCU на дополнительный миллиампер, отключая core и системные такты. Требует манипуляции регистром управления питанием и затем вызова Sleep_Deep:

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(); }

Very Low Leakage Stop (VLLS) режимы Kinetis‑L толкают это дальше, потребляя только 135 µA до 496 µA. Код для включения VLLS1 показан ниже:

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(); }

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

Рассмотрение латентности пробуждения

Низкоэнергетические состояния приходят с более длинными временами пробуждения. Стандартный stop режим требует примерно 2 мкс плюс латентность прерывания для возобновления операции. VLLS режимы вводят задержку загрузки 53 мкс до 115 мкс, что может быть неприемлемым для time-critical приложений. Рисунок 2 иллюстрирует времена перехода из различных low-power состояний в run режим.

кликните для увеличения
Мастерство low-power режимов на Arm Cortex‑M: Практические советы и энергосбережение
Рисунок 2. Времена перехода из low power режимов в различные режимы на Kinetis‑L. (Источник: Kinetis‑L datasheet)

Заключение

Все Arm микроконтроллеры выставляют стандартные low-power режимы, но кремниевые вендоры добавляют свои вариации для разных use cases. Вендоры обычно предлагают «low-hanging fruit» режимы, налагающие пренебрежимые штрафы пробуждения, а также ультра-низкоэнергетические опции, способные снизить ток до микроампер. Разработчики должны балансировать энергосбережение против требуемой отзывчивости их приложения; единственный low-power режим редко является one-size-fits-all решением.


Мастерство low-power режимов на Arm Cortex‑M: Практические советы и энергосбережениеДжейкоб Бенинго — консультант по встроенному ПО, советник и педагог, который сейчас работает с клиентами в более чем дюжине стран для драматичной трансформации их ПО, систем и процессов. Свободно свяжитесь с ним по jacob@beningo.com, посетите его сайт www.beningo.com и подпишитесь на его ежемесячный Embedded Bytes Newsletter.

Встроенный

  1. Ускорение аддитивного производства за счет мониторинга 3D-принтеров в реальном времени
  2. Масштабирование серийного аддитивного производства: как аддитивная MES обеспечивает эффективность и рост
  3. Использование IIoT-данных для повышения рентабельности в lean manufacturing
  4. Исследование спектра реальностей в промышленной автоматизации: VR, AR и гибридные пространства
  5. Как перебои с электричеством угрожают блокам питания — и как их защитить
  6. Низкий коэффициент мощности: основные причины и способы устранения
  7. Мастерство сварки судостроительной латуни: техники и советы по безопасности
  8. Пошаговое руководство: безопасная и эффективная зарядка конденсаторов
  9. Сократите счета за энергию, оптимизируя точку росы в системе сжатого воздуха
  10. Как усилить гидравлическую систему: проверенные способы повышения надёжности и ресурса