Технологии микропотребления nanoWatt и nanoWatt XLP от 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

    Все источники тактирования

    Вся периферия

    -

    Согласно документации на соотв. контроллер

    Обычный режим работы

    1. только для XLPконтроллеров PIC18 и PIC24
    2. только для PIC24, dsPICи PIC32
    3. более подробно ознакомиться с разницей и критериями выбора между 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 В из описаний производителя на контроллер
    1. данные для Vdd=1.8В недоступны, указано для 3В
    2. типичное значение недоступно, указано максимальное согласно документации на контроллер

    Режим 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.