Power management - CC2530

Управление питанием для CC2530

Document Number: SWRA248 Version 1.2

Скачать оригинал (eng)

Документ, описывающий флаги компиляции и интерфейс управления питанием для платформы CC253x

 

 

 

 

 

 

 

 

 

Содержание

1. ЦЕЛЬ ...............................................  1
2. ОПРЕДЕЛЕНИЯ ............................................... 1
3. ЧТО ТАКОЕ УПРАВЛЕНИЕ ПИТАНИЕМ? .................................................. 1
4. КАК РАБОТАЕТ РЕЖИМ Z-STACK? .................................................. 1
5. ОСОБЕННОСТИ ТАЙМЕРЕ СНА ............................................. 4
6. ОСОБЕННОСТИ ПРИМЕНЕНИЯ ........................................ 4
7. ОСОБЕННОСТИ ОБОРУДОВАНИЯ ............................................. 5
 

1. Цель

В этом документе описываются концепции управления питанием для Texas Instruments CC2530 для использования приложением, основанным на стеке протоколов Z-Stack ™ ZigBee компании Texas Instruments. Устройства управления питанием обычно используются устройствами с питанием от батареи для продления срока службы батареи за счет использования различных режимов сна в периоды бездействия.

2. Определения

В этом документе используются следующие термины:
MAC - программное обеспечение Media Access Control, которое реализует функции связи IEEE 802.15.4.
MCU - Micro Controller Unit - процессор 8051, встроенный в SoC CC2530 на плате CC2530EB.
OSAL - Operating System Abstraction Layer - независимый от платформы обработчик задач, поставляемый с Z-Stack.
Sleep - режим работы MCU, в котором определенные функции отключены для снижения энергопотребления. CC2530 предоставляет три различных режима ожидания, два из которых используются Z-Stack.
End-Device - Конечное устройство - устройство ZigBee, которое подключается к сети без возможностей маршрутизации и, как правило, отключает приемник в режиме ожидания. Для этого требуется, чтобы его родитель содержал сообщения до тех пор, пока конечное устройство не проверит его сообщения.

3. Что такое управление питанием?

Управление питанием используется конечными устройствами с батарейным питанием для минимизации потребления энергии между короткими периодами радиосвязи. Обычно конечное устройство отключает потребляющие энергию периферийные устройства и переходит в режим ожидания в течение периодов простоя. Z-Stack обеспечивает два режима ожидания, обозначенные как ТАЙМЕРНЫЙ TIMER sleep и ГЛУБОКИЙ DEEP sleep. Таймер сна используется, когда система должна проснуться, чтобы выполнить действие, связанное с запланированной задержкой. Глубокий сон используется, когда в будущем не запланировано никаких действий, требующих внешнего раздражителя (такого как нажатие кнопки), чтобы разбудить устройство. Режим ожидания TIMER обычно снижает энергопотребление до нескольких миллиампер, а режим DEEP - до нескольких микроампер. Примеры спящих конечных устройств включают датчики, которые периодически просыпаются, чтобы сообщить о своих показаниях, и устройства дистанционного управления, которые просыпаются, чтобы отправить сообщение, когда пользователь нажимает кнопку. Общей характеристикой этих типов устройств является то, что они проводят большую часть своего времени в режиме ожидания, сводя к минимуму потребление энергии.

4. Как Z-Stack управляет спящими режимами?

Управление питанием используется конечными устройствами с питанием от батареи для минимизации энергопотребления между короткими периодами запланированной активности (TIMER sleep) или длительными периодами бездействия (DEEP sleep). Системная активность отслеживается в главном цикле управления OSAL после того, как каждая задача завершает свою обработку. Если ни у одной задачи нет запланированного события и включена возможность управления питанием, система решит, стоит ли спать. Для перехода устройства в спящий режим необходимо выполнить все следующие условия:
  • Спящий режим включен с помощью опции компиляции POWER_SAVING
  • Дескриптор узла ZDO указывает «RX выключен во время простоя». Это делается путем установки RFD_RCVC_ALWAYS_ON в FALSE в f8wConfig.cfg.
  • Все задачи Z-Stack «согласны», чтобы обеспечить энергосбережение
  • Задачи Z-Stack не имеют запланированной активности
  • MAC не имеет запланированной активности

Проекты конечных устройств End-Device в пакете Z-Stack по умолчанию настраиваются без управления питанием. Чтобы включить эту функцию, опция компиляции POWER_SAVING должна быть указана при сборке проекта. Как показано ниже, этот параметр помещается в поле «Defined symbols» на вкладке «Preprocessor» параметров компилятора C / C ++:

 

Чтобы снизить энергопотребление до минимальных уровней, конечное устройство должно отключить как можно больше электронных схем, прежде чем перейти в режим ожидания. Это включает в себя периферийные устройства, радиоприемник и передатчик, а также значительную часть самого MCU. Чтобы избежать потери сообщений во время сна, родительский компьютер конечного устройства должен хранить свои сообщения до тех пор, пока конечное устройство не выполнит их опрос. Родительское устройство «знает», что конечное устройство будет запрашивать сообщения, когда функции в запросе ассоциации конечного устройства отключили CAPINFO_RCVR_ON_IDLE. В проектах Z-Stack настройки по умолчанию для возможностей устройства указываются в структуре ZDO_Config_Node_Descriptor, расположенной в файле ZDConfig.c. Конечное устройство по умолчанию задает только CAPINFO_DEVICETYPE_RFD, указывая на то, что оно работает от батареи и выключит свой приемник в режиме ожидания:

 

Решение о попытке сбережения энергии принимается в конце основного цикла OSAL. Если были проверены все задачи Z-Stack, и ни одна из них не имела какой-либо обработки, опция компиляции POWER_SAVING определяет, будет ли вызвана функция osal_pwrmgr_powerconserve ():

 

На этом этапе еще две проверки выполняются перед попыткой войти в спящий режим. Во-первых, проверяется, что переменная pwrmgr_device установлена ​​как аккумуляторное устройство. Этот параметр устанавливается после подключения устройства к сети - примеры см. В ZDApp.c. Во-вторых, проверяется переменная pwrmgr_task_state, чтобы увидеть, что ни одна задача не «удержала» энергосбережение. Этот механизм позволяет каждой задаче Z-Stack отключать спящий режим во время критических операций. Когда оба эти условия выполнены, желаемое время ожидания определяется следующим временем истечения таймеров OSAL. Если время следующего истечения больше нуля и меньше MIN_SLEEP_TIME, выбирается режим TIMER_SLEEP. В этом режиме системный таймер настраивается для обеспечения прерывания «пробуждения» для события таймера, которое должно истечь первым. MIN_SLEEP_TIME, определенный в hal_sleep.c, используется для предотвращения «короткого перебоя» сна. Режим DEEP_SLEEP выбирается, когда нет запланированных событий или таймеров Z-Stack; поэтому следующий срок действия равен нулю, что обеспечивает максимальную экономию энергии:

 

Макрос OSAL_SET_CPU_INTO_SLEEP вызывается для запуска процесса ожидания. Для CC2530 этот макрос вызывает функцию halSleep (), которая выполняет последовательность выключения MAC, выключения периферийных устройств, перехода в режим ожидания MCU, пробуждения MCU после ожидания, включения периферийных устройств и, наконец, перезапуска MAC. Поскольку цикл OSAL Z-Stack выполняется независимо от планировщика MAC, Z-Stack не знает состояние обработки MAC. Вызов MAC_PwrOffReq () запросит отключение MAC. Следует отметить, что MAC не будет отключен для режима сна, когда приемник включен в режиме ожидания, что препятствует переходу устройства в режим ожидания.
На CC2530 режим ожидания DEEP завершается только внешним прерыванием или сбросом MCU. Таким образом, на SmartRF05EB двумя GPIO, которые будут вызывать это внешнее прерывание, являются нажатие джойстика или S1. Этот режим будет использоваться устройствами типа пульта дистанционного управления, которые спят до внешней стимуляции, например, при нажатии кнопки. Режим ожидания ТАЙМЕРА прерывается любым событием прерывания, включая внешние события, а также события таймера. Если внешнее прерывание вызывает микроконтроллер, находясь в режиме ожидания ТАЙМЕРА (таймер не истек), система синхронизации Z-Stack корректирует истекшую долю запланированной задержки времени пробуждения.

5. Особенности таймера сна

Режим ожидания ТАЙМЕРА на CC2530 реализован в 24-битном аппаратном таймере (SLEEP_TIMER), управляемом источником кварцевых часов 32,768 кГц. Диспетчер питания использует таймер отключения, чтобы отслеживать истекшее время и активировать MCU после истечения таймера. Таймер отключения имеет 24-битный счетчик и 24-битный компаратор. Таймер отключения CC2530 способен отслеживать сетевое время во время сна до 512 секунд (224/32768). Поэтому самое длительное время сна составляет 510 секунд (округлено). OSAL предоставляет 32-битные таймеры событий, основанные на тиковом таймере 1 мс, позволяя событиям таймера продолжительностью до 4294967 секунд (232/1000). Модуль ожидания автоматически обрабатывает время ожидания OSAL, превышающее максимальное время ожидания CC2530.

Значение сравнения SLEEP_TIMER устанавливается следующим уравнением, где тайм-аут - это следующее истечение таймера OSAL / MAC в единицах 320 мксек, а ticks - текущий счетчик SLEEP_TIMER:

ticks += (timeout * 671) / 64

Соотношение тиков 32 кГц и 320 ticks использования составляет 32768/3125 = 10,48576. Это почти 671/64 = 10,484375. Когда SLEEP_TIMER считает до значения сравнения, генерируется прерывание и пробуждает MCU. После пробуждения прошедшее время в миллисекундах рассчитывается в виде ticks*1000/32768 или:

ticks * 125 / 4096

6. Особенности применения

Конечные устройства в примерах приложений Z-Stack изначально настраиваются с отключенным управлением питанием и включенным автоматическим опросом сообщений. Поддерживаются три различных варианта опроса, каждый из которых контролируется параметром задержки. Когда управление питанием включено (опция компиляции POWER_SAVING), наряду с любым из вариантов опроса, режимы сна будут затронуты. В частности, задержки по времени, запланированные для опроса, исключают спящий режим DEEP, что ограничивает сохранение энергии. Три варианта опроса с задержкой включают в себя:
  • Опрос запроса данных - периодически отправляет запрос данных на родительское устройство для опроса сообщений в очереди. Временной интервал между сообщениями может быть изменен путем сохранения нужного времени в zgPollRate или установлен немедленно путем вызова функции NLME_SetPollRate (). Вызов этой функции начнет опрос, если он был ранее отключен. Вызов с интервалом в 1 опрашивает сразу, один раз.
  • Опрос данных в очереди - опрашивает родительское устройство на наличие сообщений в очереди после получения указания данных. Задержку можно изменить, вызвав функцию NLME_SetQueuedPollRate () или сохранив ее в zgQueuedPollRate. Эта функция позволяет быстро «выгружать» сообщения из очереди, независимо от скорости опроса запросов данных.
  • Опрос данных ответа - опрашивает родительское устройство на наличие сообщений ответа после получения подтверждения данных. Время задержки можно изменить, вызвав функцию NLME_SetResponseRate () или сохранив ее непосредственно в zgResponsePollRate. Эта функция обеспечивает быструю «выгрузку» ответных сообщений, таких как APS Acknowledgements, независимо от скорости опроса запросов данных.
Настройки по умолчанию для этих скоростей опроса определены и инициализированы в исходном файле nwk_globals.c, указывая, что конечное устройство будет автоматически опрашивать сообщения. Если POWER_SAVING включен с этими значениями опроса по умолчанию, энергосбережение будет ограничено режимом ТАЙМЕРА. Чтобы минимизировать энергопотребление путем создания спящего устройства DEEP, следует отключить повторяющиеся опросы, установив zgPollRate в ноль. Различные стратегии опроса могут быть достигнуты, устанавливая значения этих трех частот опроса соответственно. Например, для устройства, которое никогда не нуждается в получении сообщений после его подключения к сети, следует установить все три скорости опроса на ноль. Если используется подтверждение APS, опрос должен быть включен после каждой передачи сообщения, по крайней мере, до получения ACK. В некоторых системах может оказаться полезным варьировать частоту опроса в зависимости от конкретной активности приложения.
Другие опросы активируются опросом ключей. Опрос по умолчанию включен с частотой 100 миллисекунд. Чтобы отключить опрос ключей, определите опцию компиляции ISR_KEYINTERRUPT.
 

7. Особенности оборудования

Неиспользуемые выводы ввода / вывода должны иметь определенный уровень и не должны оставаться плавающими. Один из способов сделать это - оставить контакт неподключенным и настроить его как вход ввода / вывода общего назначения с подтягивающим резистором. В качестве альтернативы, вывод может быть сконфигурирован как выход ввода / вывода общего назначения. В обоих случаях контакт не должен быть подключен напрямую к VDD или GND во избежание чрезмерного энергопотребления.
Если неиспользуемые выводы ввода / вывода остаются плавающими в CC2530, флаг прерывания не может быть сброшен программным обеспечением, и может произойти постоянное прерывание от неиспользуемого вывода.
Энергопотребление комбинированной платы CC2530EM + SmartRF05 во время циклов ожидания зависит от режимов ожидания SoC и различных внешних компонентов, расположенных на плате. Чтобы измерить энергопотребление, снимите перемычку «Power source» (нижний левый угол на рисунке ниже). Подключите амперметр между контактами 2 и 3, если используется внешнее питание; подключите амперметр между контактами 1 и 2, если используется аккумулятор. Измерением является общее потребление тока периферийными устройствами CC2530 SoC и IO. Переключатели P13 «V_IO», P10 «P4 IO», P1 «P1 USB» и «RS232 Enable» позволяют включать / отключать отдельные периферийные и IO выводы. Обратитесь к схеме SmartRF05 для деталей.

 

Ваша оценка: None Средняя: 7.6 (15 votes)