
Технологии микропотребления nanoWatt и nanoWatt XLP от Microchip
- Подробности
- Категория: Microchip

Новая технология Microchip nanoWatt XLP– самые низкопотребляющие контроллеры в мире.
Введение.
Энергопотребление всегда является важной характеристикой любой электрической системы. В современных встроенных системах, от микроконтроллера требуется не только управление системой и собственное малое потребление, но и управление потреблением тока всей схемы. В данной статье рассмотрены возможности PIC-микроконтроллеров, выполненных по технологиям nanoWatt и nanoWatt XLP, по снижению энергопотребления.
Прежде чем вникать в особенности энергосберегающих режимов работы, необходимо разобраться – что влияет на потребление тока. Применительно к микроконтроллерам, важно выделить две составляющие – ток потребления в активном (динамическом) режиме и статическом режиме (режиме ожидания).
Потребление в активном режиме обусловлено переключениями цифровой логики и зависит от частоты тактирования, напряжения питания и температуры. Преимущественное влияние имеет частота тактирования.
Статическое потребление тока имеет место при полной остановке тактирования ядра и состоит из токов утечки транзисторов, потребления супервизоров и тактирования схем, обеспечивающих дальнейшую работу контроллера (сторожевой таймер, часы реального времени и т.п.). Преимущественное влияние на статическое потребление имеет напряжение питания, температура
Напряжение питания существенно влияет на энергопотребление контроллера как в активном режиме, так и в режиме ожидания. Таким образом, существенную выгоду можно получить за счет пониженного питания ядра контроллера в сравнении с остальной схемой. Некоторые PIC-контроллеры имеют независимый вход для питания внутренней логики (VDDCORE), что позволяет выиграть как в активном, так и в статичном потреблении тока.
Технологии nanoWatt и nanoWattXLP
Начиная с 2003 года, компания Microchip Technology Inc. начала выпуск контроллеров с энергосберегающей технологией nanoWatt. Основным требованием к контроллерам технологии nanoWatt было энергопотребление в режиме ожидания (Sleep) порядка нВт. Также были добавлены следующие возможности по энергосберегающию:
- Режим Idle
- Встроенный высокоскоростной тактовый генератор (INTOSC) с PLL программируемым делителем
- Сторожевой таймер (WDT) с увеличенным временем ожидания
- Сверхмалопотребляющий модуль пробуждения (ULPWU)
- Малопотребляющий Timer1 и второй осциллятор (SOSC, 32 кГц)
- Малопотребляющий программноуправляемый модуль сброса (BOR)
Сегодня Microchip расширяет энергосберегающие возможности PIC-контроллеров. Новая технология nanoWatt XLP, являющаяся расширением отлично себя зарекомендовавшей nanoWatt, включает ряд новых возможностей, таких как сверхмалопотребляющий модуль пробуждения (ULPWU), специальные малопотребляющие модуль сторожевого таймера (DSWDT) и детектор снижения напряжения (DSBOR), энергосберегающий режим «глубокого сна» Deep Sleep, а также обеспечивает меньший ток потребления в режимах, унаследованных от nanoWatt. В следующих режимах технология nanoWattXLPобеспечивает ток потребления контроллера не более:
- 100 нА - режим ожидания (Ipd)
- 800 нА - сторожевой таймер (Iwdt)
- 800 нА - часы реального времени с календарем (Irtcc)
Надо понимать, что в богатом портфолио контроллеров Microchip различные энергосберегающие режимы, специальные модули и настройки, а также токи потребления модулей контроллера варьируются от семейства к семейству, поэтому строго выделить отличия между технологиями nanoWattи nanoWatt XLP невозможно, да и не нужно - данная статья дает общее представление об энергосберегающих возможностях PIC-контроллеров.
Технологии энергосбережения nanoWattи nanoWattXLPпредоставляют разработчику различные режимы работы с гибкими возможностями по программному управлению аппаратным средствами, что позволяет минимизировать потребление тока при выполнении каждой текущей задачи. В таблице 1 приведен перечень энергосберегающих режимов PIC-контроллеров. В таблице 2 приведено сравнение по потреблению нескольких nanoWattPIC-контроллеров с конкурентами, производства других фирм.
Таблица 1.
Режим работы |
Активно тактирование |
Активная периферия |
Варианты пробуждения |
Потребляемый ток |
Типичное применение |
Deep Sleep(1) |
Timer1/SOSC* INTRC/LPRC |
RTCC DSWDT DSBOR INT0 |
RTCC DSWDT DSBOR INT0 MCLR |
< 50 нА |
Устройства с батарейным питанием, большую часть времени находящихся в режиме Sleep(3) |
Sleep |
Timer1/SOSC* INTRC/LPRC A/D RC |
RTCC WDT АЦП компараторы CVref INTx Timer1 HLVD BOR |
Все источники пробуждения (см. в документации на соотв. контроллера) |
50-100 нА |
Большинство критичных к энергопотреблению устройств |
Idle |
Timer1/SOSC INTRC/LPRC A/D RC |
Вся периферия |
Все источники пробуждения (см. в документации соотв. контроллера) |
25% тока потребления в активном режиме (Run) |
Каждый раз, когда контроллер находится в ожидании (например, прерывания) |
Doze(2) |
Все источники тактирования |
Вся периферия |
Программно или по прерыванию |
35-75% тока потребления в активном режиме (Run) |
Приложения, требующие высокоскоростную периферию и малых ресурсов ЦП |
Run |
Все источники тактирования |
Вся периферия |
- |
Согласно документации на соотв. контроллер |
Обычный режим работы |
-
только для XLPконтроллеров PIC18 и PIC24
-
только для PIC24, dsPICи PIC32
-
более подробно ознакомиться с разницей и критериями выбора между Sleep и Deep Sleep можно в разделе «Выбор между Sleep и Deep Sleep»
- * Timer1/SOSC– второй осциллятор (32 кГц)
Таблица 2.
Параметр |
контроллер |
||||||
PIC16LF72x |
PIC18F46K20 |
PIC18LF46J11 |
PIC16LF193x |
PIC18LF14K50 |
PIC24F16KA102 |
Atmel Atmega168P/328P |
|
Deep Sleep (нА) |
- |
- |
13 |
- |
- |
20 |
- |
Sleep (нА) |
20 |
100 |
54 |
60 |
24 |
25 |
100(1) |
WDT (нА) |
500 |
500 |
830 |
500 |
450 |
420 |
4200(1) |
32 кГц осциллятор RTCC (нА) |
600 |
500 |
820 |
600 |
790 |
520 |
800 |
Ток утечки портов ввода/вывода (нА) |
±5 |
±5 |
±200(2) |
±50 |
±5 |
±50 |
±1000(1,2) |
Run 1МГц (мкА) |
110 |
300 |
272 |
150 |
170 |
195 |
300 |
Минимальное напряжение питания Vdd(В) |
1,8 |
1,8 |
2 |
1,8 |
1,8 |
1,8 |
1,8 |
- указаны типичные значения при напряжении питания Vdd=1.8..2 В из описаний производителя на контроллер
- данные для Vdd=1.8В недоступны, указано для 3В
- типичное значение недоступно, указано максимальное согласно документации на контроллер
Режим Deep Sleep
Режим Deep Sleep – самый экономичный режим работы контроллера, когда все модули, которые могут остаться без питания – ядро контроллера, встроенный стабилизатор напряжения, большая часть периферии, ОЗУ – переводятся в энергосберегающий режим. Соответственно, остается только несколько источников пробуждения контроллера:
- Схема сброса по включению питания POR
- Сброс по MCLR
- Будильник часов реального времени (RTCC)
- Внешнее прерывание
- Сторожевой таймер «WDT Deep Sleep»
В связи с тем, что тактирование ядра приостановлено – выход из режима DeepSleepвозможен только со сбросом контроллера. Программный счетчик и регистры специального назначения (SFR) также сбрасываются, и выполнение программы начинается с вектора сброса. При этом состояния портов ввода/вывода, Timer1/SOSCи RTCC сохраняются. Дополнительно, гибкая конфигурация Deep Sleep позволяет сохранить значения в некоторой области RAM, что позволяет программе правильно восстановиться после сброса.
После пробуждения программа должна подтвердить сброс, перенастроить периферию и регистры портов ввода/вывода, и затем продолжить выполнение кода. Общий алгоритм приведен на блок-схеме, рис. 1. Для более подробного описания необходимо документации соответствующего контроллера.
Рис. 1.
Очень важно иметь четкое представление о том, какой именно энергосберегающий режим необходимо использовать на каждом этапе работы контроллера. Deep Sleep – режим, актуальный для приложений, требующих длительного срока работы от батарейного питания. Обычно приложения, требующие использования DeepSleep, характеризуются следующими особенностями:
- Длительное время пребывания в режиме ожидания (обычно от 1 секунды)
- Не требуется работы периферии в режиме ожидания
- Требуется точная привязка к времени при минимальном потреблении тока
- Широкий диапазон рабочих температур
Режим Sleep
Режим Sleep имеется во всех PIC-контроллерах, выполненных по технологии nanoWatt. В режиме Sleep отключается тактирование ядра и большей части периферии. Потребление тока складывается из питания ОЗУ, SFR и программного счетчика.
Источники пробуждения различны для различных семейств, однако все PIC-контроллеры имеют следующие: сторожевой таймер WDT, 32кГц таймер/осциллятор (для большинства контроллеров – Timer1) и внешние источники прерываний. Контроллеры PIC18, PIC24 и PIC32 имеют большое число периферийных модулей, обеспечивающих возможность пробуждения контроллера, такие как АЦП, компараторы, модули последовательных коммуникационных интерфейсов.
Режим Sleep – наиболее востребованный, широкоприменимый и гибко настраиваемый энергосберегающий режим PIC-контроллеров, который характеризуется предельно быстрым входом и выходом из режима ожидания. Как следствие, данный режим предназначен для устройств, которые требуют частого перехода в статический режим на непродолжительные промежутки времени и быстрого пробуждения. Обычно приложения, предполагающие использование Sleep, характеризуются следующими особенностями:
- Время пребывания в статическом режиме невелико (обычно не более секунды)
- Требуется пробуждения от периферии
- Требуется работа АЦП или компараторов в энергосберегающем режиме.
Выбор между Sleep и Deep Sleep
Чтобы выбрать оптимальный режим необходимо рассчитать характерное время пребывания контроллера в режиме ожидания (Tbe). На рис. 2 приведены формулы для расчета Tbe:
Рис. 2
Сначала рассчитывается потребление энергии в режимах Sleep (Qslp) и Deep Sleep (Qds) – если быть точнее, то рассчитывается протекающий заряд, т.к. напряжение постоянно и одинаково для обоих режимов. В режиме Sleepэнергопотребление определяется произведением тока потребления(Ipdslp) и времени пребывания в данном режиме (Tpd) (формула [1]).
В режиме DeepSleepнеобходимо учесть 3 составляющих (формула [2]):
- потребление в режиме ожидания (ток потребления(Ipdds) на время пребывания в режиме DeepSleep(Tpd));
- потребление в момент пробуждения по сбросу POR (с момента появления события, вызвавшего пробуждение, до начала выполнения первой инструкции). Обычно Tpor - значение из документации на контроллер, Ipor– замеряется экспериментально и зависит от условий работы контроллера. Также здесь учитывается время и ток, необходимые на зарядку конденсатора Vcap(если он разряжается в режиме DeepSleep) для контроллеров со встроенным стабилизатором напряжения;
- потребление контроллера (Idd) на время исполнения кода инициализации (Tinit) до входа в основной цикл программы. Потребление контроллера в активном режиме указано в документации на контроллер, а время необходимое для инициализации удобно замерять при помощи секундомера Stopwatchв единой среде разработки MPLABIDE.
Характерное время пребывания в режиме ожидания (Tbe) соответствует равенству Qslpи Qds. Режим DeepSleepпредпочтительнее в случаях, когда ожидаемое время пребывания в энергосберегающем режиме превышает Tbe, Sleep– в обратном случае.
Режимы Idle и Doze
Режимы Idle и Dozeзанимают промежуточное положение между энергосберегающими режимами и основным (Run).
В режиме Idle тактирование ядра приостановлено, но большая часть, а то и вся периферия сохраняет свою функциональность и может продолжать работать (подробнее в документации на соответствующий контроллер). В контроллерах PIC24, PIC32 и dsPIC имеется возможность индивидуальной настройки периферийных модулей, задействованных в режиме Idle.
В режиме Doze (имеется только в PIC24, PIC32 и dsPIC) периферия может работать на полной скорости, а тактирование ядра возможно на пониженной частоте, полученной делением системной на программно заданный коэффициент.
Выбор между Idle и Doze
Режимы Idle и Doze позволяют сократить потребление тока в тех случаях, когда вход в режим ожидания невозможен, например:
- необходимы длинные передачи посредством DMA;
- требуется прием или передача данных по последовательным протоколам;
- требуется работа высокоскоростного АЦП;
- ожидание по синхронному таймеру;
- сбор данных от внешних датчиков;
- требуется работа модулей Захвата/Сравнения/ШИМ.
Каждый раз, когда контроллер находится в ожидании некоторого события (прерывания от периферии), обычно имеет смысл перейти в режим Idle или Doze. Правильный выбор оптимального энергосберегающего режима позволяет существенно снизить потребляемый конечным устройством ток.
Изменение частоты тактирования
Возможность изменения частоты тактирования – очень важный инструмент, грамотное использование которого позволяет существенно снизить энергопотребление в активном режиме. В то время, как режимы Idle и Doze позволяют снизить скорость работы ядра – периферия тактируется максимальной частотой, потребляя существенный ток. Поэтому целесообразно адаптивно выбирать частоту тактирования периферии в каждом конкретном случае.
Микроконтроллеры PIC позволяют гибко управлять тактированием ядра и периферийных модулей. Зачастую правильное управление тактированием позволяет получить потребление тока в активном режиме ниже, чем в режимах Idle и Doze!
Заключение
Новые технологии nanoWatt и nanoWattXLP предоставляют разработчикам целый ряд гибких возможностей по управлению энергопотреблением, что позволяет существенно снизить потребление тока. Благодаря технологии nanoWatt XLP, компании Microchipудалось создать PIC-контроллеры с самым низким потреблением тока в режиме Sleep. Последняя и более подробная информация о энергосберегающих возможностях PIC-контроллеров доступна на сайте www.microchip.com/lowpower.