NRF24L01, NRF24L01+
Для NRF24L01 пойдёт любой МК ... хоть мега... хоть тинька.
Последний раз редактировалось roman.com Сб окт 06, 2018 18:29:13, всего редактировалось 1 раз.
- Реклама
Да, тини13 пойдет. - 5 ног (не сичтая ресет) - какраз столько и надо для NRF24L01.
Не нашёл я что-то готовых проектов на тини13, и где то давно ещё читал что у неё spi только на вход.
а вот на Attiny85 кое что проскакивает, вечером почитаю по подробней.
а вот на Attiny85 кое что проскакивает, вечером почитаю по подробней.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Это где такие глупости пишут? ))java писал(а):где то давно ещё читал что у неё spi только на вход.
Есть проект на меги8 - viewtopic.php?f=3&t=148123&start=25java писал(а):Не нашёл я что-то готовых проектов на тини13
который быстро (за 5 минут) переделывается в проект на тини13... если есть чёткое описание принципа работы (тех задание).
- Реклама
Посмотрел даташит... Да, по даташиту нет)) А программный SPI не подходит? Почему?
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
- Сообщения: 10
- Зарегистрирован: Ср дек 16, 2015 22:58:13
Доброе время суток!
У меня домашняя метеостанция на этих модулях, один модуль был на балконе, раз в несколько секунд слал данные (температура, влажность, давление) на модуль в комнате, данные приходили как правило, пакеты редко терялись.
Купил естественно в Китае, по 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 и он очищается.
могу выложить значения регистров кому интересно.
Кондёры по питанию ставить не пробовал, если надо, то уточните пожалуйста номиналы, потому как на разных форумах пишут разное.
У меня домашняя метеостанция на этих модулях, один модуль был на балконе, раз в несколько секунд слал данные (температура, влажность, давление) на модуль в комнате, данные приходили как правило, пакеты редко терялись.
Купил естественно в Китае, по 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 и он очищается.
могу выложить значения регистров кому интересно.
Кондёры по питанию ставить не пробовал, если надо, то уточните пожалуйста номиналы, потому как на разных форумах пишут разное.
Почему все упорно используют всякие pipe0... ACK...
Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826
- Сообщения: 10
- Зарегистрирован: Ср дек 16, 2015 22:58:13
[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...
Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826[/uquote]
Отключал ACK, абсолютно ничего не поменялось, как не было связи так и нет.
А чем pipe0 хуже работает чем например pipe1 или pipe5?)
То есть переключусь на pipe2, скажем, и все сразу заработает?)
Не работает оно потому что это китайское говно, которое надо заставлять работать и даже если тебе это удастся в конце концов, ты никогда не можешь быть уверен что оно не откажет в самый неподходящий момент...
У передатчика флаг TX_DS не устанавливается, потому что данные не отправляются, у приёмника RX_DR не устанавливается потому что данные не принимаются.
Что там ещё можно намудрить с флагами?)
Один только TX_FULL периодически устанавливается у передатчика и всё.
Добавлено after 5 minutes 23 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=3682772#p3682772"]Почему все упорно используют всякие pipe0... ACK...
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826[/uquote]
Отключал ACK, абсолютно ничего не поменялось, как не было связи так и нет.
А чем pipe0 хуже работает чем например pipe1 или pipe5?)
То есть переключусь на pipe2, скажем, и все сразу заработает?)
Не работает оно потому что это китайское говно, которое надо заставлять работать и даже если тебе это удастся в конце концов, ты никогда не можешь быть уверен что оно не откажет в самый неподходящий момент...
В NRF24L01+ есть куча настроек и режимов. Там можно всё включать и отключать. Даже CRC можно отключить.Millyvolt писал(а):есть переключусь на pipe2, скажем, и все сразу заработает?)
Есть ещё куча тестовых режимов... NRF24L01+ может вообще работать в режиме OOK модуляции ))
Я не использую никаких pipe... (я просто отключаю режим Enhanced ShockBurst): Я не использую никаких MultiCeiver: Я использую режим совместимости со старыми версиями: У меня ещё ни разу не отказывало. ))
- Сообщения: 10
- Зарегистрирован: Ср дек 16, 2015 22:58:13
Как можно не использовать pipe? Может вы поменяли архитектуру чипа?)
Если вы не используете никаких pipe, значит вы скорее всего используете pipe0, который настроен по умолчанию.
Своей библиотекой пользуетесь?
Да, ACK, он же ESB, можно отключить, записью в один регистр. Это помогает когда вместе используются NRF поддельные и оригинальные, или качественные подделки и менее качественные, которые инвертируют бит в посылке.
У меня подделки одной партии, между собой не отличающиеся, поэтому мне это отключение ACK не поможет, одинаково хреново с ним и без))
Если вы не используете никаких pipe, значит вы скорее всего используете pipe0, который настроен по умолчанию.
Своей библиотекой пользуетесь?
Да, ACK, он же ESB, можно отключить, записью в один регистр. Это помогает когда вместе используются NRF поддельные и оригинальные, или качественные подделки и менее качественные, которые инвертируют бит в посылке.
У меня подделки одной партии, между собой не отличающиеся, поэтому мне это отключение ACK не поможет, одинаково хреново с ним и без))
архитектуру чипа я не менял))
[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).
Всё это мешает радиоуправлению.
Я меняю все параметры NRF24L01+ программно (Адрес, Выходная мощность, Частота и т.д.).
Всё прекрасно работает. https://www.youtube.com/watch?v=QPIcjcUwXwU
[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).
Всё это мешает радиоуправлению.
Я вообще не пользуюсь библиотеками)) Я просто прописываю все регистры NRF24L01+ в программе (через функции) и всё))Millyvolt писал(а):Своей библиотекой пользуетесь?
Я меняю все параметры NRF24L01+ программно (Адрес, Выходная мощность, Частота и т.д.).
Всё прекрасно работает. https://www.youtube.com/watch?v=QPIcjcUwXwU
- Сообщения: 11
- Зарегистрирован: Сб фев 24, 2024 14:33:52
Вот только начал знакомиться с этими радиомодулями...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
нет никакой зависимости...Garry1301 писал(а):Может регистры зависимые, и железяка хочет строгого порядка установки их?
нет никакой последовательности...
запись регистров рекомендуется производить при отключенном выводе CE (логический "0").
тут рабочий проект на NRF24L01, NRF24L01+...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
- Сообщения: 11
- Зарегистрирован: Сб фев 24, 2024 14:33:52
Спасибо, посмотрю.roman.com писал(а): тут рабочий проект на NRF24L01, NRF24L01+...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
Я нашел баг у себя в программе, под общую защиту от нулов и нулевых длин попали и функции SPI с передачей по значению
Вот нули и не проходили.


