Wake-on-Radio (WOR)
Приёмник CC1101 в режиме приёма потребляет около 15 мА — для батарейного датчика это слишком много, чтобы слушать эфир постоянно. Но датчику, который ждёт команду, не обязательно слушать эфир всё время: достаточно просыпаться на миллисекунды раз в секунду. Этим без участия микроконтроллера занимается Wake-on-Radio.
Обновлено Редакция GAW
Wake-on-Radio (WOR) — режим радиочипа, в котором он большую часть времени спит, а встроенный таймер периодически включает приёмник на короткое время. Если за это время обнаружен пакет, чип принимает его и сообщает микроконтроллеру; если эфир пуст — снова засыпает. Всё это происходит без участия микроконтроллера, который тоже может находиться в режиме сна.
Как устроен WOR в CC1101
По команде SWOR CC1101 уходит в SLEEP. Таймер WOR тактируется маломощным RC-генератором и формирует два события: Event 0 включает регулятор и кварцевый генератор, Event 1 через заданное время переводит чип в приём. После заданного времени в RX чип снова засыпает, если пакет не обнаружен (разд. 19.5). Период пробуждения:
Частота RC-генератора — fXOSC/750, то есть 34,7–36 кГц в зависимости от кварца. Значение EVENT0 по умолчанию (0x876B) даёт период 1,0 с при кварце 26 МГц (регистр WOREVT0). Для WOR поле WOR_RES ставят в 0 или 1; время сна должно быть больше 11,08 мс при кварце 26 МГц (разд. 19.5).
Сколько это экономит
| Режим CC1101 | Ток |
|---|---|
| SLEEP | 0,2 мкА |
| SLEEP с работающим таймером WOR | 0,5 мкА |
| Опрос раз в секунду, эфир пуст | 8,8 мкА в среднем |
| Опрос раз в 15 с, эфир пуст | 1,4 мкА в среднем |
| Постоянный приём | около 15 мА |
Данные — разд. 4.1 даташита (250 кБод, фильтр 542 кГц). Если в канале есть сигнал выше порога, но пакета нет, средний ток растёт до 35–39 мкА: приёмник остаётся включённым до тайм-аута. Проверка занятости канала по уровню — тот же механизм, что и при оценке свободного канала.
Условие на стороне передатчика
Приёмник слушает эфир лишь короткими окнами, поэтому передатчик должен «звать» его дольше периода сна — длинной преамбулой или серией повторов пакета. Semtech упоминает тот же приём для LoRa: длинная преамбула позволяет снизить долю времени, когда приёмник включён (SX1276, разд. 4.1.1.6). Цена — время в эфире и ток передатчика, поэтому период WOR выбирают по допустимой задержке команды. Срок службы батареи при таком режиме считает калькулятор времени работы от батареи.
Частые вопросы
Какой средний ток даёт Wake-on-Radio?
По даташиту CC1101 при опросе эфира раз в секунду — 8,8 мкА в среднем, если в канале нет сигнала выше порога, и 35,3 мкА, если сигнал есть, но пакета нет; при опросе раз в 15 с — 1,4 и 39,3 мкА (разд. 4.1, 250 кБод, фильтр 542 кГц). Для сравнения, постоянный приём — около 15 мА, то есть в тысячи раз больше.
Какой длины должна быть преамбула у передатчика?
Больше периода пробуждения приёмника, чтобы он при любом моменте пробуждения застал преамбулу и остался принимать пакет (наш вывод из устройства WOR). При опросе раз в секунду преамбула должна длиться больше секунды — а это время в эфире и ток передатчика. Поэтому период WOR выбирают компромиссом между задержкой команды и расходом обеих сторон.
Почему после пробуждения пропали данные в FIFO?
CC1101 теряет содержимое FIFO в состоянии SLEEP (разд. 19.5). Принятый пакет нужно прочитать до того, как чип снова уснёт по команде SWOR, а данные для передачи — записывать уже после пробуждения.
Источники
- Texas Instruments. CC1101 Low-Power Sub-1 GHz RF Transceiver, SWRS061I (2013) — разд. 4.1 (с. 9): SLEEP — 0,2 мкА, SLEEP с WOR (работает RC-генератор) — 0,5 мкА; автоматический опрос эфира раз в секунду, фильтр 542 кГц, 250 кБод — в среднем 8,8 мкА без сигнала выше порога carrier sense и 35,3 мкА с сигналом при тайм-ауте 1,96 мс; опрос раз в 15 с — 1,4 и 39,3 мкА; приём — около 15 мА в зависимости от режима; разд. 19.5 (с. 53): по команде SWOR чип засыпает, таймер переводит его в IDLE и RX, после заданного времени в RX — снова в SLEEP, если пакет не принят; tEvent0 = 750 / fXOSC · EVENT0 · 2^(5 · WOR_RES); tSLEEP должно быть больше 11,08 мс при кварце 26 МГц и 10,67 мс при 27 МГц; FIFO теряет содержимое в SLEEP; разд. 19.5.1: частота RC-генератора fXOSC / 750, калибровка RC_CAL; регистры WOREVT0 и WORCTRL (с. 88): EVENT0 по умолчанию 0x876B даёт 1,0 с при 26 МГц, RC 34,7–36 кГц, WOR_RES при WOR — 0 или 1
- Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; разд. 4.1.1.6 (с. 29): длинную преамбулу LoRa используют, чтобы уменьшить долю времени, когда приёмник включён; разд. 7.3.1 (с. 117): прерывание по обнаружению преамбулы в режиме прослушивания (Listen mode, Wake on Preamble)
Нашли ошибку?
Смотрите также
- CC1101Трансивер ниже 1 ГГц по SPI: выводы, питание, токи, частота канала, FIFO
- Преамбула пакетаНачальная последовательность 1010… для синхронизации приёмника
- Режимы снаSleep mode: Idle, Power-down, пробуждение и ток
- Оценка занятости канала (CCA)Проверка, свободен ли канал, перед передачей: по RSSI или по приёму пакета
- Время работы от батареимА·ч, средний ток, сон МК, Вт·ч
- Радиомодули 433 и 868 МГцOOK, ASK, FSK; супергетеродин и сверхрегенератор; CC1101, SX1276/SX1278; выбор модуля