Перейти к содержанию

Синхрослово (sync word)

Модули на одной частоте и с одной скоростью почему-то не слышат друг друга — а другие модули «ловят» чужие пакеты. Обе ситуации обычно объясняются синхрословом: кодовой меткой, которая отмечает начало данных и одновременно работает как номер сети.

Обновлено Редакция GAW

Синхрослово (sync word) — заранее известная обеим сторонам последовательность бит, которую передатчик отправляет сразу после преамбулы. Приёмник непрерывно сравнивает поток бит с этим образцом; совпадение означает, что начался пакет, и задаёт границы байтов. Второе назначение — фильтр: пакеты с другим синхрословом приёмник отбрасывает, поэтому синхрослово часто служит номером сети.

Синхрослово в популярных чипах

ЧипДлинаПо умолчаниюИсточник
CC110116 бит, повтор до 32 бит0xD391разд. 14.3, 15.2; SYNC1/SYNC0
SX1276, FSK1–8 байтзадаёт пользовательразд. 4.2.10.1
SX1276, LoRa1 байт0x12; 0x34 — для LoRaWANрегистр RegSyncWord
nRF24L01+роль играет адрес 3–5 байт—разд. 7.3.2

В CC1101 порог совпадения настраивается: 15 из 16, 16 из 16 или 30 из 32 бит; обнаружение можно дополнительно связать с качеством преамбулы и превышением уровня несущей (разд. 14.3, регистр MDMCFG2). Однобайтовое синхрослово CC1101 эмулирует, если записать в SYNC1 образец преамбулы (разд. 15.2).

У nRF24L01+ отдельного синхрослова нет: после однобайтовой преамбулы идёт адрес, и по нему приёмник распознаёт свой пакет. Это же поле разделяет каналы приёма (pipe) одного приёмника.

Ложные срабатывания

Чем короче синхрослово, тем чаще шум случайно совпадает с ним. Поэтому TI рекомендует 4 байта синхрослова (разд. 15), а Nordic предупреждает, что адреса с одной сменой уровня, например 000FFFFFFF, или похожие на продолжение преамбулы обнаруживаются в шуме и повышают долю ошибочных пакетов (разд. 7.3.2). Semtech запрещает байты 0x00 в синхрослове FSK (разд. 4.2.10.1).

Синхрослово передаётся как есть: в CC1101 обеление данных не затрагивает преамбулу и синхрослово (разд. 15.1), в SX1276 обеление и манчестерский код применяются только к данным и CRC (разд. 4.2.13.7). Для LoRa синхрослово — одно из условий совместимости вместе с частотой, SF и полосой; подробнее о параметрах — в статье «LoRa».

Частые вопросы

Почему мои LoRa-модули не принимают пакеты друг друга?

Одна из частых причин — разное синхрослово. В SX1276 оно задаётся регистром RegSyncWord (0x39), по умолчанию 0x12, а значение 0x34 Semtech резервирует для сетей LoRaWAN (табл. регистров, с. 115). Если одна библиотека пишет 0x12, а другая 0x34, приёмник будет пропускать пакеты при совпадающих частоте, SF и полосе.

Можно ли использовать синхрослово как адрес сети?

Да, для этого оно и нужно помимо синхронизации: CC1101 принимает только пакеты с заранее заданным синхрословом, и TI прямо называет его идентификатором системы (разд. 14.3). Для адресации отдельных узлов внутри сети у CC1101 и SX1276 есть ещё байт адреса, который проверяется после синхрослова.

Какое синхрослово выбрать?

Длинное и с частыми переходами. TI рекомендует 32 бита (повтор 16-битного слова, разд. 15); Semtech запрещает байты 0x00 в синхрослове FSK (разд. 4.2.10.1); Nordic предупреждает, что адреса вроде 000FFFFFFF или похожие на преамбулу ловятся в шуме и повышают долю ошибочных пакетов (разд. 7.3.2).

Источники

  1. Texas Instruments. CC1101 Low-Power Sub-1 GHz RF Transceiver, SWRS061I (2013) — разд. 14.3 (с. 36): синхронизация байтов непрерывным поиском синхрослова, 16 бит (можно повторить до 32), старший бит первым, служит идентификатором системы; порог совпадения 15/16, 16/16 или 30/32 бит, дополнительно PQI и carrier sense; задаётся регистрами SYNC1 и SYNC0; разд. 15.2 (с. 38): однобайтовое синхрослово эмулируют, записав в SYNC1 образец преамбулы, 32 бита — SYNC_MODE 3 или 7; разд. 15 (с. 37): рекомендуются 4 байта синхрослова; с. 73: сброс SYNC1 = 0xD3, SYNC0 = 0x91; регистр MDMCFG2 (с. 77): SYNC_MODE 0–7
  2. Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; разд. 4.2.10.1 (с. 67): FSK — распознавание синхрослова, сравнение с первым принятым битом по старшему биту RegSyncValue1, размер 1–8 байт (SyncSize), значение SyncValue(63:0), байты 0x00 запрещены; разд. 4.2.13.6 (с. 76–77): пакеты без своего синхрослова отбрасываются, адресная фильтрация — уровень выше синхрослова; табл. регистров LoRa (с. 115): RegSyncWord (0x39), сброс 0x12, значение 0x34 зарезервировано для сетей LoRaWAN
  3. Nordic Semiconductor. nRF24L01+ Product Specification v1.0 (September 2008) — архивная копия официального файла; разд. 7.3.2 (с. 28): адрес 3, 4 или 5 байт обеспечивает приём нужным приёмником; адреса с одной сменой уровня (000FFFFFFF) и продолжающие преамбулу (чередование) обнаруживаются в шуме и повышают долю ошибочных пакетов

Нашли ошибку?