nRF24L01+ это однокристальный приемопередатчик (трансивер) диапазона 2.4 ГГц, в который встроена фирменная подсистема радиопротокола Enhanced ShockBurst™ компании Nordic Semiconductor, рассчитанная на беспроводные приложения с очень низким уровнем потребления энергии. Микросхема nRF24L01+ разработана для мирового промышленного диапазона частот ISM 2.400 - 2.4835 ГГц. Чтобы реализовать обмен данными по радио с помощью nRF24L01+, нужен только MCU (микроконтроллер) и несколько пассивных внешних компонентов.
Примечание: все непонятные термины и сокращения см. в разделе "Словарик", в конце статьи.
Работать с nRF24L01+ можно через последовательный порт SPI. Карта регистров, доступная через SPI, содержит все регистры конфигурации nRF24L01+, и они доступны во всех рабочих режимах микросхемы.
Встроенная подсистема Enhanced ShockBurst™ основана на пакетном обмене, и она поддерживает несколько режимов - от управления в ручном режиме до продвинутого автономного протокола. Внутренние стеки FIFO обеспечивает обработку потока данных между радиоблоком и MCU. Enhanced ShockBurst™ снижает стоимость разработки системы, поддерживая все высокоскоростные операции слоя обмена данными.
В радиоблоке используется модуляция GFSK. Пользователь может конфигурировать используемый частотный канал, выходную мощность и скорость передачи данных по воздуху. nRF24L01+ поддерживает скорости передачи данных по воздуху 250 kbps, 1 Mbps и 2Mbps. Высокие скорости передачи данных в комбинации с двумя режимами пониженного энергопотребления делают nRF24L01+ подходящим решением для приложений, где очень критична потребляемая мощность.
GFSK (Gaussian Frequency-Shift Keying) - вид частотной манипуляции (модуляции), при которой используется фильтр Гаусса для сглаживания частотных перестроек при изменении значения информационного символа. В случае, когда информационный символ принимает два значения, манипуляция называется двоичной (из Википедии).
Чип nRF24L01+ совместим по выводам с nRF24L01, и совместим для работы по воздуху с nRF2401A, nRF2402, nRF24E1 и nRF24E2. Параметры по интермодуляции и блокировки приема по соседнему каналу в nRF24L01+ значительно улучшены по сравнению с nRF24L01, и дополнительная внутренняя фильтрация nRF24L01+ улучшила совместимость с регуляторными радиочасттными стандартами.
Внутренние регуляторы напряжения гарантируют высокий уровень подавления помех по питанию (Power Supply Rejection Ratio, PSRR) и устойчивую работу в широком диапазоне напряжений питания.
- Популярный промышленный диапазон для передачи данных 2.4GHz ISM - 126 радиоканалов - Общий интерфейс RX и TX - Модуляция GFSK - Скорости передачи по радио 250kbps, 1Mbps и 2Mbps - Не перекрывающиеся интервалы в 1 МГц между каналами в режиме скорости 1Mbps - Не перекрывающиеся интервалы в 2 МГц между каналами в режиме скорости 2Mbps
• Передатчик
- Программируемая выходная мощность: 0, -6, -12 или -18dBm - Потребление 11.3mA на выходной мощность 0dBm
• Приемник
- Быстрая АРУ (Fast AGC) для улучшения динамического диапазона - Встроенные канальные фильтры - Ток потребления 13.5mA на скорости 2Mbps - Чувствительность -82dBm на скорости 2Mbps - Чувствительность -85dBm на скорости 1Mbps - Чувствительность -94dBm на скорости 250kbps
• Синтезатор RF
- Синтезатор полностью интегрирован в чип, не требуется внешний фильтр петли ФАПЧ, варикап для VCO и внешние LC контуры - Можно применить недорогой кварц ±60ppm 16 МГц
• Подсистема протокола Enhanced ShockBurst™
- От 1 до 32 байт длина динамической полезной нагрузки - Автоматическая обработка пакетов - Автоматическая обработка транзакций пакетов - 6 направлений данных (data pipe MultiCeiver™) для звездообразный сетей 1:6
• Управление питанием
- Встроенный регулятор напряжения - Напряжение питания от 1.9 до 3.6V - Режимы ожидания (Idle modes) с быстрым восстановлением в рабочий режим для продвинутого управления энергопотреблением - Потребление 26 мкА в режиме Standby-I, 900nA в режиме выключения (power down) - Максимальное время старта 1.5 мс из режима выключения - Максимальное время старта 130 мкс из режима Standby-I
• Интерфейс хоста (MCU)
- 4-выводный аппаратный SPI - Максимальная скорость обмена 10Mbps - 3 отдельных стека на прием и передачу, каждый размером 32 байта (TX FIFO, RX FIFO) - Внешние выводы, толерантные к уровням 5V
• Компактный 20-выводный корпус QFN размером 4x4mm
Основные области применения:
• Беспроводные устройства PC • Мыши, клавиатуры и другие беспроводные устройства ввода/вывода • Пульты управления мультимедийными центрами • Голосовые гарнитуры VoIP • Игровые контроллеры • Датчики и системы слежения для спорта • Дистанционное управление по радио пользовательской электроникой • Домашняя и коммерческая автоматизация • Датчики со сверхнизким энергопотреблением, работающие в радиосетях передачи данных • Активные метки RFID • Дополнение к системам слежения • Игрушки
Рис. 1. Блок-схема nRF24L01+.
Рис. 2. Цоколевка корпуса nRF24L01+ QFN20 4x4 мм (вид сверху).
Таблица 1. Описание функций выводов nRF24L01+.
№
Имя
Функция
Описание
1
CE
I
Chip Enable, активирует режим RX или TX (активный уровень лог. 1).
2
CSN
I
SPI Chip Select, выборка интерфейса (активный уровень лог. 0).
3
SCK
I
Такты SPI.
4
MOSI
I
Вход данных SPI.
5
MISO
O
Выход данных SPI, с функцией перехода в третье состояние.
6
IRQ
O
Ножка сигнала маскируемого прерывания (активный уровень лог. 0).
7
VDD
P
Напряжение питания +1.9V .. +3.6V DC.
8
VSS
P
Земля, нулевой потенциал, общий провод для питания и сигналов.
9
XC2
anO
Ножка для подключения кварцевого резонатора.
10
XC1
anI
Ножка для подключения кварцевого резонатора. Также может работать как вход для внешнего тактового сигнала.
11
VDD_PA
PO
Выход для напряжения питания (+1.8V) внутреннего PA. Должен соединяться по постоянному току с выводами ANT1 и ANT2, как показано на рис. 32.
12
ANT1
RF
Выводы для подключения антенны.
13
ANT2
14
VSS
P
Земля, нулевой потенциал, общий провод для питания и сигналов.
15
VDD
P
Напряжение питания +1.9V .. +3.6V DC.
16
IREF
anI
Опорный ток, соединяется в внешним резистором 22 кОм, как показано на рис. 32.
17
VSS
P
Земля, нулевой потенциал, общий провод для питания и сигналов.
18
VDD
P
Напряжение питания +1.9V .. +3.6V DC.
19
DVDD
PO
Внутренний вывод цифрового питания, предназначенный для развязки. См. рис. 32.
20
VSS
P
Земля, нулевой потенциал, общий провод для питания и сигналов.
Примечание: в столбце "Функция" применены следующие обозначения. I означает цифровой вход, O цифровой выход, anI аналоговый вход, anO аналоговый выход, P вход питания, PO выход питания, RF радиочастотные выводы.
Таблица 2. Предельные допустимые значения параметров.
Рабочие условия
min
MAX
Ед.
Напряжение питания VDD
-0.3
+3.6
V
Напряжение земли VSS
0
Входное напряжение Vi
-0.3
+5.25
Выходное напряжение Vo
VDD .. VSS
VDD .. VSS
Общая мощность рассеивания PD (TA = 85°C)
60
мВт
Рабочая температура
-40
+85
°C
Температура хранения
-40
+125
Примечание: превышение одного или большего количества значений из таблицы 2 может необратимо повредить микросхему nRF24L01+.
Таблица 3. Рабочие условия.
Символ
Рабочие условия
min
typ
MAX
Ед.
VDD
Напряжение питания
+1.6
+3.0
+3.6
V
Напряжение питания, если входные сигналы > 3.6V
+2.7
+3.0
+3.3
TEMP
Рабочая температура
-40
+27
+85
°C
Таблица 4. Энергопотребление.
Символ
Параметр, рабочие условия
min
typ
MAX
Ед.
Режимы ожидания
IVDD_PD
Ток потребления в режиме Power Down
900
нА
IVDD_ST1
Ток потребления в режиме Standby-I(a)
26
мкА
IVDD_ST2
Ток потребления в режиме Standby-II
320
IVDD_SU
Средний ток потребления во время запуска кварцевого генератора (1.5 мс)
400
Передача
IVDD_TX0
Ток потребления при выходной мощности 0 dBm(b)
11.3
мА
IVDD_TX6
Ток потребления при выходной мощности -6 dBm(b)
9.0
IVDD_TX12
Ток потребления при выходной мощности -12 dBm(b)
7.5
IVDD_TX18
Ток потребления при выходной мощности -18 dBm(b)
7.0
IVDD_AVG
Средний ток потребления при выходной мощности -6 dBm, ShockBurst™(c)
0.12
IVDD_TXS
Средний ток потребления при запуске TX(d)
8.0
Прием
IVDD_2M
Ток потребления на скорости 2Mbps
13.5
мА
IVDD_1M
Ток потребления на скорости 1Mbps
13.1
IVDD_250
Ток потребления на скорости 250kbps
12.6
IVDD_RXS
Средний ток потребления при запуске RX(e)
8.9
Примечания:
(a) Этот ток для кварца 12 пФ. Ток при внешнем тактировании зависит от уровня тактового сигнала. (b) Импеданс нагрузки антенны = 15Ω+j88Ω. (c) Импеданс нагрузки антенны = 15Ω+j88Ω. Средняя скорость передачи данных 10kbps и пакеты с полезной нагрузкой максимальной длины. (d) Среднее потребление тока во время запуска передачи (TX startup, 130 мкс), и когда меняется режим от приема к передаче (от RX к TX, 130 мкс). (e) Среднее потребление ток во время запуска приема (RX startup, 130 мкс), и когда меняется режим от передачи на прием (от TX к RX, 130 мкс).
Таблица 5. Параметры RF.
Символ
Рабочие условия
min
typ
MAX
Ед.
fOP
Рабочая частота(a)
2400
2525
МГц
PLLres
Разрешающая способность PLL (минимальный шаг настройки)
1
fXTAL
Частота кварцевого резонатора
16
Δf250
Девиация частоты на скорости 250kbps
±160
кГц
Δf1M
Девиация частоты на скорости 1Mbps
±160
Δf2M
Девиация частоты на скорости 2Mbps
±320
RGFSK
Скорость передачи данных по радиоканалу(b)
250
2000
kbps
FCHANNEL1M
Требуемый интервал между каналами, обеспечивающий отсутствие перекрытия, на скорости 250kbps(с)
1
МГц
FCHANNEL2M
Требуемый интервал между каналами, обеспечивающий отсутствие перекрытия, на скорости 2Mpbs(c)
2
Примечания:
(a) Стандарты регулирования радиовещания определяют диапазон частот, который Вы можете использовать. (b) Скорость на каждой пакетной передаче по радио. (c) Минимальный интервал между каналами 1 МГц.
Таблица 6. Работа передатчика.
Символ
Рабочие условия
min
typ
MAX
Ед.
PRF
Максимальная выходная мощность(a)
0
+4
dBm
PRFC
Диапазоны регулирования выходной мощности
16
18
20
dB
PRFCR
Точность выходной мощности
±4
PBW2
Полоса излучения на уровне 20 dB для модулированной несущей, 2Mbps
1800
2000
кГц
PBW1
Полоса излучения на уровне 20 dB для модулированной несущей, 1Mbps
900
1000
PBW250
Полоса излучения на уровне 20 dB для модулированной несущей, 250kbps
700
800
PRF1.2
Уровень мощности на 1-ом соседнем канале (2 МГц), 2Mbps
-20
dBc
PRF2.2
Уровень мощности на 2-ом соседнем канале (4 МГц), 2Mbps
-50
PRF1.1
Уровень мощности на 1-ом соседнем канале (1 МГц), 1Mbps
-20
PRF2.1
Уровень мощности на 2-ом соседнем канале (2 МГц), 1Mbps
-45
PRF1.250
Уровень мощности на 1-ом соседнем канале (1 МГц), 250kbps
-30
PRF2.250
Уровень мощности на 2-ом соседнем канале (2 МГц), 250kbps
Таблица 8. Чувствительность RX в соответствии со стандартом ETSI EN 300 440-1 V1.3.1 (2001-09).
Скорость
Символ
Рабочие условия
min
typ
MAX
Ед.
2Mbps
C/ICO
C/I Co-channel
7
dBc
C/I1ST
1-й ACS (Adjacent Channel Selectivity, селективность по соседнему каналу) C/I 2 МГц
3
C/I2ND
2-й ACS C/I 4 МГц
-17
C/I3RD
3-й ACS C/I 6 МГц
-21
C/INth
N-й ACS C/I, fi > 12 МГц
-40
N-й ACS C/I, fi > 36 МГц(a)
-48
1Mbps
C/ICO
C/I Co-channel
9
C/I1ST
1-й ACS C/I 1 МГц
8
C/I2ND
2-й ACS C/I 2 МГц
-20
C/I3RD
3-й ACS C/I 3 МГц
-30
C/INth
N-й ACS C/I, fi > 6 МГц
-40
N-й ACS C/I, fi > 25 МГц(a)
-47
250kbps
C/ICO
C/I Co-channel
12
C/I1ST
1-й ACS C/I 1МГц
-12
C/I2ND
2-й ACS C/I 2 МГц
-33
C/I3RD
3-й ACS C/I 3 МГц
-38
C/INth
N-й ACS C/I, fi > 6 МГц
-50
N-й ACS C/I, fi > 25 МГц(a)
-60
Примечание для таблицы 8:
(a) Измерения узкополосной селективности блокировки по соседнему каналу:
• От 0 до ±40MHz; размер шага 1 МГц. • Для частоты помехи смещение n*2*fXTAL, параметры блокирования ухудшаются примерно на 5dB по сравнению с соседними параметрами.
Таблица 9. Селективность nRF24L01+ на эквивалентной модуляции интересующего сигнала. Измерено с использованием Pin = -67dBm для желаемого сигнала.
Скорость
Символ
Рабочие условия
min
typ
MAX
Ед.
2Mbps
C/ICO
C/I Co-channel (модулируемая несущая)
11
dBc
C/I1ST
1-й ACS (Adjacent Channel Selectivity, селективность по соседнему каналу) C/I 2 МГц
4
C/I2ND
2-й ACS C/I 4 МГц
-18
C/I3RD
3-й ACS C/I 6 МГц
-24
C/INth
N-й ACS C/I, fi > 12 МГц
-40
N-й ACS C/I, fi > 36 МГц(a)
-48
1Mbps
C/ICO
C/I Co-channel
12
C/I1ST
1-й ACS C/I 1 МГц
8
C/I2ND
2-й ACS C/I 2 МГц
-21
C/I3RD
3-й ACS C/I 3 МГц
-30
C/INth
N-й ACS C/I, fi > 6 МГц
-40
N-й ACS C/I, fi > 25 МГц(a)
-50
250kbps
C/ICO
C/I Co-channel
7
C/I1ST
1-й ACS C/I 1МГц
-12
C/I2ND
2-й ACS C/I 2 МГц
-34
C/I3RD
3-й ACS C/I 3 МГц
-39
C/INth
N-й ACS C/I, fi > 6 МГц
-50
N-й ACS C/I, fi > 25 МГц(a)
-60
Примечание для таблицы 9:
(a) Измерения узкополосной селективности блокировки по соседнему каналу:
• От 0 до ±40MHz; размер шага 1 МГц.
Измерения блокировки на широкой полосе:
• От 30 МГц до 2000 МГц; размер шага 10 МГц. • От 2000 МГц до 2399 МГц; размер шага 3 МГц. • От 2484 МГц до 3000 МГц; размер шага 3 МГц. • От 3 ГГц до 12.75 ГГц; размер шага 25 МГц.
Желаемый сигнал для измерения блокировки на широкой полосе:
-67dBm при 1Mbps и режиме 2Mbps. -77dBm в режиме 250kbps.
Для частоты помехи смещение n*2*fXTAL, параметры блокирования ухудшаются примерно на 5dB по сравнению с соседними параметрами.
Если полезный сигнал имеет уровень 3dB или больше уровня чувствительности, то соотношение несущая/помеха не зависит от уровня полезного сигнала на указанном смещении частоты.
Таблица 10. Тест интермодуляции RX, выполненный в соответствии со спецификацией Bluetooth version 2.0.
Скорость
Символ
Рабочие условия
min
typ
MAX
Ед.
2Mbps
P_IM(6)
Входная мощность IM помех на смещении 6 и 12 МГц от желаемого сигнала
-42
dBm
P_IM(8)
Входная мощность IM помех на смещении 8 и 16 МГц от желаемого сигнала
-38
P_IM(10)
Входная мощность IM помех на смещении 10 и 20 МГц от желаемого сигнала
-37
1Mbps
P_IM(3)
Входная мощность IM помех на смещении 3 и 6 МГц от желаемого сигнала
-36
P_IM(4)
Входная мощность IM помех на смещении 4 и 8 МГц от желаемого сигнала
-36
P_IM(5)
Входная мощность IM помех на смещении 5 и 10 МГц от желаемого сигнала
-36
250kbps
P_IM(3)
Входная мощность IM помех на смещении 3 и 6 МГц от желаемого сигнала
-36
P_IM(4)
Входная мощность IM помех на смещении 4 и 8 МГц от желаемого сигнала
-36
P_IM(5)
Входная мощность IM помех на смещении 5 и 10 МГц от желаемого сигнала
-36
Примечание: уровень полезного сигнала на Pin = -64 dBm. Используются два сигнала помехи одинаковой входной мощности. Помеха, ближайшая по частоте, не модулирована, другая помеха модулирована эквивалентно полезному сигналу. Представлена входная мощность помех, где чувствительность обеспечивает BER = 0.1%.
Таблица 11. Параметры кварца.
Символ
Рабочие условия
min
typ
MAX
Ед.
Fxo
Частота кварцевого резонатора
16
МГц
ΔF
Допуск на частоту
±60
ppm
C0
Эквивалентная параллельная емкость
1.5
7.0
пФ
Ls
Эквивалентная последовательная индуктивность
30
мГн
CL
Емкость нагрузки
8
12
16
пФ
ESR
Эквивалентное последовательное сопротивление
100
Ω
Примечания:
(a) Точность частоты учитывает допуск на 25ºC, температурный дрейф, старение кристалла и нагрузку кристалла. (b) Регуляторные требования по частотам в определенных регионах более жесткие к допуску на уход частоты (например, Япония и Южная Корея определяют максимум +/- 50ppm). (c) Время запуска от состояния выключения (power down) до режима приостановки (standby mode) зависит от параметра Ls кварца. Подробнее см. таблицу 16.
Время запуска кварцевого генератора (startup time) пропорционально эквивалентной индуктивности кварцевого резонатора. Тенденции в производстве поддерживают уменьшение физических размеров кристалла. Эффект от этого состоит в увеличении эквивалентной последовательной индуктивности Ls, что приводит к увеличению времени запуска. Максимальное время запуска кварцевого генератора Tpd2stby = 1.5 мс установлено при использовании кварца с эквивалентной последовательной индуктивностью 30 мГн.
Специфичный для определенной реализации, самый худший случай времени запуска может быть вычислен по формуле:
Tpd2stby = Ls / 30 мГн * 1.5 мс, если Ls превышает 30 мГн.
Примечание: в некоторых даташитах кварцев Ls называется L1 или Lm, и Cs называется C1 или Cm.
Примечание (a): если входной сигнал > 3.6V (входы допускают уровни логики 5V), то VDD микросхемы nRF24L01+ должно быть в диапазоне от 2.7V до 3.3V (номинальное значение 3.0V±10%).
Таблица 13. Цифровой выход.
Символ
Параметр, рабочие условия
min
typ
MAX
Ед.
VOH
Выходное напряжение лог. 1 (IOH = -0.25 мА)
VDD - 0.3
VDD
V
VOL
Выходное напряжение лог. 0 (IOL = 0.25 мА)
0.3
Таблица 14. Сброс по питанию (Power on reset, POR).
Символ
Параметр, рабочие условия
min
typ
MAX
Ед.
TPUP
Время нарастания напряжения питания(a)
100
мс
TPOR
Время сброса по питанию(b)
1
100
Примечания:
(a) От 0V до 1.9V. (b) Измерено от момента, когда VDD достигает 1.9V до момента завершения сброса.
[Управление рабочими режимами и параметрами радиосвязи]
В микросхему nRF24L01+ встроена машина состояний, которая управляет переходами между рабочими режимами кристалла. Машина состояний получает на входе определяемые пользователем значения из регистров, а также значения внутренних сигналов. Вы можете сконфигурировать nRF24L01+ в режимах "выключено" (Power Down), "приостановка" (Standby), прием (RX) или передача (TX).
Диаграмма состояний на рис. 4 показывает рабочие режимы, и как они функционируют. Здесь выделены 3 разных типа состояний:
• Рекомендуемый рабочий режим: это рекомендованное состояние, используемое для нормального функционирования микросхемы. • Возможный рабочий режим: это состояние возможно, однако оно не используется в нормальной работе. • Состояние перехода: ограниченное по времени состояние, используемое для запуска генератора и стабилизации PLL.
Когда напряжение питания VDD достигает уровня 1.9V или выше, микросхема nRF24L01+ входит в состояние сброса по питанию (Power on reset, POR), где она остается в состоянии сброса, пока не войдет в режим Power Down.
Рис. 4. Диаграмма состояний управления радиоблоком.
Power Down. В режиме "выключено" (power down) работа микросхемы nRF24L01+ запрещена, при этом потребляемый ток минимальный. Все значения регистров доступны и сохраняют свое значение, SPI работает, что позволяет менять конфигурацию путем обмена данными с регистрами. Времена запуска (start up) показаны в таблице 16. В режим Power Down микросхема может войти путем сброса в лог. 0 бита PWR_UP в регистре CONFIG.
Standby-I. При установке в лог. 1 бита PWR_UP регистра CONFIG микросхема входит в режим Standby-I. Этот режим используется для минимизации среднего потребления тока, с сохранением возможности быстрого перехода микрохсемы в рабочий режим. В этом режиме дополнительный ток потребляет только работающий кварцевый генератор. Переход в активные режимы прозойдет только если уровень CE перейдет в лог. 1, и когда CE перейдет в лог. 0, nRF24L01 возвратится в режим Standby-I из обоих активных режимов TX и RX.
Standby-II. В этом режиме активны дополнительные буферы тактов, и ток потребления больше, чем в режиме Standby-I.
Микросхема nRF24L01+ войдет в режим Standby-II, если CE удерживается в лог. 1 и буфер TX FIFO блока PTX пуст. Если новый пакет будет выгружен в TX FIFO, то немедленно запустится PLL и пакет будет переда после номинальной задержки на запуск PLL (PLL settling delay, 130 мкс).
Значения регистров в обоих режимах Standby сохраняются, и интерфейс SPI работает. Интервалы времен запуска см. в таблице 16.
Режим приема (RX). Это активный режим, в котором радиотракт nRF24L01+ используется как приемник. Для входа в этот режим в nRF24L01+ должен быть установлен бит PWR_UP, бит PRIM_RX, и ножка CE должна быть в лог. 1.
В режиме RX приемник демодулирует сигналы от канала RF, постоянно предоставляя данные подсистеме обработки протокола, которая непрерывно ищет поступления допустимого пакета. Если корректный пакет найден (совпал адрес и сошлась CRC), то полезная нагрузка пакета передается в свободный слот стеков RX FIFO. Если стеки RX FIFO переполнены, то принятый пакет отбрасывается.
Микросхема nRF24L01+ остается в режиме RX, пока MCU не сконфигурирует её в режим Standby-I или режим Power Down. Однако если разрешена функция автоматизации протокола (особеность Enhanced ShockBurst™), то nRF24L01+ может войти в другие режимы, для выполнения протокола.
В режиме RX доступен сигнал детектора принимаемой мощности (Received Power Detector, RPD). RPD это сигнал, который устанавливается в лог. 1, когда на сконфигурированной частоте канала приема уровень сигнала RF выше чем -64 dBm. Внутренний сигнал RPD фильтруется перед тем, как поступить в регистр RPD. Сигнал RF должен присутствовать как минимум 40 мкс перед тем, как RPD установится в лог. 1. Как использовать RPD, описано далее в секции "Измерения RPD".
Режим передачи (TX). Это активный режим, в котором радиотракт передает пакеты. Для входа в этот режим в nRF24L01+ должен быть установлен бит PWR_UP, сброшен бит PRIM_RX, и ножка CE должна быть в лог. 1.
Микросхема nRF24L01+ остается в режиме TX, пока не завершится передача пакета. Если CE = 0, то nRF24L01+ возвратится в режим Standby-I. Если CE = 1, то следующее действие определяет состояние TX FIFO. Если стек TX FIFO не пуст, то nRF24L01+ остается в режиме TX, и передает следующий пакет. Если TX FIFO пуст, то nRF24L01+ переходит в режим Standby-II. В режиме TX блок PLL передатчика nRF24L01+ работает с разомкнутым контуром, поэтому важно не удерживать nRF24L01+ в режиме TX на время больше 4 мс. Если разрешены функции Enhanced ShockBurst™, то nRF24L01+ никогда не остается в режиме TX дольше 4 мс.
Конфигурирование рабочих режимов. Таблица 15 описывает, как конфигурировать рабочие режимы nRF24L01+.
Таблица 15. Основные режимы nRF24L01+.
Режим
Регистр PWR_UP
Регистр PRIM_RX
CE
Состояние FIFO
RX
1
1
1
-
TX
1
0
1
Данные находятся в TX FIFO. Будут очищены все уровни в TX FIFO(a).
1
0
Импульс лог. 1 мин. длительностью 10 мкс
Данные находятся в TX FIFO. Будет очищен один уровень в TX FIFO(b).
Standby-II
1
0
1
TX FIFO пуст.
Standby-I
1
-
0
Нет текущей передачи пакетов.
Power Down
0
-
-
-
Примечания:
(a) Если CE удерживается в лог. 1, то все стеки TX FIFO опустошаются, и обрабатываются все необходимые ACK и повторные передачи. Передача продолжается, пока пополняется содержимое TX FIFO. Если TX FIFO опустошился и CE все еще остается в лог. 1, то nRF24L01+ войдет в режим Standby-II. В этом режиме передача пакета запустится, как только будет установлено в лог. 1 сигнал CSN после выгрузки (upload, UL) пакета в TX FIFO. (b) Этот рабочий режим обеспечивается импульсом лог. 1 на CE длительностью не менее 10 мкс. Это позволяет передать только 1 пакет. Этот режим нормальный для микросхемы. После передачи пакета nRF24L01+ автоматически войдет в режим Standby-I.
Информация об интервалах времени для переходов между режимами и уровней сигнала CE представлена в таблице 16. Переход из режима TX в режим RX и обратно одинаковый, как и переход из режимов Standby в режим TX или режим RX (максимум 130 мкс).
Таблица 16. Интервалы времени рабочих режимов микросхемы nRF24L01+.
Имя
nRF24L01+
min
MAX
Комментарии
Tpd2stby
Power Down → режим Standby
150 мкс
С внешними тактами
1.5 мс
Внешний кварц, Ls < 30 мГн(a)
3 мс
Внешний кварц, Ls < 60 мГн(a)
4.5 мс
Внешний кварц, Ls < 90 мГн(a)
Tstby2a
Режимы Standby → режим TX или RX
130 мкс
Thce
Минимальная длительность лог. 1 для CE
10 мкс
Tpece2csn
Задержка от фронта CE до лог. 0 на CSN
4 мкс
Примечание (a): см. таблицу 11 для параметров кварца.
Чтобы перевести микросхему nRF24L01+ в режим TX или RX из режима Power Down, она сначала должна быть переведена в один из режимов Standby mode. Этот процесс дает задержку Tpd2stby (см. таблицу 16.) после того, как nRF24L01+ покинет режим Power Down перед тем, как ножка CE будет установлена в лог. 1.
Примечание: если VDD выключено, то значение регистра потеряется, и необходимо заново сконфигурировать микросхему nRF24L01+ перед вводом её в режим TX или RX.
Скорость передачи по радиоканалу. Микросхема nRF24L01+ для передачи и приема данных использует модулированный радиосигнал. Скорость может быть выбрана 250kbps, 1Mbps или 2Mbps. На малых скоростях передачи чувствительность приемника будет выше, чем на высоких скоростях. Однако высокая скорость передачи данных по воздуху дает возможность снизить среднее энергопотребление и вероятность коллизий (и соответственно повторных передач) на радиоканале.
Скорость передачи данных по радио устанавливается битами RF_DR регистра RF_SETUP. Передатчик и приемник должны быть запрограммированы на одинаковую скорость передачи по радио, чтобы они могли передавать данные друг другу на расстоянии.
Микросхема nRF24L01+ полностью совместима с nRF24L01. Для совместимости с микросхемами nRF2401A, nRF2402, nRF24E1 и nRF24E2 скорость на радиоканале должна быть установлена 250kbps или 1Mbps.
Частота радиоканала. Частота канала RF определяет центр частотного спектра канала, используемого nRF24L01+. Канал занимает полосу частот меньше 1 МГц на скоростях 250kbps и 1Mbps, и полосу меньше 2MHz на скорости 2Mbps. Микрохсема nRF24L01+ может работать на частотах от 2.400 ГГц до 2.525 ГГц. Разрешающая способность программирования частоты RF-канала составляет 1 МГц.
На скорости передачи 2Mbps канал занимает полосу частот шире, чем шаг перестройки частоты радиоканала. Чтобы гарантировать отсутствие наложения (помех друг другу) разных радиоканалов на скорости 2Mbps, между каналами должен быть обеспечен интервал 2 МГц или больше. На скорости передачи 1Mbps и 250kbps полоса канала такая же или меньше, чем разрешающая способность по установке частоты RF. Частота канала RF устанавливается регистром RF_CH по следующей формуле:
F0 = 2400 + RF_CH [МГц]
Чтобы две микросхемы могли общаться друг с другом по радиоканалу, их передатчик и приемник должны быть настроены на одну и ту же частоту, какая используется на противоположной стороне радиообмена.
Измерения RPD. Детектор модности принимаемого сигнала (Received Power Detector, RPD), информация которого находится в бите 0 регистра 09, срабатывает при уровне принимаемого сигнала -64 dBm и выше (бит 0 установится). Если принимаемый сигнал слабее -64 dBm, то RDP = 0.
RPD можно прочитать в любое время, когда nRF24L01+ находится в режиме приема. Это дает текущий уровень приема на канале. Состояние RPD захватывается, когда принимается правильный пакет, иначе детектор отображал бы уровень сигнала от собственного передатчика. Если не было принято пакетов, то RPD захватывается по окончании периода приема в результате перевода ножки CE в лог. хостом MCU, или когда истечет таймаут приема, управляемый системой Enhanced ShockBurst™.
Состояние RPD корректное, когда разрешен режим RX, и после времени ожидания Tstby2a + Tdelay_AGC = 130 мкс + 40 мкс. Усиление RX меняется в зависимости от температуры, поэтому порог RPD также меняется в зависимости от температуры. Значение порога RPD уменьшается на 5dB при T = -40°C и увеличивается на 5dB при 85°C.
Управление PA. Усилитель передатчика (Power Amplifier, PA) nRF24L01+ может менять выходную мощность, доступно 4 уровня регулирования, см. таблицу 17 (). PA управляется битами RF_PWR в регистре RF_SETUP.
Таблица 17. Установка выходной мощности RF nRF24L01+ (при условиях VDD = 3.0V, VSS = 0V, TA = 27ºC, сопротивление нагрузки = 15Ω+j88Ω).
Enhanced ShockBurst™ это фирменное название подсистемы обработки радио протокола на нижнем уровне, которая обладает автоматической сборкой пакетов и управлением рабочими интервалами времени, включая автоматическое подтверждение в повторные передачи пакетов. Enhanced ShockBurst™ позволяет реализовать ультранизкое потребление энергии вместе с высокой скоростью обмена с недорогим хостом MCU. Функции Enhanced ShockBurst™ значительно повышают энергоэффективность для двунаправленного и однонаправленного обмена, не добавляя сложностей программирования на стороне MCU хоста.
Основные функции Enhanced ShockBurst™:
• Длина динамической полезной нагрузки от 1 до 32 байт. • Автоматическая обработка пакетов. • Автоматическая обработка транзакций (с подтверждениями и повторными передачами) и интервалов времени режимов работы. • Для звездообразных сетей с топологией 1:6 представляется 6 каналов данных (data pipe MultiCeiver™).
При передаче ShockBurst™ собирает пакет и управляет тактированием бит пакета данных для передачи. Во время приема ShockBurst™ постоянно ищет допустимый адрес в демодулированном сигнале. Когда такой адрес найден, ShockBurst™ обрабатывает остальную часть пакета и проверяет его CRC. Если пакет принят нормально, то он помещается в свободный слот стеков RX FIFO. Все процессы обработки бит на высоких скоростях и отслеживание таймингов управляются подсистемой ShockBurst™.
Функция автоматической обработки транзакций подсистемы Enhanced ShockBurst™ обеспечивает простую реализацию надежного двустороннего канала связи для данных. Эта обработка транзакций обеспечивает обмен данными между двумя трансиверами, когда один из трансиверов работает как основной приемник (Primary Receiver, PRX), и другой как основной передатчик (Primary Transmitter, PTX). Транзакция пакета Enhanced ShockBurst™ всегда начинается передачей пакета от PTX, и транзакция завершается, когда PTX принял подтверждение пакета (ACK packet) от PRX. PRX может подсоединить данные пользователя к пакету ACK, чем обеспечивается двусторонний линк данных.
Автоматическая обработка транзакции работает следующим образом:
1. Транзакция начинается передачей пакета данных от PTX к PRX. Enhanced ShockBurst™ автоматически переведет PTX в режим приема, чтобы ожидать приема пакета подтверждения (ACK packet). 2. Если переданный пакет был принят PRX, то Enhanced ShockBurst™ автоматически соберет и отправит пакет ACK к PTX перед возвратом в режим приема. 3. Если PTX не принял сразу пакет ACK, то Enhanced ShockBurst™ автоматически повторит передачу оригинального пакета данных после программируемой задержки, и установит PTX в режим приема, чтобы ожидать приема пакета подтверждения (ACK packet).
Enhanced ShockBurst™ позволяет конфигурировать такие параметры, как максимальное количество повторных передач и задержка от передачи до последующей повторной передачи. Вся автоматическая обработка транзакции происходит без участия MCU.
В пакете Enhanced ShockBurst™ содержатся поля преамбулы, адреса, управления пакетом, полезной нагрузки и контрольной суммы CRC. На рис. 5. показан формат пакета со старшим битом (MSB) слева.
Поле преамбулы. Это последовательность бит, используемая для синхронизации демодулятора приемника с приходящим потоком бит. Преамбула имеет длину 1 байт, значение которого 01010101 или 10101010. Если первый бит в адреса 1, то преамбула автоматически установится в 10101010, и если первый бит 0, то преамбула автоматически установится в 01010101. Это делается с целью максимального количества переходов уровня в преамбуле для стабилизации приемника.
Поле адреса. Это адрес, на который реагирует приемник. Адрес гарантирует, что пакет будет принят и декодирован только тем приемником, которому предназначен, предотвращая нежелательный перекрестный обмен пакетами между несколькими системами nRF24L01+. Можно сконфигурировать ширину поля адреса в регистре AW в 3, 4 или 5 байт, см. таблицу 28.
Примечание: адреса, уровень логики у которых сдвигается только один раз (т. е. 000FFFFFFF), в условиях шума могут часто детектироваться неправильно, в результате чего увеличится частота появления ошибок пакета (Packet Error Rate). Адреса, которые выглядят как продолжение преамбулы (с переключением 1-0) также увеличивают Packet Error Rate.
Поле управления пакетом. На рис. 6 показан форма 9-битного поля управления пакетом (Packet Control), MSB слева.
Длина полезной нагрузки (6 бит)
PID (2 бита)
NO_ACK (1 бит)
Рис. 6. Поле Packet Control.
Поле управления пакетом содержит 6-битное поле для обозначения длины полезной нагрузки, 2-битное поле PID (Packet Identity, идентификатор пакета) и 1-битное поле NO_ACK.
6-битное поле длины полезной нагрузки задает длину полезной нагрузки в байтах, которая может быть в диапазоне от 0 до 32 байт. Кодирование работает следующим образом: 000000 соответствует 0 байтам полезной нагрузки (используется только для пустых пакетов ACK). Значения от 000001 до 100000 соответствуют длине полезной нагрузки от 1 до 32 байт. Другие значения, начиная с 100001, не используются. Поле длины полезной нагрузки используется только тогда, когда разрешена функция динамической длины полезной нагрузки (Dynamic Payload Length).
2-битное поле PID используется для детектирования, новый это пакет или переданный повторно. PID предотвращает для устройства PRX повторное получение для хоста MCU одной и той же полезной нагрузки более одного раза. Поле PID инкрементируется на стороне TX для каждого нового пакета, принятого через SPI. Поля PID и CRC (см. далее описание поля CRC) используются устройством PRX, чтобы определить, был ли пакет новым или же был передан повторно. Когда несколько пакетов данных были потеряны при передаче по радиоканалу, поля PID могут становится равными последнему принятому PID. Если у полученного по радиоканалу PID такой же, как у предыдущего пакета, nRF24L01+ сравнивает контрольные суммы CRC обоих пакетов. Если CRC также одинаковые, то считается, что последний принятый пакет является копией ранее принятого пакета, и последний пакет отбрасывается.
Поле флага NO_ACK управляет функцией выбора автоматического подтверждения (Selective Auto Acknowledgement). Этот флаг используется только когда применена функция автоматического подтверждения. Установка флага NO_ACK в лог. 1 говорит приемнику, что на этот пакет отправлять автоматическое подтверждение не нужно.
На стороне PTX можно установить бит флага NO_ACK в поле управления пакетом командой W_TX_PAYLOAD_NOACK. Однако эта функция должна быть разрешена в регистре FEATURE установкой бита EN_DYN_ACK. Когда Вы используете эту опцию, PTX напрямую переходит в режим Standby-I после передачи пакета. PRX не передает пакет ACK, когда получит пакет с установленным в лог. 1 флагом NO_ACK.
Поле полезной нагрузки. Это данные, которыми пользователь нагрузил пакет. Размер полезной нагрузки может быть от 0 до 32 байт, и она передается по радио, будучи выгружена в nRF24L01+.
Enhanced ShockBurst™ предоставляет две альтернативы для обработки длин полезной нагрузки - статически и динамически.
По умолчанию длина полезной нагрузки статическая. Со статической полезной нагрузкой длина полезной нагрузки у всех пакетов между передатчиком и приемником одинаковая. Статическая длина полезной нагрузки устанавливается регистрами RX_PW_Px на стороне приемника. Длина полезной нагрузки на стороне передатчика устанавливается количеством байт, вдвинутых в TX_FIFO, и это количество должно соответствовать значением в регистре RX_PW_Px на стороне приемника.
Dynamic Payload Length (DPL), динамическая длина полезной нагрузки является альтернативой статической длине полезной нагрузки. DPL разрешает передатчику отправлять приемнику пакеты с переменной длиной полезной нагрузки. Это означает, что для системы с разными длинами полезной нагрузки нет необходимости подгонять длину пакета под самую длинную полезную нагрузку.
С функцией DPL микросхема nRF24L01+ может декодировать длину полезной нагрузки принятого пакета автоматически, вместо использования регистров RX_PW_Px. MCU может прочитать длину принятой полезной нагрузки командой R_RX_PL_WID.
Примечание: всегда проверяйте, является ли длина пакета 32 байта или меньше, когда используется команда R_RX_PL_WID. Если эта длина больше 32 байт, то пакет содержит ошибки, и должен быть отброшен. Пакет отбрасывается с помощью команды FLUSH_RX.
Чтобы разрешить DPL, должен быть установлен в лог. 1 бит EN_DPL регистра FEATURE. В режиме RX должен быть установлен регистр DYNPD. У PTX, который передает в PRX с разрешенной функцией DPL, должен быть установлен бит DPL_P0 в регистре DYNPD.
Поле CRC. Контрольная сумма CRC это основной механизм детектирования ошибок в пакете. Размер CRC 1 или 2 байта, и она вычисляется по полям адреса, Packet Control и полезной нагрузке.
Полином 1-байтной CRC: X8 + X2 + X + 1, начальное значение 0xFF. Полином 2-байтной CRC: X16+ X12 + X5 + 1, начальное значение 0xFFFF.
Количество байт в CRC устанавливается битом CRCO в регистре CONFIG. Если CRC пакета показывает ошибку, Enhanced ShockBurst™ отбросит этот пакет.
Автоматическая сборка пакета. Эта процедура перед передачей собирает в полный пакет преамбулу, адрес, поле управления пакетом, полезную нагрузку и CRC.
Рис. 7. Автоматическая сборка пакета.
Автоматическая разборка пакета. После того, как пакет был проверен, Enhanced ShockBurst™ разбирает пакет и загружает полезную нагрузку в RX FIFO, и выставляет прерывание RX_DR IRQ.
Рис. 8. Автоматическая разборка пакета.
[Автоматическая обработка транзакции пакета]
У Enhanced ShockBurst™ есть 2 функции для поддержки автоматической обработки пакетов: это автоматическое подтверждение (auto acknowledgement) и автоматическая повторная передача (auto re-transmit).
Auto acknowledgment. Автоматическое подтверждение это функция, которая автоматически передает пакет ACK к PTX после того, как пакет был принят, проверен и был признан допустимым. Функция автоподтверждения снижает нагрузку на MCU системы. Это также снижает стоимость и среднее потребление тока системы. Функция Auto Acknowledgement разрешаетcя установкой регистра EN_AA.
Примечание: если у принятого пакета установлен флаг NO_ACK, то автоподтверждение не выполняется.
Пакет ACK может содержать опциональную полезную нагрузку, передаваемую от PRX к PTX. Чтобы использовать эту функцию, должна быть разрешена фича Dynamic Payload Length (DPL). MCU на стороне PRX должно выгрузить полезную нагрузку путем вдвигания её в TX FIFO командой W_ACK_PAYLOAD. Полезная нагрузка в TX FIFO (PRX) ожидает приема нового пакета от PTX. Микросхема nRF24L01+ может иметь 3 полезных нагрузки ACK-пакета в TX FIFO (PRX), одновременно ожидающих приема.
Рис. 9. TX FIFO (PRX) с ожидающими полезными нагрузками.
Рис. 9 показывает, как стек TX FIFO (PRX) работает при наличии в нем полезных нагрузок ACK-пакетов. От MCU полезная нагрузка вдвигается командой W_ACK_PAYLOAD. Декодер адреса и контроллер буфера гарантирует, что полезная нагрузка сохраняется в свободный слот стека TX FIFO (PRX). Когда принят пакет, декодер адреса и контроллер буфера оповещаются адресом PTX. Это обеспечит для генератора ACK правильную полезную нагрузку.
Если TX FIFO (PRX) содержит больше одной полезной нагрузки для PTX, то полезные нагрузки обрабатываются по принципу первый вошел - первый вышел. TX FIFO (PRX) блокируется, если все ожидающие полезные нагрузки адресованы PTX, где канал потерян. В этом случае MCU может сбросить содержимое TX FIFO (PRX) командой FLUSH_TX.
Чтобы разрешить Auto Acknowledgement с полезной нагрузкой, должен быть установлен бит EN_ACK_PAY в регистре FEATURE.
Auto Retransmission (ART). Функция автоматической повторной передачи передаст пакет заново, если не был получен пакет подтверждения ACK. Это используется в системе автоматического подтверждения на PTX. Когда пакет не был подтвержден, можно установить количество разрешенных повторных передач установкой бит ARC в регистре SETUP_RETR. PTX enters входит в режим RX и короткое время ожидает пакет ACK всякий раз, когда пакет был передан. Период времени, которое PTX находится в режиме RX основывается на следующих условиях:
• Истекла задержка Auto Retransmit Delay (ARD). • Не было совпадения адреса в течение 250 мкс (или 500 мкс в режиме скорости 250kbps). • После принятого пакета (когда CRC корректна или не корректна).
Микросхема nRF24L01+ выставляет прерывание TX_DS IRQ, когда принят пакет ACK.
nRF24L01+ входит в режим Standby-I, если больше нет не переданных данных в TX FIFO, и ножка CE находится в лог. 0. Если пакет ACK не принят, nRF24L01+ переходит обратно в режим TX после задержки, определенной путем ARD, и повторно передает данные. Это продолжается до тех пор, пока не будет принято подтверждение, или пока не будет достигнуто максимальное количество повторных передач.
Два счетчика потери пакетов инкрементируются каждый раз, когда пакет потерян, это счетчики ARC_CNT и PLOS_CNT в регистре OBSERVE_TX. ARC_CNT считает количество повторных передач для текущей транзакции, при инициации новой транзакции Вы сбрасываете ARC_CNT. PLOS_CNT считает общее количество повторных передач с момента последней смены канала. Вы сбрасываете PLOS_CNT записью в регистр RF_CH. Можно использовать эту информацию в регистре OBSERVE_TX для общей оценки качества канала.
ARD определяет время от конца переданного пакета до момента, когда PTX запустит повторную передачу этого пакета в случае не получения подтверждения. ARD устанавливается в регистре SETUP_RETR с шагом 250 мкс.
Есть ограничение на длительность ARD, когда используется ACK с полезной нагрузкой. Время ARD никогда не должно быть короче, чем сумма времени запуска и времени передачи пакета ACK по радиоканалу:
• Для скорости 2Mbps и адреса из 5 байт адреса, 15 байт максимальной полезной нагрузки пакета ACK длительность ARD=250 мкс (значение после сброса). • Для скорости 1Mbps и адреса из 5 байт адреса, 5 байт максимальной полезной нагрузки пакета ACK длительность ARD=250 мкс (значение после сброса).
Длительность ARD=500 мкс достаточно велика для любой длины полезной нагрузки ACK в режимах скоростей 1Mbps или 2Mbps.
• Для скорости 250kbps и 5 байт адреса применяются значения из таблицы 18.
Таблица 18. Максимальная длина полезной нагрузки ACK для разных значений задержек повторной передачи на скорости 250kbps.
ARD
Размер пакета ACK (в байтах)
1500 мкс
Все возможные размеры полезной нагрузки
1250 мкс
≤ 24
1000 мкс
≤ 16
750 мкс
≤ 8
500 мкс
Пустой ACK без полезной нагрузки
Как альтернативу Auto Retransmit можно вручную настроить nRF24L01+ повторно передавать пакет определенное количество раз командой REUSE_TX_PL. MCU должен инициировать каждую передачу пакета импульсом на ножке CE, когда используется эта команда.
[Enhanced ShockBurst™, работа PTX]
Алгоритм на рис. 10 показывает, как ведет себя сконфигурированная в качестве PTX (передача) микросхема nRF24L01+ после входа в режим Standby-I.
Активируйте режим PTX установкой в лог. 1 ножки CE. Если в этот момент в стеке TX FIFO находится пакет, то nRF24L01+ войдет в режим TX и передаст пакет. Если разрешен Auto Retransmit, то машина состояний проверит, установлен ли флаг NO_ACK. Если он не установлен, то nRF24L01+ после передачи войдет в режим RX, чтобы принять пакет ACK. Если принятый пакет ACK пустой, то будет только выставлено прерывание TX_DS IRQ. Если в пакете ACK находится полезная нагрузка, то одновременно будут выставлены прерывания TX_DS IRQ и RX_DR IRQ перед возвратом nRF24L01+ в режим Standby-I.
Если ACK-пакет не был принят перед истечением таймаута, то микросхема nRF24L01+ возвратится в режим Standby-II. Она остается в режиме Standby-II до истечения времени ARD. Если не было достигнуто количество повторных передач ARC, то nRF24L01+ войдет в режим TX и передаст еще раз последний пакет.
При выполнении функции Auto Retransmit количество повторных передач может достигнуть максимума, определенного в ARC. Если это произошло, то nRF24L01+ выставит прерывание MAX_RT IRQ и вернется в режим Standby-I.
Если CE находится в лог. 1, и стек TX FIFO пуст, то nRF24L01+ войдет в режим Standby-II.
[Enhanced ShockBurst™, работа PRX]
Алгоритм на рис. 11 показывает, как ведет себя сконфигурированная в качестве PRX (прием) микросхема nRF24L01+ после входа в режим Standby-I.
Активируйте режим PRX установкой в лог. 1 ножки CE. Микросхема nRF24L01+ войдет в режим RX и начнет поиск пакетов. Если пакет принят и разрешено Auto Acknowledgement, то nRF24L01+ определит, новый это пакет или копия ранее принятого пакета. Если пакет новый, то полезная нагрузка передается в RX FIFO, и выставляется прерывание RX_DR IRQ. Если последний принятый от передатчика пакет подтвержден пакетом ACK с полезной нагрузкой, то прерывание TX_DS IRQ показывает, что PTX принял ACK-пакет с полезной нагрузкой. Если флаг NO_ACK в принятом пакете не установлен, то PRX войдет в режим TX. Если в стеке TX FIFO имеется ожидающая передачи полезная нагрузка, то она присоединяется к пакету ACK. Посте того, как пакет ACK передан, микросхема nRF24L01+ возвратится в режим RX.
Может быть принята копия ранее полученного пакета, если пакет ACK был потерян. В этом случае PRX отбросит принятый пакет и передаст пакет ACK перед возвратом в режим RX.
[MultiCeiver™]
MultiCeiver™ это функция, используемая в режиме RX, которая содержит 6 параллельных каналов (data pipe) данных с уникальными адресами. Канал данных это логический канал поверх физического канала RF. Каждый data pipe имеет свой собственный физический адрес (data pipe address), декодируемый в nRF24L01+.
Рис. 12. PRX при использовании MultiCeiver™.
Микросхема nRF24L01+, сконфигурированная как PRX (основной приемник), может принять данные, адресованные для 6 различных data pipe на одной радиочастоте, что показано на рис. 12. Каждый data pipe снабжен своим собственным уникальным адресом, и может быть сконфигурирован для индивидуального поведения.
До 6 микросхем nRF24L01+, сконфигурированных как PTX, могут коммуницировать с одной микросхемой nRF24L01+, сконфигурированной как PRX. Поиск всех адресов data pipe выполняется одновременно. В любой момент времени может быть принят пакет только одного data pipe. Все data pipes могут работать с функционалом Enhanced ShockBurst™.
Следующие настройки общие для всех data pipe:
• CRC разрешена/запрещена (CRC всегда разрешена, когда разрешен функционал Enhanced ShockBurst™). • Схема кодирования CRC. • Ширина адреса RX. • Частота радиоканала. • Скорость передачи данных по радиоканалу. • Усиление LNA.
Каналы данных data pipe разрешаются битами в регистре EN_RXADDR. По умолчанию разрешены только каналы data pipe 0 и data pipe 1. Каждый data pipe конфигурируется в регистрах RX_ADDR_PX.
Примечание: всегда убедитесь, что ни на одном data pipe не настроены одинаковые адреса.
У каждого data pipe может быть сконфигурирован адрес размером до 5 байт. Канал pipe 0 имеет уникальный 5 байтный адрес. Каналы 1-5 совместно используют 4 самых старших байта адреса. Младший байт адреса должен быть уникальным для всех 6 каналов. Рис. 13 показывает пример, как адресуются каналы data pipe 0-5.
Рис. 13. Адресация каналов data pipe 0-5.
PRX, использующий MultiCeiver™ и Enhanced ShockBurst™, принимает пакеты от больше одного PTX. Чтобы гарантировать, что ACK-пакет от PRX передан соответствующему PTX, блок PRX берет адрес data pipe, принятый в пакете, и использует его в качестве адреса TX, когда передает ACK-пакет. На рис. 14 дает пример конфигурации адресов для PRX и PTX. На PRX значения RX_ADDR_Pn, определенные как адрес канала pipe, должны быть уникальными. На PTX значение TX_ADDR должно быть таким же, как RX_ADDR_P0 и как адрес pipe того канала, которому надо передать данные.
Рис. 14. Пример адресации data pipe в MultiCeiver™.
Только когда data pipe примет полный пакет, другие каналы data pipe могут начать принимать данные. Когда несколько PTX передают в PRX, значение ARD может быть использовано для скоса автоматической повторной передачи, так что они блокируют друг друга только один раз.
[Тайминг Enhanced ShockBurst™]
В этом разделе описывается последовательность интервалов времени работы Enhanced ShockBurst™, как все режимы инициируются и работают. Тайминг Enhanced ShockBurst™ управляется через интерфейс данных и управления (см. далее раздел "Интерфейс данных и управления"). Микросхема nRF24L01+ может быть установлена в статические режимы или в автономные режимы, где событиями управляет внутренняя машина состояний. Каждый автономный режим / последовательность заканчивается сигналом прерывания на ножке IRQ. Все прерывания на диаграммах времени индицированы как события IRQ.
Рис. 15. Передача одного пакета с установленным NO_ACK.
Примечание (1): прерывание выставляется, если установлен NO_ACK. TIRQ = 8.2 мкс при 1Mbps, TIRQ = 6.0 мкс при 2Mbps, Tstdby2a = 130 мкс.
В таблице 19 приведены выражения различные выражения измерения интервалов времени.
Таблица 19. Формулы интервалов времени.
Символ
Описание
Формула
TOA
Время вещания (on-air)
TACK
Время передачи ACK
TUL
Время выгрузки (UpLoad)
TESB
-18 dBm
TESB = TUL + 2 · Tstby2a + TOA + TACK + TIRQ
Рис. 16. Тайминг Enhanced ShockBurst™ для выгрузки одного пакета (2Mbps).
На рис. 16 показана передача и подтверждение пакета. Устройство PRX активирует режим RX (CE=1), и устройство PTX активируется в режиме TX (импульс CE=1 в течение минимум 10 мкс). После 130 мкс передача запускается, и завершается после истечения TOA.
Когда передача завершилась, устройство PTX автоматически переключается в режим RX, чтобы ждать пакет ACK от устройства PRX. Когда устройство PRX приняло пакет, оно устанавливает прерывание для хоста MCU и переключается в режим TX для отправки ACK. После того, как устройство PTX приняло пакет ACK, оно устанавливает прерывание для MCU и очищает пакет, удаляя его из TX FIFO.
На рис. 17 показан тайминг PTX передачи пакета, когда потерян первый пакет ACK. Чтобы увидеть полную передачу, когда пакет ACK не прошел, см. рис. 20.
Рис. 17. Тайминг Enhanced ShockBurst™, когда потерян первый пакет ACK (2Mbps).
[Диаграмма транзакции Enhanced ShockBurst™]
В здесь описываются несколько сценариев для автоматической обработки транзакций Enhanced ShockBurst™. Выноски на рисунках в этом разделе показывают прерывания IRQ и другие события. Для активности MCU событие может быть помещено в другое окно времени.
Примечание: рисунки в этом разделе показывают самую раннюю возможную загрузку пакета (download, DL) в MCU и самую последнюю выгрузку (upload, UL) полезной нагрузки в передатчик.
На рис. 18 показано базовое автоподтверждение. После того, как пакет передан устройством PTX и принят устройством PRX, от PRX к PTX передается ACK-пакет. Выставляется прерывание RX_DR IRQ после того, как пакет был принят PRX, в то время как прерывание TX_DS IRQ выставляется, когда пакет был подтвержден и ACK-пакет принят устройством PTX.
Рис. 18. Циклы TX/RX с ACK и соответствующие прерывания.
Примечание (1): время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay).
На рис. 19 показан сценарий, когда нужна повторная передача из-за потери первого переданного пакета. После того, как пакет передан, устройство PTX входит в режим RX для приема ACK-пакета. После первой передачи PTX ждет заданное время поступления пакета ACK, и если за это время пакет ACK не принят, то PTX заново передает пакет, как показано на рис. 19.
Рис. 19. Циклы TX/RX с ACK и соответствующими прерываниями, когда не прошла передача первого пакета.
Примечание (1): время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay).
Когда детектирован адрес, устройство PTX остается в режиме RX, пока пакет принимается. Когда заново переданный пакет принят устройством PRX (см. рис. 19), выставляется прерывание RX_DR IRQ, и ACK передается обратно к устройству PTX. Когда ACK принят устройством PTX, выставляется прерывание TX_DS IRQ.
На рис. 21 показан сценарий базового автоподтверждения с полезной нагрузкой. После того, как пакет был передан устройством PTX и принят устройством PRX, пакет ACK с полезной нагрузкой передается с полезной нагрузкой от PRX к PTX. Выставляется прерывание RX_DR IRQ после того, как пакет принят устройством PRX, в то время как на стороне PTX устанавливается прерывание TX_DS IRQ, когда ACK-пакет принят устройством PTX. На стороне устройства PRX прерывание TX_DS IRQ для полезной нагрузки пакета ACK выставляется после того, как принят новый пакет от устройства PTX. Положение IRQ на рис. 21 показывает, где MCU может ответить на прерывание.
Рис. 21. Циклы TX/RX, где ACK с полезной нагрузкой и соответствующие прерывания.
Примечания:
(1) Время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay). (2) Обновление полезной нагрузки для ACK-пакета. (3) Задержка, определенная MCU на стороне PTX, ≥ 130 мкс.
Рис. 22 показывает сценарий, где первый пакет потерян, и нужна повторная передача перед установкой прерывания RX_DR IRQ на стороне устройства PRX. Для устройства PTX устанавливаются оба прерывания TX_DS IRQ и RX_DR IRQ после того, как принят пакет ACK. Посте приема второго пакета (PID=2) на стороне PRX устанавливаются оба прерывания RX_DR IRQ (PID=2) и TX_DS IRQ (полезная нагрузка пакета ACK).
Рис. 22. Циклы TX/RX и соответствующие прерывания, когда передаваемый пакет не дошел до PRX.
Примечания:
(1) Время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay). (2) Обновление полезной нагрузки для ACK-пакета. (3) Задержка, определенная MCU на стороне PTX, ≥ 130 мкс.
Рис. 23. Циклы TX/RX с полезной нагрузкой ACK и соответствующими прерываниями, когда не прошел пакет ACK.
Примечания:
(1) Время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay). (2) Обновление полезной нагрузки для ACK-пакета. (3) Задержка, определенная MCU на стороне PTX, ≥ 130 мкс.
Рис. 24. Циклы TX/RX с ACK-пакетом, несущим полезную нагрузку, и соответствующие прерывания, когда передача неудачная. ARC установлен в 2.
Примечания:
(1) Время переключения с передачи на прием и с приема на передачу (Radio Turn Around Delay). (2) Обновление полезной нагрузки для ACK-пакета. (3) Задержка, определенная MCU на стороне PTX, ≥ 130 мкс.
Установится прерывание MAX_RT IRQ, если счетчик автоповторов (ARC_CNT) превысил максимальный предел (ARC). На рис. 24 передача пакета заканчивается с прерыванием MAX_RT IRQ. Полезная нагрузка в TX FIFO не удаляется, и MCU принимает решение по следующему шагу в протоколе обмена. Переключение уровня ножки CE запустит новую последовательность передачи того же самого пакета. Полезная нагрузка может быть удалена из TX FIFO с помощью команды FLUSH_TX.
[Совместимость с ShockBurst™]
Для обеспечения обратной совместимости с nRF2401A, nRF2402, nRF24E1 и nRF24E2 необходимо запретить Enhanced ShockBurst™, для этого установите EN_AA = 0x00 и ARC = 0. Дополнительно скорость передачи данных по радио микросхемы nRF24L01+ должна быть установлена на 1Mbps или 250kbps.
Формат пакета ShockBurst™ показан на рис. 25 со старшим битом слева.
Преамбула (1 байт)
Адрес (3 - 5 байт)
Полезная нагрузка (1 - 32 байта)
CRC (1 - 2 байта)
Рис. 25. Пакет ShockBurst™, совместимый с устройствами nRF2401/nRF2402/nRF24E1/nRF24E2.
В пакете ShockBurst™ имеются поля преамбулы, адреса, полезной нагрузки и CRC, которые такие же, как и у формата пакета Enhanced ShockBurst™, описанного выше. Отличия пакетов ShockBurst™ и Enhanced ShockBurst™ следующие:
• В пакете ShockBurst™ отсутствует бит 9 поля Packet Control. • В пакете ShockBurst™ поле CRC опциональное, и управляется битом EN_CRC в регистре CONFIG register.
[Интерфейс данных и управления]
Интерфейс данных и управления дает доступ ко всем функциям микросхемы nRF24L01+. Этот интерфейс состоит из следующих шести цифровых сигналов, допускающих входные уровни 5V:
IRQ, выход. Этот сигнал имеет активный уровень лог. 0, и он управляет тремя маскируемыми источниками прерывания. CE, вход. Этот сигнал имеет активный уровень лог. 1, и используется для активации микросхемы в режиме RX или TX. CSN, вход. Сигнал выборки подчиненного устройства SPI. Здесь в качестве подчиненного устройства выступает микросхема nRF24L01+, а мастером работает хост MCU. SCK, вход. Тактовый сигнал SPI. MOSI, вход. Вход данных подчиненного устройства SPI (nRF24L01+), выход данных главного устройства шины SPI (MCU). MISO выход. Выход данных подчиненного устройства SPI (nRF24L01+), вход данных главного устройства шины SPI (MCU).
С помощью 1-байтных команд SPI можно активировать стеки данных FIFO микросхемы nRF24L01+ или её регистры во всех режимах работы.
Основные функции интерфейса:
• Специальные команды SPI для быстрого доступа к большинству часто используемых функций. • 4-проводный SPI, работающий на скорости от 0 до 10Mbps. • 8-битный набор команд. • Просто конфигурируемая карта регистров. • Трехуровневый стек FIFO для обоих направлений - передача (TX) и прием (RX).
Команды SPI показаны в таблице 20. Каждая новая команда должна начинаться с перевода ножки CSN из лог. 1 в лог. 0. Регистр STATUS последовательно выдвигается через ножку MISO, когда слово команды вдвигается через ножку MOSI.
Последовательная передача команд SPI происходит в следующем формате:
< Слово команды: от MSB до LSB (1 байт) > < Байты данных: от младшего байта до старшего байта, в каждом байте бит MSB идет первым >
Для информации по интервалам времени см. рисунки 26 и 27.
Таблица 20. Набор команд SPI микросхемы nRF24L01+.
Имя команды
Слово команды (BIN)
Количество байт
Операция
R_REGISTER
000AAAAA
От 1 до 5(b)
Чтение регистров команд и состояния. AAAAA = 5 бит адреса на карте регистров.
W_REGISTER
001AAAAA
Чтение регистров команд и состояния. AAAAA = 5 бит адреса на карте регистров. Может быть выполнена только в режимах Power Down или Standby.
R_RX_PAYLOAD
01100001
От 1 до 32(b)
Чтение полезной нагрузки RX: от 1 до 32 байт. Операция чтения всегда начинается с байта 0. После того, как полезная нагрузка считана, она удаляется из FIFO. Эта команда используется в режиме RX.
W_TX_PAYLOAD
10100000
От 1 до 32(b)
Запись полезной нагрузки TX: от 1 до 32 байт. Операция записи всегда начинается с байта 0, используемого в полезной нагрузке TX.
FLUSH_TX
11100001
0
Сброс (очистка) содержимого TX FIFO, используется в режиме TX.
FLUSH_RX
11100010
0
Сброс (очистка) содержимого RX FIFO, используется в режиме RX. Эта команда не должна выполняться во время передачи подтверждения (ACK), иначе пакет подтверждения не будет завершен.
REUSE_TX_PL
11100011
0
Используется для устройства PTX. Повторное использование последней полезной нагрузки. Повторное использование полезной нагрузки TX активно, пока не будет выполнена команда W_TX_PAYLOAD или FLUSH TX. Повторное использование полезной нагрузки TX не должно быть активировано или деактивировано во время передачи пакета.
R_RX_PL_WID(a)
01100000
1
Чтение ширины (количества байт) полезной нагрузки RX для вершины R_RX_PAYLOAD в стеке RX FIFO. Замечание: RX FIFO очищается, если прочитанное значение больше 32 байт.
W_ACK_PAYLOAD(a)
10101PPP
От 1 до 32(b)
Используется в режиме RX. Записывает полезную нагрузку, которая должна быть передана вместе с ACK-пакетом на логическом канале (PIPE) PPP (допустимый диапазон значений PPP от 000 до 101). Могут ожидать максимум 3 полезные нагрузки пакета ACK. Полезные нагрузки с одинаковым PPP обрабатываются по принципу первый вошел - первый вышел. Полезная нагрузка может быть записана размером от 1 до 32 байт. Запись всегда начинается с байта 0.
W_TX_PAYLOAD_NOACK(a)
10110000
От 1 до 32(b)
Используется в режиме TX. Запрещает автоподтверждение (AUTOACK) на этом определенном пакете.
NOP
11111111
0
Пустая операция (No OPeration). Может использоваться для чтения регистра состояния (STATUS).
Примечания:
(a) Должны быть установлены биты в регистре FEATURE, показанные в таблице 28. (b) LSByte идет первым.
Команды W_REGISTER и R_REGISTER работают с однобайтными или мультибайтными регистрами. Когда происходит доступ на чтение или запись к мультибайтным регистрам, сначала передается старший бит младшего байта. Вы можете прервать запись до того, как все байты были записаны в многобайтный регистр, оставляя не записанными старшие байты. Например, младший байт RX_ADDR_P0 может быть изменен записью только одного байта в регистр RX_ADDR_P0. Содержимое регистра статуса всегда считывается через MISO после изменения уровня от лог. 1 к лог. 0 на ножке CSN.
Примечание: 3 бита информации о канале (pipe) в регистре STATUS обновляется при переходе уровня на ножке IRQ от уровня лог. 1 к лог. Эта информация ненадежна, если регистр STATUS считывается во время перехода уровня на IRQ от лог. 1 от лог. 0.
Работа SPI и тайминг показаны на рисунках от 26 до 28 и в таблицах от 22 до 27. Микросхема nRF24L01+ должна быть в режиме Standby или Power Down перед записью в регистры конфигурации.
Примечание: на рисунках от 26 до 28 используются следующие аббревиатуры: Cn бит команды SPI, Sn бит регистра STATUS, Dn бит данных. В потоке байт данных сначала идет младший байт, при этом в каждом байте старший бит идет первым.
Рис. 26. Операция чтения SPI.
Рис. 27. Операция записи SPI.
Рис. 28. Диаграмма времени SPI NOP.
На рис. 29 показывает компоненты Rpull и Cload, которые упоминаются в таблицах от 22 до 27.
Рис. 29. Rpull и Cload.
Таблица 22. Параметры времени SPI (Cload = 5 пФ).
Символ
Параметр
min
MAX
Ед.
Tdc
Время установки данных до SCK
2
нс
Tdh
Время удержания SCK для данных
2
Tcsd
Время от CSN до достоверных данных
38
Tcd
Время от SCK до достоверных данных
55
Tcl
Время лог. 0 для SCK
40
Tch
Время лог. 1 для SCK
40
Fsck
Частота SCK
0
10
МГц
Tr, Tf
Время нарастания и спада для SCK
100
нс
Tcc
Время установки CSN до SCK
2
Tcch
Время удержания SCK до CSN
2
Tcwh
Время неактивного состояния CSN
50
Tcdz
Время от CSN до перехода выхода в третье состояние
38
Таблица 23. Параметры времени SPI (Cload = 10 пФ).
Символ
Параметр
min
MAX
Ед.
Tdc
Время установки данных до SCK
2
нс
Tdh
Время удержания SCK для данных
2
Tcsd
Время от CSN до достоверных данных
42
Tcd
Время от SCK до достоверных данных
58
Tcl
Время лог. 0 для SCK
40
Tch
Время лог. 1 для SCK
40
Fsck
Частота SCK
0
8
МГц
Tr, Tf
Время нарастания и спада для SCK
100
нс
Tcc
Время установки CSN до SCK
2
Tcch
Время удержания SCK до CSN
2
Tcwh
Время неактивного состояния CSN
50
Tcdz
Время от CSN до перехода выхода в третье состояние
Время от CSN до перехода выхода в третье состояние
116
Data FIFO. Стеки данных FIFO хранят передаваемые полезные нагрузки (TX FIFO) или принятые полезные нагрузки, которые готовы к чтению (RX FIFO). Стеки FIFO доступны в обоих режимах PTX и PRX.
В микросхеме nRF24L01+ присутствуют следующие FIFO:
• Трехуровневый TX FIFO размером 32 байта. • Трехуровневый RX FIFO размером 32 байта.
У обоих FIFO есть контроллер, и они доступны через SPI с помощью выделенных команд SPI commands. Стек TX FIFO в устройстве PRX могут хранить полезные нагрузки пакетов ACK для трех различных устройств PTX. Если TX FIFO содержится больше одной полезной нагрузки для канала, то эти полезные нагрузки обрабатываются по принципу первый вошел - первым вышел. Стек TX FIFO в устройстве PRX блокируется, если все ожидающие полезные нагрузки адресованы каналам, когда линк к устройству PTX потерян. В этом случае MCU может сбросить (очистить) содержимое TX FIFO командой FLUSH_TX.
Стек RX FIFO в устройстве PRX может содержать полезные нагрузки до трех различных устройств PTX, и стек TX FIFO в устройстве PTX может сохранять до трух полезных нагрузок.
Вы можете записать в данные в TX FIFO с помощью трех команд: W_TX_PAYLOAD и W_TX_PAYLOAD_NO_ACK в режиме PTX и W_ACK_PAYLOAD в режиме PRX. Все эти три команды предоставляют доступ к регистру TX_PLD (см. таблицу 28, где приведена подробная информация по этому регистру).
Стек RX FIFO может быть прочитан командой R_RX_PAYLOAD в режиме PTX и PRX. Эта команда предоставляет доступ к регистру RX_PLD.
Полезная нагрузка в TX FIFO устройства PTX не удаляется, если было выставлено прерывание MAX_RT IRQ.
Рис. 30. Блок-схема стеков FIFO (RX и TX).
Вы можете прочитать информацию о заполненности или пустоте стеков TX FIFO и RX FIFO в регистре FIFO_STATUS.
Прерывание. У микросхемы nRF24L01+ есть ножка прерывания (IRQ) с активным уровнем лог. 0. Эта ножка активируется, когда машиной состояний в регистре STATUS установлены TX_DS IRQ, RX_DR IRQ или MAX_RT IRQ в лог. 1. Ножка IRQ сбрасывается в неактивное состояние, когда MCU запишет лог. 1 в бит источника IRQ регистра STATUS. Маска IRQ в регистре CONFIG используется для выбора источников IRQ, которым разрешено переводить в лог. 0 уровень на ножке IRQ. Путем установки в лог. 1 битов MASK соответствующий источник IRQ запрещается. По умолчанию все источники IRQ разрешены.
Примечание: 3 бита информации о канале (pipe) в регистре STATUS обновляется при переходе уровня на ножке IRQ от уровня лог. 1 к лог. Эта информация ненадежна, если регистр STATUS считывается во время перехода уровня на IRQ от лог. 1 от лог. 0.
[Карта регистров nRF24L01+]
Все не определенные (зарезервированные) биты в таблице 28 ниже являются избыточными. Они считываются как лог. 0.
Таблица 28. Регистры nRF24L01+ и их биты.
Адр. (HEX)
Мнемоника
Бит
Значение сброса
Тип
Описание
00
CONFIG
Регистр конфигурации
Зарезервирован
7
0
R/W
Разрешен только лог. 0.
MASK_RX_DR
6
0
R/W
Маска прерывания, вызванного RX_DR. 1: прерывание не сигнализируется активным уровнем ножки IRQ. 0: RX_DR вызывает появление активного лог. 0 на ножке IRQ.
MASK_TX_DS
5
0
R/W
Маска прерывания, вызванного TX_DS. 1: прерывание не сигнализируется активным уровнем ножки IRQ. 0: TX_DS вызывает появление активного лог. 0 на ножке IRQ.
MASK_MAX_RT
4
0
R/W
Маска прерывания, вызванного MAX_RT. 1: прерывание не сигнализируется активным уровнем ножки IRQ. 0: MAX_RT вызывает появление активного лог. 0 на ножке IRQ.
EN_CRC
3
1
R/W
Разрешение использования CRC. Принудительно устанавливается в лог. 1, если один из бит EN_AA находится в лог. 1.
CRCO
2
0
R/W
Схема кодирования CRC. 0: 1 байт. 1: 2 байта.
PWR_UP
1
0
R/W
1: POWER UP (включение). 0: POWER DOWN (выключение).
PRIM_RX
0
0
R/W
Управление прием/передача (RX/TX). 1: PRX 0: PTX
01
EN_AA Enhanced ShockBurst™
Разрешение функции Auto Acknowledgment (разрешение Enhanced ShockBurst, что обеспечивает автоподтверждение). Запретите функционал Enhanced ShockBurst™ для обеспечения обратной совместимости с nRF2401.
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
ENAA_P5
5
1
R/W
Разрешение автоподтверждения для логического канала data pipe 5.
ENAA_P4
4
1
R/W
Разрешение автоподтверждения для логического канала data pipe 4.
ENAA_P3
3
1
R/W
Разрешение автоподтверждения для логического канала data pipe 3.
ENAA_P2
2
1
R/W
Разрешение автоподтверждения для логического канала data pipe 2.
ENAA_P1
1
1
R/W
Разрешение автоподтверждения для логического канала data pipe 1.
ENAA_P0
0
1
R/W
Разрешение автоподтверждения для логического канала data pipe 0.
02
EN_RXADDR
Разрешенные адреса RX
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
ERX_P5
5
0
R/W
Разрешение логического канала data pipe 5.
ERX_P4
4
0
R/W
Разрешение логического канала data pipe 4.
ERX_P3
3
0
R/W
Разрешение логического канала data pipe 3.
ERX_P2
2
0
R/W
Разрешение логического канала data pipe 2.
ERX_P1
1
1
R/W
Разрешение логического канала data pipe 1.
ERX_P0
0
1
R/W
Разрешение логического канала data pipe 0.
03
SETUP_AW
Настройка ширины адреса (общая для всех data pipe)
Зарезервированы
7:2
00
R/W
Разрешены только лог. 0.
AW
1:0
11
R/W
Ширина поля адреса RX/TX. 00: запрещенное значение 01: 3 байта 10: 4 байта 11: 5 байт Используется LSByte, если ширина адреса меньше 5 байт.
04
SETUP_RETR
Настройка автоповтора (Automatic Retransmission)
ARD(a)
7:4
0000
R/W
Задержка автоповтора (Auto Retransmit Delay, ARD). 0000: 250 мкс 0001: 500 мкс 0010: 750 мкс ... 1111: 4000 мкс Задержка определена от конца передачи до начала следующей передачи(b).
ARC
3:0
0011
R/W
Количество разрешенных автоповторов (Auto Retransmit Count, ARC). 0000: автоповтор запрещен 0001: до одного автоповтора при пропадании автоподтверждения ... 1111: до 15 автоповторов при пропадании автоподтверждения
05
RF_CH
Настройка ширины адреса (общая для всех data pipe)
Зарезервирован
7
0
R/W
Разрешен только лог. 0.
RF_CH
6:0
0000010
R/W
Устанавливает рабочий радиоканал для nRF24L01+.
06
RF_SETUP
Регистр настройки RF
CONT_WAVE
7
0
R/W
При лог. 1 разрешает непрерывное излучение немодулированной несущей.
Зарезервирован
6
0
R/W
Разрешен только лог. 0.
RF_DR_LOW
5
0
R/W
Бит принудительной установки низкой скорости по радио. Устанавливает скорость передачи радиоканала (RF Data Rate) 250kbps. См. бит RF_DR_HIGH для кодирования скоростей.
PLL_LOCK
4
0
R/W
Принудительно устанавливает сигнал захвата ФАПЧ. Используется только для тестирования.
RF_DR_HIGH
3
1
R/W
Бит кодирования скоростей по радиоканалу. Этот бит не имеет значения, если установлен бит RF_DR_LOW. Кодирование вариантов выбора скоростей [RF_DR_LOW:RF_DR_HIGH]: 00: 1Mbps 01: 2Mbps 10: 250kbps 11: зарезервированное значение
RF_PWR
2:1
11
R/W
Устанавливает выходную мощность RF при передаче (TX). 00: -18 dBm 01: -12 dBm 10: -6 dBm 11: -0 dBm
Устарел
0
0
Не имеет значения.
07
STATUS
Регистр состояния. Выводится через ножку MISO, когда MCU вдвигает через ножку MOSI команду.
Зарезервирован
7
0
R/W
Разрешен только лог. 0.
RX_DR
6
0
R/W
Прерывание готовности данных (Data Ready RX FIFO). Устанавливается, когда новые данные поступили в стек RX FIFO(c). Для очистки этого бита в него записывается лог. 1.
TX_DS
5
0
R/W
Прерывание передачи (Data Sent TX FIFO). Устанавливается, когда пакет передан в режиме TX. Если активирована функция AUTO_ACK, то этот бит установится только когда принят пакет ACK. Для очистки этого бита в него записывается лог. 1.
MAX_RT
4
0
R/W
Прерывание достижения максимального количества повторных передач в режиме TX. Для очистки этого бита в него записывается лог. 1. Если установился MAX_RT, то он должен быть очищен для разрешения дальнейшего обмена данными.
RX_P_NO
3:1
111
R
Номер канала данных для полезной нагрузки, доступной для чтения из RX_FIFO. 000-101: номер логического канала данных (Data Pipe) 110: не используется 111: RX FIFO пуст
TX_FULL
0
0
R
Флаг переполненности TX FIFO. 1: TX FIFO заполнен. 0: в стеке TX FIFO есть свободные ячейки.
08
OBSERVE_TX
Регистр информации о передаче
PLOS_CNT
7:4
0000
R
Счетчик потерянных пакетов. Это счетчик не переполняется при достижении максимального значения 15, и на этом значении останавливает счет, пока не будет сброшен. Сброс этого счетчика осуществляется записью RF_CH.
ARC_CNT
3:0
00000
R
Счетчик повторных передач. Этот счетчик сбросится, когда начнется передача нового пакета.
09
RPD
Регистр состояния. Выводится через ножку MISO, когда MCU вдвигает через ножку MOSI команду.
Зарезервированы
7:1
0000000
R
RPD
0
0
R
Детектор принятого сигнала (Received Power Detector, RPD). В микросхеме nRF24L01 этот регистр называется детектор несущей (Carrier Detect, CD). В nRF24L01+ имя отличается из-за другого уровня порога детектора. См. выше секцию "Измерения RPD".
0A
RX_ADDR_P0
39:0
0xE7E7E7E7E7
R/W
Адрес приема для data pipe 0, максимальная длина 5 байт (LSByte записывается первым. Записанное количество байт определяется значением SETUP_AW).
0B
RX_ADDR_P1
39:0
0xC2C2C2C2C2
R/W
Адрес приема для data pipe 0, максимальная длина 5 байт (LSByte записывается первым. Записанное количество байт определяется значением SETUP_AW).
0C
RX_ADDR_P2
7:0
0xC3
R/W
Адрес приема для data pipe 2, только 1 младший байт LSByte. Старшие байты равны RX_ADDR_P1[39:8].
0D
RX_ADDR_P3
7:0
0xC4
R/W
Адрес приема для data pipe 3, только 1 младший байт LSByte. Старшие байты равны RX_ADDR_P1[39:8].
0E
RX_ADDR_P4
7:0
0xC5
R/W
Адрес приема для data pipe 4, только 1 младший байт LSByte. Старшие байты равны RX_ADDR_P1[39:8].
0F
RX_ADDR_P5
7:0
0xC6
R/W
Адрес приема для data pipe 5, только 1 младший байт LSByte. Старшие байты равны RX_ADDR_P1[39:8].
10
TX_ADDR
39:0
0xE7E7E7E7E7
R/W
Адрес передачи, используется только для устройства PTX (LSByte записывается первым). Установка RX_ADDR_P0, равная адресу TX_ADDR, обеспечивает функцию автоподтверждения, если на устройстве PTX разрешена функция Enhanced ShockBurst™. См. далее Приложение A.
11
RX_PW_P0
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P0
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 0 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
12
RX_PW_P1
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P1
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 1 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
13
RX_PW_P2
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P2
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 2 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
14
RX_PW_P3
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P3
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 3 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
15
RX_PW_P4
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P4
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 4 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
16
RX_PW_P5
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
RX_PW_P5
5:0
0
R/W
Количество байт полезной нагрузки RX в канале data pipe 5 (от 1 до 32 байт). 0: канал не используется 1: 1 байт ... 32: 32 байта
17
FIFO_STATUS
Регистр состояния стека FIFO
Зарезервирован
7
0
R/W
Разрешен только лог. 0.
TX_REUSE
6
0
R
Используется для устройства PTX. Выдайте импульс CE длительностью как минимум 10 мкс, чтобы повторно использовать переданную полезную нагрузку. Переданная полезная нагрузка TX активна, пока не будет выполнена команда W_TX_PAYLOAD или FLUSH_TX. TX_REUSE устанавливается командой REUSE_TX_PL, и сбрасывается командами W_TX_PAYLOAD или FLUSH_TX.
TX_FULL
5
0
R
Флаг переполненности TX FIFO. 1: стек TX FIFO заполнен. 0: в стеке TX FIFO есть доступные ячейки.
TX_EMPTY
4
1
R
Флаг опустошенности TX FIFO. 1: стек TX FIFO пуст. 0: в TX FIFO есть данные.
Зарезервированы
3:2
00
R/W
Разрешены только лог. 0.
RX_FULL
1
0
R
Флаг переполненности RX FIFO. 1: стек RX FIFO заполнен. 0: в стеке RX FIFO есть доступные ячейки.
RX_EMPTY
0
1
R
Флаг опустошенности RX FIFO. 1: стек RX FIFO пуст. 0: в RX FIFO есть данные.
N/A
ACK_PLD
255:0
x
W
Сюда записывается отдельной командой полезная нагрузка пакета ACK для канала данных номер PPP (номер канала указывается в команде W_ACK_PAYLOAD). Используется только в режиме RX. Может ожидать максимум 3 полезные нагрузки ACK-пакета. Полезные нагрузки с одинаковыми PPP обрабатываются по принципу первый зашел - первый вышел.
N/A
TX_PLD
255:0
x
W
Сюда записываются отдельной командой байты данных полезной нагрузки TX (от 1 до 32 байт). Этот регистр реализован как трехуровневый стек FIFO. Используется только в режиме TX.
N/A
RX_PLD
255:0
x
R
Регистр данных RX полезной нагрузки, считывается отдельной командой (считывается от 1 до 32 байт). Этот регистр реализован как трехуровневый FIFO. Все каналы RX используют один и тот же FIFO.
1C
DYNPD
Разрешение динамической длины полезной нагрузки
Зарезервированы
7:6
00
R/W
Разрешены только лог. 0.
DPL_P5
5
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 5 (разрешение требует установки EN_DPL и ENAA_P5).
DPL_P4
4
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 4 (разрешение требует установки EN_DPL и ENAA_P4).
DPL_P3
3
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 3 (разрешение требует установки EN_DPL и ENAA_P3).
DPL_P2
2
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 2 (разрешение требует установки EN_DPL и ENAA_P2).
DPL_P1
1
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 1 (разрешение требует установки EN_DPL и ENAA_P1).
DPL_P0
0
0
R/W
Разрешение динамической длины полезной нагрузки для канала data pipe 0 (разрешение требует установки EN_DPL и ENAA_P0).
1D
FEATURE
Регистр функций
Зарезервированы
7:3
00000
R/W
Разрешены только лог. 0.
EN_DPL
2
0
R/W
Разрешение динамической длины полезной нагрузки.
EN_ACK_PAY(d)
1
0
R/W
Разрешение передачи полезной нагрузки вместе с ACK.
EN_DYN_ACK
0
0
R/W
Разрешение команды W_TX_PAYLOAD_NOACK.
Примечания:
(a) Будьте внимательны при установке этого параметра. Если полезная нагрузка ACK больше 15 байт в режиме скорости 2Mbps, то параметр ARD должен быть 500 мкс или больше, если полезная нагрузка ACK больше 5 байт а режиме 1Mbps, то ARD должен быть 500 мкс или больше. В режиме скорости 250kbps (даже когда в ACK нет полезной нагрузки) ARD должен быть 500 мкс или больше. Для дополнительной информации см. выше секцию "Auto Retransmission (ART)". (b) Это время, в течение которого PTX ждет пакета ACK перед тем, как выполнить повторную отправку. Устройство PTX находится в режиме RX в течение 250 мкс (500 мкс в режиме скорости 250kbps), ожидая совпадения адреса. Если было детектировано совпадение адреса, устройство PTX остается в режиме RX до завершения приема пакета ACK, даже если истекло время ARD. Затем устройство PTX перейдет в режим Standby-II на оставшуюся часть указанного времени ARD. После ARD устройство PTX перейдет в режим TX и затем повторно передаст пакет. (c) Прерывание RX_DR IRQ устанавливается по событию поступления нового пакета. Процедура для обработки этого прерывания должна быть следующая: 1) чтение полезной нагрузки через SPI, 2) очистка RX_DR IRQ, 3) чтение FIFO_STATUS для проверки, есть ли еще полезные нагрузки в RX FIFO, 4) если в RX FIFO есть еще доступные данные полезной нагрузки, то процедура повторяется начиная с шага 1). (d) Если активирована полезная нагрузка пакета ACK, то у пакетов ACK динамическая длина полезной нагрузки, и должна быть разрешена функция Dynamic Payload Length для pipe 0 на устройствах PTX и PRX. Это делается для гарантии, что они получат пакеты ACK с полезными нагрузками. Если полезная нагрузка ACK больше 15 байт в режиме скорости 2Mbps, то параметр ARD должен быть 500 мкс или больше, если полезная нагрузка ACK больше 5 байт а режиме 1Mbps, то ARD должен быть 500 мкс или больше. В режиме скорости 250kbps (даже когда в ACK нет полезной нагрузки) ARD должен быть 500 мкс или больше.
[Информация о периферии RF]
В этом разделе описывается периферийная схемотехника и требования к разводке печатной платы, что важно для достижения оптимальных параметров по радиочастоте для nRF24L01+.
Выход на антенну. Ножки ANT1 и ANT2 предоставляют балансный вывод RF на антенну. Эти ножки должны получать питание по постоянному току от VDD_PA, либо через радиочастотный дроссель, либо через среднюю точку сбалансированной дипольной антенны. Для оптимальной выходной мощности (0dBm) рекомендуется нагрузка 15Ω+j88Ω. Более низкий импеданс (например 50Ω) может быть получен путем простой согласующей цепи между нагрузкой и ANT1 / ANT2. Рекомендуемая согласующая цепочка для нагрузки 50Ω описывается далее в разделе "Пример применения".
Кварцевый генератор. Используемый вместе с nRF24L01+ кварц должен удовлетворять параметрам, показанным в таблице 11.
Чтобы достичь низкого потребления энергии и быстрого запуска кварцевого генератора, используйте кварцевый резонатор с низким значением емкостной нагрузки. Пониженное значение C0 также дает более низкий потребляемый ток и ускоренный запуск генератора, но при этом может увеличиться стоимость кварцевого резонатора. Типовое значение C0=1.5 пФ на кварце указано для C0max=7.0 пФ.
Емкость нагрузки кварца CL, вычисляется по формуле:
C1' - C2' CL = ----------- C1' + C2'
Здесь C1’ = C1 + CPCB1 +CI1 и C2’ = C2 + CPCB2 + CI2.
C1 и C2 это два конденсатора SMD, см. схему применения на рис. 32. CPCB1 и CPCB2 это паразитные емкости печатной платы. CI1 и CI2 это внутренняя емкость нагрузки выводов XC1 и XC2 соответственно, для них типовое значение для обоих выводов 1 пФ.
Есть возможность подачи тактового сигнала на ножку XC1 трансивера nRF24L01+, что позволяет использовать один и тот же кварцевый резонатор вместе с MCU хоста.
Параметры кварца. MCU устанавливает требования по емкости нагрузки CL, когда он подает тактовый сигнал на вход nRF24L01+. Точность частоты ±60ppm необходима для функциональности радиоканала связи. Микросхема nRF24L01+ нагружает кварц емкостью 1 пФ в дополнение к емкости дорожек PCB.
Амплитуда сигнала на входе и потребление тока. Перепады уровня сигнала на ножке XC1 не должны превышать ни одно из напряжений шин питания. Если не выполнить это требование, то пробиваются цепочки защиты ESD по входу, в результате чего ухудшаются параметры радиообмена.
Рис. 31. Принцип работы кварцевого генератора.
У кварцевого генератора nRF24L01+ имеется внутренняя регулировка по амплитуде. Рекомендуется использовать входной сигнал с пиковым уровнем больше чем 0.4V, чтобы достичь низкого потребления энергии и хороших параметров соотношения сигнал/шум, когда используется внешний источник тактирования. В этом случае XC2 не используется, и может оставаться не подключенным.
Хорошо разработанная PCB нужна для обеспечения хороших параметров RF. Не продуманная разводка может ухудшить производительность или повлиять на функционирование устройства. Вы можете загрузить с сайта www.nordicsemi.no квалифицированную разводку радиотракта для nRF24L01+ и окружающих её компонентов, включая цепи согласования с антенной.
Для оптимальной производительности рекомендуется использовать PCB минимум из двух слоев и внутренним слоем заливки земли. Напряжение питания nRF24L01+ должно быть отфильтровано конденсаторами, расположенными как можно ближе к ножкам VDD. Эти конденсаторы должны обладать хорошими параметрами по RF, см. таблицу 29. Рекомендуется шунтировать большие SMD конденсаторы (например керамический 4.7 мкФ) конденсаторами меньшей емкости. Напряжение питания микросхемы nRF24L01+ должно быть отфильтровано и разведено отдельно от напряжений питания любых цифровых схем.
Избегайте использования длинных дорожек питания на PCB. Все соединения земли микросхемы, ножки VDD и блокирующие конденсаторы VDD должны соединяться как можно более короткими дорожками, конденсаторы должны находиться как можно ближе к корпусу микросхемы. Ножки VSS должны напрямую соединяться с заливкой медью на верхнем слое PCB. Рекомендуется создать переходные отверстия для соединения земли с обратной стороной платы и/или внутренними слоями как можно ближе к ножкам VSS. Должно быть как минимум одно переходное отверстие для каждой ножки VSS.
Сигналы цифровых данных или управления с большим перепадом уровней не должны прокладываться близко к кварцу или шинам питания микросхемы. Открытая площадка на донышке микросхемы соединяется с землей кристалла микросхемы, и в рекомендуемой разводке она намеренно не используется. Рекомендуется оставлять эту площадку не подключенной.
[Пример применения]
Рис. 32. Пример рабочей схемы nRF24L01+ для рекомендуемых разводок с недифференциальным выходом 50Ω RF.
Таблица 29. Список рекомендуемых компонентов (BOM) для nRF24L01+ с цепью согласования антенны.
RefDes
Номинал
Корпус
Описание
C1
22 пФ(a)
0402
NP0 ±2%
C2
C3
2.2 нФ
X7R ±10%
C4
4.7 пФ
NP0 ±0.25 пФ
C5
1.5 пФ
NP0 ±0.1 пФ
C6
1.0 пФ
C7
33 нФ
X7R ±10%
C8
1 нФ
С9
10 нФ
L1
8.2 нГн
Чип-индуктивность ±5%
L2
2.7 нГн
L3
3.9 нГн
R1
Не монтируется(b)
R2
22 кОм
±1%
U1
nRF24L01+
QFN20 4x4 мм
X1
16 МГц
±60 ppm, CL = 12 пФ
Примечания:
(a) Емкость C1 и C2 должна быть выбрана в соответствии с емкостью нагрузки кварца CL. (b) Пример использования nRF24L01+ и nRF24L01 и соответствующие списки BOM одинаковые, за исключением R1. R1 может быть смонтирован для обратной совместимости с nRF24L01. Использование внешнего резистора 1 Mohm никак не повлияет на параметры кварца.
Примеры разводки. Рисунки 33, 34 и 35 показывают пример разводки PCB для схемы применения на рис. 32. Антенна разведена в виде проводника на верхней стороне платы. Размер печатной платы этого примера 33.1089 x 15.0622 мм.
Используется двухсторонний фольгированный текстолит FR-4 толщиной 1.6 мм. На этой PCB реализована заливка медью земли на обратной стороне платы. Дополнительно есть также области заливки медью земли на стороне монтажа, чтобы гарантировать эффективное заземление и экранирование критических компонентов схемы. Большое количество переходных отверстий соединяют заливки земли на верхней стороне платы с заливкой земли на обратной стороне платы.
Рис. 33. Размещение компонентов с верхней стороны платы. Здесь реализована разводка радиоцепей nRF24L01+ с недифференциальным подключением антенны, размещенной в виде проводника на плате. Применены пассивные компоненты типоразмера 0402.
Рис. 34. Верхний слой разводки (Top).
Рис. 35. Нижний слой разводки (Bottom).
На следующих рисунках 36, 37 и 38 показана разводка для выхода на коннектор антенны SMA с волновым сопротивлением 50Ω. Размер печатной платы этого примера 22.7965 x 10.6299 мм.
Рис. 36. Размещение деталей с кварцем OFM и коннектором SMA.
Рис. 37. Верхний слой разводки (Top).
Рис. 38. Нижний слой разводки (Bottom).
[Приложение A. Пример конфигурации и обмена с применением Enhanced ShockBurst™]
2. Когда у MCU есть данные для передачи, через SPI запрограммируйте адрес для принимающего узла радиосети (TX_ADDR) и данные полезной нагрузки (TX_PLD). Ширина полезной нагрузки TX подсчитывается по количеству записанных байт в стек TX FIFO. TX_PLD должен записываться непрерывно, с удержанием сигнала CSN в лог. 0. TX_ADDR не нужно перезаписывать заново, если он не поменялся с момента последней передачи. Если устройство PTX должно принять подтверждение, сконфигурируйте data pipe 0 для приема ACK-пакета. Адрес RX для data pipe 0 (RX_ADDR_P0) должен совпадать с адресом TX (TX_ADDR) устройства PTX. Для примера на рис. 14 выполните следующие настройки адреса для устройства TX5 и устройства RX:
Устройство TX5: TX_ADDR = 0xB3B4B5B605 Устройство TX5: RX_ADDR_P0 = 0xB3B4B5B605 Устройство RX: RX_ADDR_P5 = 0xB3B4B5B605
3. Сгенерируйте импульс на выводе CE, чтобы запустить передачу. Длительность этого импульса должна быть как минимум 10 мкс.
4. nRF24L01+ ShockBurst™:
- Включается питание радиотракта. - Запускается внутреннее тактирование 16 МГц. - Создается пакет RF (см. описание пакета). - Передаются данные (на скорости 1Mbps или 2Mbps, как сконфигурировал MCU).
5. Если активировано автоподтверждение (ENAA_P0=1), радиотракт немедленно перейдет в режим RX, если в пакете не был установлен бит NO_ACK. Если был принят правильный ACK-пакет в допустимом окне времени для подтверждения, то передача считается успешной. Установится в лог. 1 бит TX_DS в регистре STATUS, и полезная нагрузка переданного пакета удаляется из TX FIFO. Если не был принят правильный ACK-пакет в указанном окне времени, то полезная нагрузка передается повторно (если разрешена функция auto retransmit). Если счетчик auto retransmit (ARC_CNT) превысил запрограммированный максимум (ARC), то установится в лог. 1 бит MAX_RT регистра STATUS. В этом случае полезная нагрузка TX FIFO не удаляется. Если соответствующее IRQ разрешено маской, то ножка IRQ перейдет в активный уровень лог. 0 при установки любого из бит MAX_RT или TX_DS в регистре STATUS. Для перевода ножки IRQ в неактивное состояние лог. 1 необходимо записать регистр STATUS (см. выше секцию "Прерывание"). Если не был принят пакет ACK для переданного пакета после максимального количества повторных передач, то больше пакеты не передаются до очистки прерывания MAX_RT. Счетчик потерь пакетов (PLOS_CNT) инкрементируется при каждом прерывании MAX_RT. Т. е. ARC_CNT подсчитывает количество повторных передач, которые требовались для передачи одного пакета, а PLOS_CNT подсчитывает количество пакетов, которое не удалось передать после истечения максимального количества повторных передач.
6. Микросхема nRF24L01+ переходит в режим Standby-I, если ножка CE в лог. 0. Иначе будет передана следующая полезная нагрузка в TX FIFO. Если TX FIFO пуст, и CE все еще в лог. 1, то nRF24L01+ войдет в режим Standby-II.
7. Если nRF24L01+ находится в режиме Standby-II, то она немедленно перейдет в режим Standby-I, если ножка CE установлена в лог. 0.
1. Выберите режим RX установкой в лог. 1 бита PRIM_RX в регистре CONFIG. Все каналы данных (data pipe), которые принимают данные, должны быть разрешены (в регистре EN_RXADDR). Разрешите автоподтверждение для всех каналов, работающих как Enhanced ShockBurst™ (регистр EN_AA), и установите корректную ширину полезной нагрузки (регистры RX_PW_Px). Настройте адреса, как описано на шаге 2 в примере выше передачи полезной нагрузки под управлением Enhanced ShockBurst™.
2. Запустите активный режим RX переводом ножки CE в лог. 1.
3. После 130 мкс микросхема nRF24L01+ мониторит радиоканал на наличие входящего обмена данными.
4. Когда принят правильный пакет (у него совпал адрес и сошлась CRC), его полезная нагрузка сохраняется в RX-FIFO, и установится в лог. 1 бит RX_DR в регистре STATUS. Одновременно ножка IRQ перейдет в активный уровень лог. 0. RX_P_NO в регистре STATUS покажет, в каком канале data pipe была принята полезная нагрузка.
5. Если разрешено автоподтверждение, то обратно отправляется пакет ACK, если в принятом пакете не установлен бит NO_ACK. Если установлена полезная нагрузка в TX_PLD FIFO, то она добавляется к паету ACK.
6. MCU установит в лог. 0 ножку CE, чтобы перевести nRF24L01+ в режим Standby-I (режим пониженного потребления тока).
7. MCU может прочитать данные полезной нагрузки через интерфейс SPI.
8. nRF24L01+ теперь готова для входа в режим TX или режим RX, или в режим Power Down.
[Приложение B. Конфигурация для совместимости с nRF24XX]
1. Используйте ту же самую конфигурацию CRC, как у nRF2401/nRF2402/nRF24E1/nRF24E2.
2. Установите в лог. 0 бит PRIM_RX.
3. Установите в 0 счетчик автоповторов (Auto Retransmit Count), чтобы запретить функционал автоповторов.
4. Используйте ту же ширину адреса, как в nRF2401/nRF2402/nRF24E1/nRF24E2.
5. Используйте ту же самую частоту радиоканала, как у nRF2401/nRF2402/nRF24E1/nRF24E2.
6. Выберите скорость передачи данных по радио 1Mbps или 250kbps и для nRF24L01+, и для nRF2401/nRF2402/nRF24E1/nRF24E2.
7. Установите в лог. 1 бит PWR_UP.
8. Запрограммируйте полезную нагрузку той же длины как была сконфигурирована для приема в nRF2401/nRF2402/nRF24E1/nRF24E2.
9. Сгенерируйте импульс CE для передачи пакета.
[Приложение C. Вывод сигнала несущей для тестирования]
Выходная мощность радиотракта это критический фактор для обеспечения желаемого радиуса действия. Выходная мощность также первый критерий проверки, необходимый для квалификации по всем регуляторным требованиям телекоммуникаций.
Конфигурация:
1. Установите PWR_UP = 1 и PRIM_RX = 0 в регистре CONFIG. 2. Подождите 1.5 мс PWR_UP -> standby. 3. Установите в регистре RF: CONT_WAVE = 1, PLL_LOCK = 1, RF_PWR. 4. Установите желаемый канал RF. 5. Установите в лог. 1 ножку CE. 6. Удерживайте в лог. 1 ножку CE, пока необходима генерация несущей.
Примечание: не используйте REUSE_TX_PL вместе с CONT_WAVE = 1. Когда оба эти регистра установлены, микросхема не реагирует при установке лог. 0 на ножке CE. Однако если оба регистра установлены в PWR_UP = 0, режим TX выключен.
Теперь nRF24L01+ должна выводить немодулированную несущую на центральной частоте.
Для организации узлов сети ISM я спаял два простых макета. Модули nRF24L01+ соединяются с хостом на ATmega32A, установленном на макетной плате AVR-USB-MEGA16 [4]. Можно применить и другие платы, например платы Arduino, как было сделано в обзоре [5].
Модули nRF24L01+ подключаются к микроконтроллеру ATmega32A по простой схеме, тремя аппаратными сигналами SPI (сигналы SCK, MOSI, MISO) и двумя ножками GPIO (сигналы CE и CSN). В качестве программного интерфейса использовалась библиотека от maniacbug [6]. По этой причине сигнал прерывания IRQ от радиомодуля необязателен, потому что в библиотеке он не используется.
Назначение сигналов подключения радиомодуля:
Pin
Сигнал
Описание
1
GND
Общий провод сигналов, минус питания.
2
VCC
Питание +3.3V.
3
CE
Сигнал активации режима RX или TX, активный уровень лог. 1 (вход радиомодуля).
4
CSN
Сигнал выборки SPI, активный уровень лог. 0 (вход радиомодуля).
5
SCK
Сигнал тактов SPI (вход радиомодуля).
6
MOSI
Сигнал данных SPI (вход радиомодуля).
7
MISO
Сигнал данных SPI (выход радиомодуля).
8
IRQ
Сигнал прерывания событий радиомодуля (выход радиомодуля). В программе не используется.
Для питания радиомодуля nRF24L01+ установлен стабилизатор на 3.3V. Обратите внимание, что несмотря на то, что радиомодуль питается от 3.3V, питание у ATmega32A 5V, и нет никакого специального согласования уровней логики для цифрового интерфейса. Такое упрощение стало возможным потому, что nRF24L01+ допускает уровни логики +5V на входе, а его выходные сигналы логики с уровнем +3V совместимы с лог. 1 уровней логики ATmega32A.
Проект был реализован в среде Microchip Studio 7.0.2542 (это Atmel Studio, переименованная после поглощения Atmel) компанией Microchip. Один узел постоянно передает пакеты, а другой их принимает и передает обратно (использовался пример GettingStarted библиотеки [6]). Если приемник принял пакет, он мигает светодиодом D1 макетной платы AVR-USB-MEGA16.
Код передатчика:
RF24 radio;
// Адреса логических каналов (pipe) адреса для обмена между двумя узлами.constuint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
// Это роль "передатчика", который инициирует обмен, отправляя запрос// и принимая обратно подтверждение:
role_e role = role_ping_out;
// Настройка и конфигурирование радиотракта nRF24L01+:
radio.begin();
// Опционально, увеличение задержки между повторами, и увеличение// количества повторов:
radio.setRetries(15,15);
// Этот простой скетч открывает 2 канала (pipe) для двух узлов// радиообмена, чтобы передавать данные туда и обратно.// Открытие канала 'наш' для записи.// Открытие канала 'другой' для чтения, в позиции #1 (всего у нас// есть возможность открыть до 5 каналов для чтения).if ( role == role_ping_out )
{
radio.openWritingPipe(pipes[0]);
//radio.openReadingPipe(1,pipes[1]);
}
else
{
//radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
while (1)
{
// Сначала делается остановка прослушивания, чтобы// мы могли что-то передат по радиоканалу:
radio.stopListening();
// Создание полезной нагрузки и её отправка. Это приведет// к блокировке, пока отправка не завершится.unsignedlong payload =0xDEADBEEF;
LED(1);
radio.write( &payload, sizeof(unsignedlong) );
// Теперь продолжим прослушивание.
radio.startListening();
// Подождем здесь до получения ответа или истечения// таймаута (250 мс):
t1timeout =250;
t1to_elapsed =false;
while ( !radio.available() &&!t1to_elapsed )
if ( !t1to_elapsed )
{
// Успешный прием:unsignedlong got_payload;
radio.read( &got_payload, sizeof(unsignedlong) );
LED(0);
}
// Через 0.1 секунды повтор:
_delay_ms(100);
}
Код приемника:
RF24 radio;
// Адреса логических каналов (pipe) адреса для обмена между двумя узлами.constuint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
// Это роль "приемника", который принимает запрос и отправляет его// обратно:
role_e role = role_pong_back;
// Настройка и конфигурирование радио:
radio.begin();
// Опционально, увеличение задержки между повторами, и увеличение// количества повторов:
radio.setRetries(15,15);
// Этот простой скетч открывает 2 канала (pipe) для двух узлов// радиообмена, чтобы передавать данные туда и обратно.// Открытие канала 'наш' для записи.// Открытие канала 'другой' для чтения, в позиции #1 (всего у нас// есть возможность открыть до 5 каналов для чтения).if ( role == role_ping_out )
{
radio.openWritingPipe(pipes[0]);
//radio.openReadingPipe(1,pipes[1]);
}
else
{
//radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
}
// Запуск прослушивания радиоканала
radio.startListening();
while (1)
{
// Если готовы данныеif ( radio.available() )
{
LED(1);
// Чтение полезных нагрузок, пока не получим все что есть:unsignedlong got_payload;
bool done =false;
while (!done)
{
// Выборка полезной нагрузки и проверка, была ли// она последней.
done = radio.read( &got_payload, sizeof(unsignedlong) );
// Небольшая задержка, чтобы другой узел успел переключиться// с передачи на прием:
_delay_ms(20);
}
LED(0);
// Сначала остановка прослушивания, чтобы можно было передавать:
radio.stopListening();
// Отправка последнего сообщения обратно.
radio.write( &got_payload, sizeof(unsignedlong) );
// Теперь возобновим прослушивание радиоканала, чтобы можно// получить следующие пакеты:
radio.startListening();
}
}
}
Проект полностью можно скачать по ссылке [7].
[Словарик]
ACK Acknowledgement, подтверждение.
ACS Adjacent Channel Selectivity, селективность по соседнему каналу.
AGC Automatic Gain Control, автоматическая регулировка усиления.
ART Auto Re-Transmit, автоматическая повторная передача.
BER bit error rate, частота возникновения ошибок.
BOM Bill Of Materials, список используемых материалов.