Power management - CC2530
Управление питанием для CC2530
Document Number: SWRA248 Version 1.2
Скачать оригинал (eng)
Документ, описывающий флаги компиляции и интерфейс управления питанием для платформы CC253x
Содержание
1. Цель
2. Определения
3. Что такое управление питанием?
4. Как Z-Stack управляет спящими режимами?
- Спящий режим включен с помощью опции компиляции 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; поэтому следующий срок действия равен нулю, что обеспечивает максимальную экономию энергии:


