Преамбула (preamble)
Приёмник не знает заранее, когда придёт пакет, на какой он точно частоте и с какой амплитудой. Первые биты уходят на то, чтобы всё это выяснить, — поэтому каждый пакет начинается с преамбулы, известной последовательности без полезных данных. Разбираем, какой она бывает у популярных радиочипов и когда её удлиняют.
Обновлено Редакция GAW
Преамбула (preamble) — известная последовательность в начале пакета, обычно чередование единиц и нулей (1010…), которую передатчик отправляет до синхрослова и данных. Пока она идёт, приёмник устанавливает усиление, подстраивает частоту и восстанавливает тактовую частоту бит. Полезной информации в ней нет — это плата за то, чтобы данные были приняты без ошибок.
Какая преамбула у популярных чипов
| Чип | Преамбула | Источник |
|---|---|---|
| CC1101 | 10101010…, 2–24 байта, по умолчанию 4 | разд. 15.2, регистр MDMCFG1 |
| nRF24L01+ | 1 байт, 01010101 или 10101010 | разд. 7.3.1 |
| SX1276, LoRa | 6–65535 символов + 4, по умолчанию 12 | разд. 4.1.1.6 |
У nRF24L01+ вариант выбирается автоматически по первому биту адреса, чтобы на стыке преамбулы и адреса не было двух одинаковых бит подряд (разд. 7.3.1). В CC1101 модулятор, начав передачу, шлёт преамбулу, пока в TX FIFO не появятся данные, — поэтому реальная длина может быть больше заданной (разд. 15.2). Длительность преамбулы в CC1101 при 4 байтах и 38,4 кБод — 32 бита / 38 400 бит/с ≈ 0,83 мс (наш расчёт).
Качество преамбулы и ложные срабатывания
В шуме приёмник может «увидеть» синхрослово там, где его нет. CC1101 защищается от этого порогом качества преамбулы PQT: внутренний счётчик растёт на 1 с каждым битом, отличным от предыдущего, и уменьшается на 8 при повторе бита; синхрослово принимается, только если счётчик превысил 4 · PQT (разд. 17.2). Настоящая преамбула 1010… быстро набирает счёт, а случайный шум — нет.
Длинная преамбула для спящих приёмников
Semtech отмечает, что преамбулу LoRa можно удлинить, чтобы снизить долю времени, которую приёмник проводит во включённом состоянии (SX1276, разд. 4.1.1.6). Принцип: узел спит и периодически включает приём на короткое время; если преамбула длиннее периода сна, приёмник обязательно на неё попадёт. Так работает Wake-on-Radio у CC1101. При этом длину преамбулы на приёмнике SX1276 задают такой же, как на передатчике, а если она неизвестна — максимальной (разд. 4.1.1.6). Длинная преамбула увеличивает время в эфире, поэтому её выбирают вместе с периодом опроса. Подробнее о модулях на этих чипах — в статье «Радиомодули 433 и 868 МГц».
Частые вопросы
Какой длины делать преамбулу?
Обычно — как рекомендует производитель чипа. TI для CC1101 советует 4 байта преамбулы и 4 байта синхрослова, а при 500 кБод — 8 байт преамбулы (разд. 15). Для LoRa SX1276 по умолчанию 12 символов, и Semtech пишет, что минимальной длины хватает для любой связи (разд. 4.1.1.6). Удлиняют преамбулу, когда приёмник спит и просыпается периодически.
Зачем удлинять преамбулу?
Чтобы спящий приёмник успел её застать. Если узел просыпается слушать эфир раз в 100 мс, преамбула передатчика должна длиться дольше этого интервала — тогда при любом моменте пробуждения он услышит её и останется принимать пакет (наш вывод из описания SX1276, разд. 4.1.1.6, и режима Wake-on-Radio CC1101). Цена — больше времени в эфире у передатчика.
Почему преамбула — именно 1010…?
Чередование даёт переход на каждом бите. По нему приёмник подстраивает усиление, частоту и тактовую синхронизацию; Nordic прямо пишет, что преамбула нужна, чтобы переходов хватило для стабилизации приёмника (nRF24L01+, разд. 7.3.1). Длинная серия одинаковых бит этого не даёт.
Источники
- Texas Instruments. CC1101 Low-Power Sub-1 GHz RF Transceiver, SWRS061I (2013) — разд. 15 (с. 37): рекомендуется преамбула 4 байта и синхрослово 4 байта, при 500 кБод — преамбула 8 байт; разд. 15.2 (с. 38): преамбула — чередование 10101010…, минимальная длина задаётся MDMCFG1.NUM_PREAMBLE, при пустом TX FIFO модулятор продолжает слать преамбулу; разд. 17.2 (с. 44): PQT — счётчик +1 при смене бита и −8 при повторе, порог 4 · PQT разрешает обнаружение синхрослова; регистр MDMCFG1 (с. 78): NUM_PREAMBLE — 2, 3, 4, 6, 8, 12, 16 или 24 байта, по умолчанию 4
- Nordic Semiconductor. nRF24L01+ Product Specification v1.0 (September 2008) — архивная копия официального файла; разд. 7.3.1 (с. 28): преамбула 1 байт, 01010101 или 10101010 — выбирается по первому биту адреса, чтобы было достаточно переходов для стабилизации приёмника
- Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; разд. 4.1.1.6 (с. 29): LoRa — преамбула синхронизирует приёмник, по умолчанию 12 символов, регистр PreambleLength от 6 до 65535, итог 6 + 4 … 65535 + 4 символа; длинная преамбула позволяет снизить долю времени приёма; длину на приёмнике задают как на передатчике, при неизвестной — максимальной; разд. 4.2.3.6 (с. 53): детектор преамбулы FSK, рекомендуемый размер 2 байта
Нашли ошибку?
Смотрите также
- Синхрослово (sync word)Кодовое слово после преамбулы: граница байтов и фильтр «своих» пакетов
- CC1101Трансивер ниже 1 ГГц по SPI: выводы, питание, токи, частота канала, FIFO
- nRF24L01+Радио 2,4 ГГц по SPI: питание, уровни, токи, каналы, ShockBurst, тайминги
- SX1276, SX1278LoRa-трансиверы: версии, выводы, PA_BOOST и +20 дБм, токи, сброс, SPI, DIO
- Радиомодули 433 и 868 МГцOOK, ASK, FSK; супергетеродин и сверхрегенератор; CC1101, SX1276/SX1278; выбор модуля
- Enhanced ShockBurstПакетный протокол nRF24L01+ с автоподтверждением и повторами