» » » Трансивер 2,4 ГГц Nordic Semiconductor nRF24L01. Перевод таблиц даташита, пояснения и коды для организации сети

 
 
 

Трансивер 2,4 ГГц Nordic Semiconductor nRF24L01. Перевод таблиц даташита, пояснения и коды для организации сети

Разместил erbol 9 июня 2016. Просмотров: 6 353



Привет, датагорцы!
Выкладываю перевод таблиц из спецификации nRF24L01+, файл с пояснениями и исходники кодов, необходимые для организации радиосвязи между двумя трансиверами nRF24L01+.



Условия организации радиосвязи между двумя трансиверами

Для того, чтобы два трансивера могли «увидеть» друг друга, необходимо обеспечить идентичность следующих их параметров:
1. Несущая частота (регистр RF_CH, адрес – 0x05).
2. Скорость передачи данных (биты RF_DR_LOW, RF_DR_HIGH регистра RF_SETUP, адрес – 0x06)
3. RX-адрес приёмника (регистры RX_ADDR_P0-P5, адресa – 0x0A-0x0F) и TX-адрес передатчика (регистр TX_ADDR, адрес – 0x10). Кроме того, если используется авто-подтверждение, то RX_ADDR_P0 и TX_ADDR передатчика должны быть идентичны RX-адресу приёмника.
4. Ширина адреса (регистр SETUP_AW, адрес – 0x03)
5. Значение регистра RX_PW_Pn (адресa – 0x11-0x16) приёмника и длина отправляемых передатчиком данных. Последняя определяется количеством байт, записываемых после команды W_TX_PAYLOAD внутри одного передёргивания вывода CSN. Т.е., если предполагается обмен, к примеру, двухбайтовыми данными, то в регистр RX_PW_Pn приёмника записывается 2, а загрузка в стек TX_PLD передатчика производится следующим образом:
  cbi(nRF_PORT, CSN_pin);
  SPI_byte(W_TX_PAYLOAD);
  SPI_byte(byte_1);
  SPI_byte(byte_2);
  sbi(nRF_PORT, CSN_pin);     

6. В случае, если по одному и тому же каналу предполагается прём данных разной длины, выхода два:
а) Привести данные к единой, самой большой длине.
б) Разрешить для канала динамическую длину принимаемых данных (ДДПД). Для этого необходимо разрешить ДДПД глобально (бит EN_DPL регистра FEATURE адрес – 0x1D) и локально (регистр DYNPD адрес – 0x1С). Ширина поступивших данных определяется командой R_RX_PL_WID.

Дополнительные условия для работы приёмника

1. По сбросу каналы приёма 5-2 закрыты, поэтому для их активации необходимо записать 1 в биты ERX_P5-2 регистра EN_RXADDR (адрес – 0x02).
2. Запись команды W_REGISTER возможна только в режимах Power down и Standby, поэтому, прежде, чем менять содержимое регистров трансивера, находящегося в режиме приёмника (вывод CE – в 1), нужно, как минимум, сбросить вывод CE в 0.

Описание базовых функций трансивера (файл nRF_base.h)

Большинство регистров nRF24L01+ - восьми-битные, поэтому для работы с ними можно использовать функции nRF_write_byte() и nRF_read_byte().
Запись/чтения регистров большей длины производится с помощью функций nRF_write_array() и nRF_read_ array (). Для этого необходимо создать массив соответствующей длины и передать в функцию имя регистра/команды, имя массива, размер массива. Например, запись в FIFO передатчика трех-байтного слова происходит так:
uint8_t payload[3];
nRF_write_array(W_TX_PAYLOAD, payload, sizeof(payload));

а чтение из FIFO приёмника так:
uint8_t payload[3];
nRF_read_array(R_RX_PAYLOAD, payload, sizeof(payload));

Можно использовать указанные функции и для работы с одним байтом. В этом случае создается массив размером 1
uint8_t config[1] = (1<<EN_CRC) | (1<<PWR_UP) | (1<<PRIM_RX);
nRF_read_array(R_RX_PAYLOAD, config, sizeof(config));

либо просто переменная, но тогда в функции перед именем переменной ставится символ взятия адреса – амперсанд (&):
uint8_t config = (1<<EN_CRC) | (1<<PWR_UP) | (1<<PRIM_RX);
nRF_read_array(R_RX_PAYLOAD, &config, sizeof(config));


Описание функций трансивера (файл nRF24L01.h)

nRF_soft_reset()
В nRF24L01+ не предусмотрен аппаратный сброс, поэтому при сбросе управляющего МК в регистрах трансивера могут оставаться ранее записанные данные, что приведёт к сбоям в работе. Данная функция записывает в регистры nRF24L01+ значения столбца «Reset Value» карты регистров из даташита. Включена в состав функции nRF_init().

nRF_init()
Инициализирует протокол SPI, выдерживает 100 мс, необходимые согласно даташита трансивера и запускает функцию nRF_soft_reset().

Организация и топология сети

Приведённых функций достаточно для организации сети. Количество трансиверов в сети практически не ограничено, поскольку можно варьировать частоту (126 комбинаций), адреса и их размер, длину передаваемых/принимаемых данных.

В качестве одной ячейки сети можно рассматривать цепочку центр управления - посредник – управляемые модули. В этом случае, если не предусматривать обратную связь, трансивер ЦУ настраивается как приёмник, трансиверы модулей как передатчики, а трансивер посредника работает попеременно приёмником (принимая данные от модулей) и передатчиком (передавая данные ЦУ).

Файлы

Все таблицы по nRF24L01+ на русском:
nrf24l01_tables.7z | Файл 33,83 Kb загружен 28 раз.

Исходники для nRF24L01+
nrf24l01-codes.7z | Файл 2,23 Kb загружен 35 раз.

Спасибо за внимание!
Ербол (erbol)
Актобе, Казахстан
Профиль erbol
Мне 50 лет. Родился и вырос в г. Актюбинск (ныне - Актобе), Казахстан. Женат, воспитываю четверых прекрасных детей.

С программированием и электроникой имею может и не отдаленные, но весьма эпизодические отношения: в далекие и бурные 90-е годы аж прошлого века посчастливилось участвовать в автоматизации экспериментальной установки с использованием микропроцессорного комплекта КР580.

А пару лет назад мои сорванцы вдруг заинтересовались микроконтроллерами. Пришлось из дальних уголков памяти вытаскивать свои старые познания и стряхивать с них пыль.
 

Понравилось? Палец вверх!

  • всего лайков: 33

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Программная реализация протокола I2C на AVR в CodeVisionAVR... Пару лет назад, изучая Atmega8, я захотел программно реализовать работу с устройствами на шине i2c,...
Схема на Датагоре. Новая статья Визуализация для микроконтроллера. Часть 1. OLED дисплей 0.96" (128х64) на SSD1306... Добрый день, друзья! Эта статья открывает цикл, посвящённый средствам визуального отображения...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 3... Wireless Transceiver Module NRF24L01+ 2.4GHz, 4 шт. на Али Приветствую всех настоящих и будущих...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 2... Продолжаем разговор. Как-то раз мы с пацанами решили соединить радио-модуль «nRF24L01+» вот с таким...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 1... Доброго вам дня, уважаемые граждане и гости Датагор.ру - этого замечательного сообщества...
Схема на Датагоре. Новая статья Несколько функций для програмной реализации протокола I2C на AVR... Добрый день, дорогие друзья! Решил поделиться с вами несколькими функция для работы по протоколу...
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 8... Перейдем к изучению встроенных таймеров. Изучение прерываний и особенно таймеров в...
Схема на Датагоре. Новая статья Универсальный контроллер управления 7-сегментными LED индикаторами по двум проводам (Atmega16)... Занялся я конструированием нового устройства и встал вопрос — на чем отображать данные....
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 6... Продолжим разбор теоретических основ, без которых невозможно полноценное создание программ....
Схема на Датагоре. Новая статья Програмирование в AVR Studio 5 с самого начала. Часть 4... Сегодня рассмотрим программу “бегущих огней” и “бегущих теней”. Примеры “бегущих огней” можно найти...
Схема на Датагоре. Новая статья Микроконтроллерный регулятор мощности - 2... Учитывая замечания и предложение, поступившие в мой адрес после публикации статьи ...
Схема на Датагоре. Новая статья Микроконтроллер управляет дисплеем от телефона Siemens!... Многие радиолюбители собирают для себя какие-то конструкции. Иногда простейшие, иногда очень...

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew
Скопируйте текст вашего комментария на случай неверного ответа на контрольный вопрос.