- Методы энергосбережения для микроконтроллеров
- 1. Режимы сна
- 2. Динамическое изменение частоты процессора.
- 3. Структура микропрограммы обработчика прерываний
- 4. Прошивка с оптимизацией энергопотребления.
- Заключение
Точно так же, как бензин (бензин / дизель) важен для передвижения мотоциклов, грузовиков и легковых автомобилей (да, за исключением Teslas!), Электроэнергия важна для большинства электронных приложений и, более того, для приложений на базе встроенных систем, которые обычно представляют собой батареи с ограниченным энергопотреблением), от обычных мобильных телефонов до устройств умного дома.
Ограниченный характер заряда батареи подразумевает необходимость обеспечения того, чтобы уровень энергопотребления этих устройств был разумным, чтобы стимулировать их внедрение и использование. Особенно с устройствами на базе Интернета вещей, где можно ожидать, что устройство будет работать до 8-10 лет без подзарядки без замены батареи.
Эти тенденции привели к тому, что при проектировании встраиваемых систем были учтены соображения низкого энергопотребления, и на протяжении многих лет дизайнеры, инженеры и производители разработали несколько интеллектуальных способов эффективного управления энергопотреблением, потребляемым продуктами, чтобы обеспечить их более длительный срок службы. разовая зарядка. Многие из этих методов сосредоточены на микроконтроллере, который является сердцем большинства устройств. В сегодняшней статье мы рассмотрим некоторые из этих методов и то, как их можно использовать для минимизации энергопотребления микроконтроллеров. Хотя микропроцессор потребляет меньше энергии, но его можно использовать везде, где бы он ни находился, перейдите по ссылке, чтобы узнать, чем микропроцессор отличается от микроконтроллера.
Методы энергосбережения для микроконтроллеров
1. Режимы сна
Спящие режимы (обычно называемые режимами с низким энергопотреблением), возможно, являются наиболее популярным методом снижения энергопотребления микроконтроллеров. Обычно они включают отключение определенных схем или часов, которые управляют определенными периферийными устройствами микроконтроллеров.
В зависимости от архитектуры и производителя микроконтроллеры обычно имеют разные виды спящих режимов, причем каждый режим обладает способностью отключать больше внутренних схем или периферийных устройств по сравнению с другим. Режимы сна обычно варьируются от глубокого сна или выключенного до режима ожидания и дремоты.
Некоторые из доступных режимов описаны ниже. Следует отметить, что характеристики, а также название этих режимов могут отличаться от производителя к производителю.
я. Режим ожидания / сна
Обычно это самый простой из реализуемых разработчиками режимов пониженного энергопотребления. Этот режим позволяет микроконтроллеру вернуться к полной работе с очень высокой скоростью. Поэтому это не лучший режим, если цикл питания устройства требует, чтобы оно выходило из спящего режима очень часто, так как потребляется большое количество энергии, когда микроконтроллер выходит из спящего режима. Возврат в активный режим из режима ожидания обычно происходит по прерыванию. Этот режим реализуется на микроконтроллере путем отключения дерева тактовых импульсов, которое управляет схемой ЦП, в то время как основные высокочастотные тактовые импульсы микроконтроллера продолжают работать.. При этом ЦП может возобновить работу сразу после активации триггера пробуждения. Стробирование тактовой частоты широко используется для отсечения сигналов в режимах низкого энергопотребления микроконтроллеров, и этот режим эффективно стробирует тактовые сигналы через ЦП.
II. Режим ожидания
Режим ожидания - это еще один режим с низким энергопотреблением, который легко реализовать разработчикам. Он очень похож на режим ожидания / сна, так как он также включает в себя использование стробирования тактовых импульсов ЦП, но с одним важным отличием он позволяет изменять содержимое оперативной памяти, что обычно не происходит в режиме ожидания / сна. В режиме ожидания высокоскоростные периферийные устройства, такие как DMA (прямой доступ к памяти), последовательные порты, периферийные устройства ADC и AES, продолжают работать, чтобы обеспечить их доступность сразу после выхода ЦП из спящего режима. Для некоторых MCU RAM также остается активной и может быть доступна через DMA, что позволяет сохранять и получать данные без вмешательства CPU. Потребляемая мощность в этом режиме может составлять всего 50 мкА / МГц для микроконтроллеров малой мощности.
iii. Режим глубокого сна
Режим глубокого сна, как правило, включает в себя отключение высокочастотных часов и других схем в микроконтроллере, оставляя только схему тактовой частоты, используемую для управления критическими элементами, такими как сторожевой таймер, обнаружение отключения и схемы сброса при включении питания. Другие MCU могут добавлять к нему другие элементы для повышения общей эффективности. Потребляемая мощность в этом режиме может составлять всего 1 мкА в зависимости от конкретного микроконтроллера.
iv. Режим остановки / выключения
Некоторые микроконтроллеры имеют разные варианты этого дополнительного режима. В этом режиме генераторы как высокого, так и низкого уровня обычно отключены, оставив включенными только некоторые регистры конфигурации и другие важные элементы.
Характеристики всех упомянутых выше спящих режимов отличаются от MCU к MCU, но общее практическое правило таково; чем глубже сон, тем больше периферийных устройств отключается во время сна и тем меньше потребляемая мощность, хотя обычно это также означает; тем больше энергии потребляется для восстановления системы. Таким образом, разработчик должен рассмотреть этот вариант и выбрать правильный MCU для задачи, не делая компромиссов, влияющих на спецификацию системы.
2. Динамическое изменение частоты процессора.
Это еще один широко распространенный метод эффективного снижения мощности, потребляемой микроконтроллером. Это, безусловно, самый старый метод и немного сложнее, чем режимы сна. Он включает в себя микропрограммное обеспечение, динамически управляющее тактовой частотой процессора, чередуя высокую и низкую частоту, поскольку зависимость между частотой процессора и количеством потребляемой мощности является линейной (как показано ниже).
Реализация этой техники обычно следует этому шаблону; когда система находится в состоянии ожидания, микропрограммное обеспечение устанавливает тактовую частоту на низкую скорость, позволяя устройству экономить энергию, а когда системе требуется выполнить тяжелые вычисления, тактовая частота восстанавливается.
Существуют контрпродуктивные сценарии изменения частоты процессора, которые обычно возникают из-за плохо разработанной прошивки. Такие сценарии возникают, когда тактовая частота поддерживается на низком уровне, пока система выполняет тяжелые вычисления. Низкая частота в этом сценарии означает, что системе потребуется больше времени, чем необходимо для выполнения поставленной задачи, и, таким образом, будет накапливаться такое же количество энергии, которое проектировщики пытались сэкономить. Таким образом, необходимо проявлять особую осторожность при реализации этого метода в критических по времени приложениях.
3. Структура микропрограммы обработчика прерываний
Это один из самых экстремальных методов управления питанием микроконтроллеров. Это стало возможным благодаря нескольким микроконтроллерам, таким как ядра ARM Cortex-M, которые имеют бит ожидания при выходе в регистре SCR. Этот бит дает микроконтроллеру возможность засыпать после выполнения процедуры прерывания. Хотя существует ограничение на количество приложений, которые будут бесперебойно работать таким образом, это может быть очень полезным методом для полевых датчиков и других, долгосрочных приложений, основанных на сборе данных.
Большинство других техник, на мой взгляд, являются вариациями уже упомянутых выше. Например, метод выборочной периферийной синхронизации - это, по сути, разновидность спящих режимов, в которых разработчик выбирает периферийные устройства для включения или выключения. Этот метод требует глубоких знаний о целевом микроконтроллере и может быть не очень удобен для новичков.
4. Прошивка с оптимизацией энергопотребления.
Один из лучших способов уменьшить количество энергии, потребляемой микроконтроллером, - это написать эффективную и хорошо оптимизированную прошивку. Это напрямую влияет на объем работы, выполняемой ЦП за раз, и, в свою очередь, способствует увеличению мощности, потребляемой микроконтроллером. При написании микропрограммного обеспечения следует прилагать усилия, чтобы уменьшить размер кода и количество циклов, поскольку каждая выполняемая ненужная инструкция - это часть энергии, хранящейся в батарее, которая тратится впустую. Ниже приведены некоторые общие советы на основе C для разработки оптимизированной прошивки;
- По возможности используйте класс «Static Const», чтобы предотвратить копирование массивов, структур и т. Д. Во время выполнения, которое потребляет энергию.
- Используйте указатели. Вероятно, они являются самой сложной частью языка C для понимания для начинающих, но они лучше всего подходят для эффективного доступа к структурам и объединениям.
- Избегайте Modulo!
- Где возможно, локальные переменные важнее глобальных. Локальные переменные содержатся в ЦП, а глобальные переменные хранятся в ОЗУ, ЦП быстрее получает доступ к локальным переменным.
- По возможности, беззнаковые типы данных - ваш лучший друг.
- По возможности используйте «обратный отсчет» для петель.
- Вместо битовых полей для целых чисел без знака используйте битовые маски.
Подходы к уменьшению количества энергии, потребляемой микроконтроллером, не ограничиваются упомянутыми выше программными подходами, существуют аппаратные подходы, такие как метод контроля напряжения ядра, но, чтобы сохранить длину этого сообщения в разумных пределах, мы сэкономим их на другой день.
Заключение
Реализация продукта с низким энергопотреблением начинается с выбора микроконтроллера, и это может сбивать с толку, когда вы пытаетесь просмотреть различные варианты, доступные на рынке. При сканировании таблица данных может хорошо работать для получения общей производительности микроконтроллеров, но для приложений с критическим энергопотреблением это может быть очень дорогостоящим подходом. Чтобы понять истинные характеристики мощности микроконтроллера, разработчики должны принять во внимание электрические характеристики и функции низкого энергопотребления, доступные микроконтроллеру. Разработчики должны заботиться не только о потреблении тока в каждом из режимов питания, рекламируемых в таблице данных MCU, они должны учитывать время пробуждения, источники пробуждения и периферийные устройства. которые доступны для использования в режимах низкого энергопотребления.
Важно проверить функции микроконтроллера, который вы планируете использовать, чтобы выяснить, какие варианты у вас есть для реализации с низким энергопотреблением. Микроконтроллеры были одним из самых больших бенефициаров технологического прогресса, и теперь существует несколько микроконтроллеров со сверхнизким энергопотреблением, которые гарантируют, что у вас есть ресурсы, которые помогут вам оставаться в рамках вашего бюджета на электроэнергию. Некоторые из них также предоставляют несколько программных инструментов для анализа мощности, которыми вы можете воспользоваться для эффективного проектирования. Личным фаворитом является линейка микроконтроллеров MSP430 от Texas Instrument.