NRF24L01, NRF24L01+

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Для NRF24L01 пойдёт любой МК ... хоть мега... хоть тинька.
Последний раз редактировалось roman.com Сб окт 06, 2018 18:29:13, всего редактировалось 1 раз.
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: NRF24L01, NRF24L01+

Сообщение Mishany »

тини13а с програмным spi должна подойти, ног хватит
Реклама
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Да, тини13 пойдет. - 5 ног (не сичтая ресет) - какраз столько и надо для NRF24L01.
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: NRF24L01, NRF24L01+

Сообщение java »

Не нашёл я что-то готовых проектов на тини13, и где то давно ещё читал что у неё spi только на вход.
а вот на Attiny85 кое что проскакивает, вечером почитаю по подробней.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Реклама
Эиком - электронные компоненты и радиодетали
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

java писал(а):где то давно ещё читал что у неё spi только на вход.
Это где такие глупости пишут? ))
java писал(а):Не нашёл я что-то готовых проектов на тини13
Есть проект на меги8 - viewtopic.php?f=3&t=148123&start=25

который быстро (за 5 минут) переделывается в проект на тини13... если есть чёткое описание принципа работы (тех задание).
Реклама
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: NRF24L01, NRF24L01+

Сообщение Mishany »

открою секрет, в тини13/85 вообще нет аппаратного спи
Реклама
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Посмотрел даташит... Да, по даташиту нет)) А программный SPI не подходит? Почему?
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: NRF24L01, NRF24L01+

Сообщение Mishany »

я сразу писал про программный спи на тиньке
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: NRF24L01, NRF24L01+

Сообщение a5021 »

тини13 -- все-таки не лучший вариант из-за ограниченности ресурсов.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: NRF24L01, NRF24L01+

Сообщение Mishany »

для одной команды в самый раз
Millyvolt
Родился
Сообщения: 10
Зарегистрирован: Ср дек 16, 2015 22:58:13

Re: NRF24L01, NRF24L01+

Сообщение Millyvolt »

Доброе время суток!
У меня домашняя метеостанция на этих модулях, один модуль был на балконе, раз в несколько секунд слал данные (температура, влажность, давление) на модуль в комнате, данные приходили как правило, пакеты редко терялись.
Купил естественно в Китае, по 40р штука.
Микроконтроллер STM32F103, модуль blue pill.
В регистрах делал минимум изменений, режим ESBst, то есть с автоматическим подтверждением получения пакета, для этого ничего не менял, адреса pipe0 и Tx уже стоят в этих модулях 0xE7E7E7E7E7, я устанавливал в приёмном модуле значение payload в pipe0 равное 5 байтам, ну и соответственно в регистре конфиг включал модуль (PWR_UP), и в приёмнике RX=1.
И всё это работало несколько месяцев.
Потом я решил переписать инициализацию железа, сделал всё на регистрах и CMSIS, всё остальное осталось как было, после этого перестала работать передача, или приём, чёрт его знает на самом деле...)
Пробовал менять NRF модули между собой, всего их у меня 4 штуки.
Отладку произвожу в Visual Studio в связке с VisualGDB, и при запуске программы на чипе STM32 в режиме отладки, проходит самая первая посылка и далее тишина)) когда чип работает не в режиме отладки, ничего не передаётся вообще.
Вывожу значения всех регистров по UART - все значения какими и должны быть стандартные при инициализации NRF, те которые я менял имеют установленные мной значения.
Что ещё происходит - через каждые 3 передачи (или попытки передачи) происходит заполнение буфера TX FIFO и он очищается.
могу выложить значения регистров кому интересно.
Кондёры по питанию ставить не пробовал, если надо, то уточните пожалуйста номиналы, потому как на разных форумах пишут разное.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: NRF24L01, NRF24L01+

Сообщение Mishany »

намудрил с проверкой флагов по передачи/приема по SPI
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Почему все упорно используют всякие pipe0... ACK... :facepalm: Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826
Millyvolt
Родился
Сообщения: 10
Зарегистрирован: Ср дек 16, 2015 22:58:13

Re: NRF24L01, NRF24L01+

Сообщение Millyvolt »

[uquote="Mishany",url="/forum/viewtopic.php?p=3682727#p3682727"]намудрил с проверкой флагов по передачи/приема по SPI[/uquote]
У передатчика флаг TX_DS не устанавливается, потому что данные не отправляются, у приёмника RX_DR не устанавливается потому что данные не принимаются.
Что там ещё можно намудрить с флагами?)
Один только TX_FULL периодически устанавливается у передатчика и всё.

Добавлено after 5 minutes 23 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=3682772#p3682772"]Почему все упорно используют всякие pipe0... ACK... :facepalm: Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826[/uquote]
Отключал ACK, абсолютно ничего не поменялось, как не было связи так и нет.
А чем pipe0 хуже работает чем например pipe1 или pipe5?)
То есть переключусь на pipe2, скажем, и все сразу заработает?)

Не работает оно потому что это китайское говно, которое надо заставлять работать и даже если тебе это удастся в конце концов, ты никогда не можешь быть уверен что оно не откажет в самый неподходящий момент...
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Millyvolt писал(а):есть переключусь на pipe2, скажем, и все сразу заработает?)
В NRF24L01+ есть куча настроек и режимов. Там можно всё включать и отключать. Даже CRC можно отключить.
Есть ещё куча тестовых режимов... NRF24L01+ может вообще работать в режиме OOK модуляции ))

Я не использую никаких pipe... (я просто отключаю режим Enhanced ShockBurst):
1.jpg
(90.06 КБ) 472 скачивания
Я не использую никаких MultiCeiver:
2.jpg
(107.88 КБ) 453 скачивания
Я использую режим совместимости со старыми версиями:
3.jpg
(152.21 КБ) 360 скачиваний
У меня ещё ни разу не отказывало. ))
Millyvolt
Родился
Сообщения: 10
Зарегистрирован: Ср дек 16, 2015 22:58:13

Re: NRF24L01, NRF24L01+

Сообщение Millyvolt »

Как можно не использовать pipe? Может вы поменяли архитектуру чипа?)
Если вы не используете никаких pipe, значит вы скорее всего используете pipe0, который настроен по умолчанию.
Своей библиотекой пользуетесь?
Да, ACK, он же ESB, можно отключить, записью в один регистр. Это помогает когда вместе используются NRF поддельные и оригинальные, или качественные подделки и менее качественные, которые инвертируют бит в посылке.
У меня подделки одной партии, между собой не отличающиеся, поэтому мне это отключение ACK не поможет, одинаково хреново с ним и без))
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

архитектуру чипа я не менял))
[uquote="roman.com",url="/forum/viewtopic.php?p=3683468#p3683468"]Я не использую никаких pipe...[/uquote]
Правильней сказать так: я всегда использую только pipe0, который настроен по умолчанию.

Я использую NRF24L01+ для радиоуправления, умного дома и т.д.
Я не использую никакие Enhanced ShockBurst, MultiCeiver, ACK, RETR (Automatic Retransmission) и т.д.
Я не использую флаги TX_DS, RX_DR, TX_FULL и т.д. Я не использую Interrupt IRQ (только STATUS).
Всё это мешает радиоуправлению.
Millyvolt писал(а):Своей библиотекой пользуетесь?
Я вообще не пользуюсь библиотеками)) Я просто прописываю все регистры NRF24L01+ в программе (через функции) и всё))
Я меняю все параметры NRF24L01+ программно (Адрес, Выходная мощность, Частота и т.д.).
Всё прекрасно работает. https://www.youtube.com/watch?v=QPIcjcUwXwU
Garry1301
Родился
Сообщения: 10
Зарегистрирован: Сб фев 24, 2024 14:33:52

Re: NRF24L01, NRF24L01+

Сообщение Garry1301 »

roman.com писал(а):
Я не использую никакие Enhanced ShockBurst, MultiCeiver, ACK, RETR (Automatic Retransmission) и т.д.
Вот только начал знакомиться с этими радиомодулями...

И мне тоже надо отказаться от ACK и все что там наворочено для максимально быстрой передачи N десятков байт туда,
и потом получить ответ обратно. Т.е. если рассматривать 2 устройства, то с точки зрения приема/передачи они равносильны,
просто мастер всегда первым спрашивает, а подчиненный должен ответить.
Рассчитывал, что удастся связать 2 устройства при помощи прописки перекрестных значений адресов TX_ADDR и RX_ADDR_0
в этих модулях: У одного TX_ADDR = 2, RX_ADDR_0 = 1, у другого TX_ADDR = 1, RX_ADDR_0 = 2 - так получиться связать их или нет?

Но у меня проблема подружиться с радиомодулем:
1) при включении питания и проверке регистра CONFIG я вижу это: PWR_UP, PTX, CRC_2B - что уже противоречит значениям по умолчанию из документации ! (использую мыслимые и немыслимые задержки после включения перед проверкой регистра).
Сделать PWR_UP = 0 и CRC_1B не позволяет (просто ничего не меняется в регистре).
2) Запись в EN_AA 0x00 ни к чему не приводит, значение в регистре остается предыдущим (3F).
Обманным путем удалось установить EN_AA = 0x02, EN_RXADDR = 0x01. Но не этого хочется достичь.
3) Запись в регистр SETUP_RETR 0x00 не проходит, минимум что дает 0x01. - 1 ретрансмиссия.

Кто сталкивался с подобными явлениями, помогите, плиз.
Казалось все по документации ясно и понятно, хочешь использовать фичи, пользуй, не хочешь, отключай, а отключить не дает.
Может регистры зависимые, и железяка хочет строгого порядка установки их?

P.S. Модуль EBYTE E01-2G4M27D
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: NRF24L01, NRF24L01+

Сообщение roman.com »

Garry1301 писал(а):Может регистры зависимые, и железяка хочет строгого порядка установки их?
нет никакой зависимости...
нет никакой последовательности...

запись регистров рекомендуется производить при отключенном выводе CE (логический "0").

тут рабочий проект на NRF24L01, NRF24L01+...

https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
Garry1301
Родился
Сообщения: 10
Зарегистрирован: Сб фев 24, 2024 14:33:52

Re: NRF24L01, NRF24L01+

Сообщение Garry1301 »

roman.com писал(а): тут рабочий проект на NRF24L01, NRF24L01+...

https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
Спасибо, посмотрю.
Я нашел баг у себя в программе, под общую защиту от нулов и нулевых длин попали и функции SPI с передачей по значению :))
Вот нули и не проходили.
Ответить

Вернуться в «Теория»