Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь.

 
Опции темы
Непрочитано 18.01.2017, 10:28  
TechMike
Вид на жительство
 
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
TechMike на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от sat_art Посмотреть сообщение
TechMike, выше я выкладывал свою библиотеку, посмотрите как там конфигурируется.
Свежая библиотека тут?
Реклама:
TechMike вне форума  
Непрочитано 18.01.2017, 10:29  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

TechMike,да.
sat_art вне форума  
Непрочитано 19.01.2017, 23:45  
TechMike
Вид на жительство
 
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
TechMike на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Получилось так, пока в железе не пробовал. Нормально?
PHP код:

#define SETUP_AW_5BYTES_ADDRESS (3 ‹‹ AW)
#define SETUP_RETR_DELAY_250MKS  (0 ‹‹ ARD)
#define SETUP_RETR_UP_TO_2_RETRANSMIT (2 ‹‹ ARC)
#define RF_SETUP_250KBPS (1 ‹‹ RF_DR_LOW)
uint8_t rxaddr[5] = {0xE70xE70xE70xE70x11};
uint8_t txaddr[5] = {0xE70xE70xE70xE70x11};

mirf_write_register(EN_AA, (‹‹ ENAA_P1)); // включение автоподтверждения только по каналу 1
    
mirf_write_register(EN_RXADDR, (‹‹ ERX_P0) | (‹‹ ERX_P1)); // включение каналов 0 и 1
    
mirf_write_register(SETUP_AWSETUP_AW_5BYTES_ADDRESS); // выбор длины адреса 5 байт
    
mirf_write_register(SETUP_RETRSETUP_RETR_DELAY_250MKS SETUP_RETR_UP_TO_2_RETRANSMIT);
    
mirf_write_register(RF_CHmirf_CH); // Выбор частотного канала
    
mirf_write_register(RF_SETUPRF_SETUP_250KBPS RF_SETUP_0DBM); // выбор скорости 250 кбит/с и мощности 0dBm

    
mirf_write_registers(RX_ADDR_P0rxaddr5);
    
mirf_write_registers(TX_ADDRtxaddr5);

    
mirf_write_register(RX_PW_P00);
    
mirf_write_register(RX_PW_P132);
    
mirf_write_register(DYNPD, (‹‹ DPL_P0) | (‹‹ DPL_P1)); // включение произвольной длины для каналов 0 и 1
    
mirf_write_register(FEATURE0x04); // разрешение произвольной длины пакета данных

    
mirf_send_cmd(FLUSH_TX);    // очищаем буфер на передачу
    
mirf_send_cmd(FLUSH_RX);    // очищаем буфер на прием

    
mirf_write_register(CONFIG, (‹‹ EN_CRC) | (‹‹ CRCO) | (‹‹ PWR_UP) | (‹‹ PRIM_RX)); // Включение питания
    
_delay_us(135);
    
mirf_CE_hi
TechMike вне форума  
Непрочитано 21.01.2017, 17:18  
TechMike
Вид на жительство
 
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
TechMike на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Попробовал в железе, не заработало, очень редко после включения принимающей стороны приходила одна первая команда, а потом просто тишина. Расстояние между приемником и передатчиком не более 20 см.

Процедура инициализации, для передатчика и приемника одинаковая:
PHP код:
uint8_t mirf_config()
{

      for(
uint8_t cnt 100;;) {
          
mirf_write_register(CONFIG, (‹‹ EN_CRC) | (‹‹ CRCO) | (‹‹ PRIM_RX)); // Выключение питания
        
if (mirf_read_register(CONFIG) == ((‹‹ EN_CRC) | (‹‹ CRCO) | (‹‹ PRIM_RX)))
          break;
        
// Если прочитано не то что записано, то значит либо радио-чип ещё инициализируется, либо не работает.
        
if (!cnt--)
          return 
0// Если после 100 попыток не удалось записать что нужно, то выходим с ошибкой
        
_delay_ms(1);
      }

    
_delay_ms(50);

    
mirf_write_register(EN_AA, (‹‹ ENAA_P1));                                                 // включение автоподтверждения только по каналу 1
    
mirf_write_register(EN_RXADDR, (‹‹ ERX_P0) | (‹‹ ERX_P1));                                 // включение каналов 0 и 1
    
mirf_write_register(SETUP_AWSETUP_AW_5BYTES_ADDRESS);                                     // выбор длины адреса 5 байт
    
mirf_write_register(SETUP_RETRSETUP_RETR_DELAY_500MKS SETUP_RETR_UP_TO_2_RETRANSMIT);    // задаем ждать подтверждение от принимающего 500мкс и две попытки нас до него достучаться
    
mirf_write_register(RF_CHmirf_CH);                                                         // Выбор частотного канала
    
mirf_write_register(RF_SETUPRF_SETUP_250KBPS RF_SETUP_0DBM);                             // выбор скорости 250 кбит/с и мощности 0dBm

    
mirf_write_registers(RX_ADDR_P0remote_addr5);                                            // задаем адрес от которого получаем подтверждения на канал 0
    
mirf_write_registers(TX_ADDRremote_addr5);                                                // задаем адрес получателя
    
mirf_write_registers(RX_ADDR_P1self_addr5);                                                // задаем свой адрес

    //mirf_write_register(RX_PW_P0, 0);
    //mirf_write_register(RX_PW_P1, 32);
    
mirf_write_register(DYNPD, (‹‹ DPL_P0) | (‹‹ DPL_P1));                                     // включение произвольной длины для каналов 0 и 1
    
mirf_write_register(FEATURE,(‹‹ EN_DPL) | (1‹‹EN_ACK_PAY) | (1‹‹EN_DYN_ACK));             // разрешение произвольной длины пакета данных

    
mirf_send_cmd(FLUSH_TX);                                                                    // очищаем буфер на передачу
    
mirf_send_cmd(FLUSH_RX);                                                                    // очищаем буфер на прием

    
mirf_write_register(CONFIG, (‹‹ EN_CRC) | (‹‹ CRCO) | (‹‹ PWR_UP) | (‹‹ PRIM_RX));     // Включение питания и переход на прием
    
_delay_us(135);                                                                                // ждем запуска передатчика (с запасом)
    
mirf_CE_hi;                                                                                    // завершаем конфигурирование NRF
    
return 1;

Для передатчика адреса такие:
PHP код:
uint8_t self_addr[] = {0xE70xE70xE70xE70xE7}; // Собственный адрес
uint8_t remote_addr[] = {0xC20xC20xC20xC20xC2}; // Адрес удалённой стороны 
Для приемника:
PHP код:
uint8_t self_addr[] = {0xC20xC20xC20xC20xC2}; // Собственный адрес
uint8_t remote_addr[] = {0xE70xE70xE70xE70xE7}; // Адрес удалённой стороны 
Что попробовать еще настроить в NRF, чтобы получить устойчивую связь?
TechMike вне форума  
Непрочитано 21.01.2017, 17:23  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Если с подтверждением, адреса должны быть одинаковые.
sat_art вне форума  
Непрочитано 21.01.2017, 17:44  
TechMike
Вид на жительство
 
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
TechMike на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от sat_art Посмотреть сообщение
Если с подтверждением, адреса должны быть одинаковые.
Сделал у обоих:
uint8_t self_addr[] = {0xC2, 0xC2, 0xC2, 0xC2, 0xC2}; // Собственный адрес
uint8_t remote_addr[] = {0xC2, 0xC2, 0xC2, 0xC2, 0xC2}; // Адрес удалённой стороны

но не помогло.
Причем заметил, что передатчик успешно рапортует, что байт отправил (поднимается TX_DS) но на приемнике при этом не поднимается RX_DR
TechMike вне форума  
Непрочитано 21.01.2017, 18:04  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от TechMike Посмотреть сообщение
mirf_write_registers(RX_ADDR_P1,*self_addr,*5);*** *********************************************//*задаем*свой*адрес
уберите.
У Вас получается Р0 и Р1 одинаковый адрес имеют
sat_art вне форума  
Непрочитано 21.01.2017, 18:10  
TechMike
Вид на жительство
 
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
TechMike на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от sat_art Посмотреть сообщение
уберите.
У Вас получается Р0 и Р1 одинаковый адрес имеют
Убрал, ничего не поменялось.

У обоих NRF конфигурация после настройки одинаковая:
STATUS = 14 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
CONFIG = 15 MASK_RX_DR=0 MASK_TX_DS=0 MASK_MAX_RT=0 EN_CRC=1 CRCO=1 PWR_UP=1 PRIM_RX=1
RF_SETUP = 38 CONT_WAVE=0 RF_DR_LOW=1 PLL_LOCK=0 RF_DR_HIGH=0 RF_PWR=3 LNA_HCURR=0
FEATURE = 07 EN_DPL=1 EN_ACK_PAY=1 EN_DYN_ACK=1
CD=0
CHANEL=10
L_PAYLOAD=0
TechMike вне форума  
Непрочитано 21.01.2017, 18:56  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

RF_SETUP = 38 - CONT_WAVE=0 RF_DR_LOW=1 PLL_LOCK=1 RF_DR_HIGH=1 RF_PWR=0 LNA_HCURR=0
если в шестнадцатиричном виде.
установите 2мб скорость
RF_SETUP = 0x0E
sat_art вне форума  
Непрочитано 21.01.2017, 18:57  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 428
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от sat_art Посмотреть сообщение
Блин эти модули меня реально немного подзамахали.
Два модуля рядом.
Просто с одного на другой передаю подряд пакеты - один тупо ТХ другой RХ.
Без АСК передается нормально и на 1Мб и на 2 Мб
Только включаю АСК
На 2Мб нормально - до 1000 пакетов в секунду.
На 1 Мб жопа. 20-30 пакетов.
Вот я писал когда то. А на 250к вообще нормально не завел.
sat_art вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто работал с драйвером DM132? sdsrem Микроконтроллеры, АЦП, память и т.д 0 06.07.2010 21:37
Кто нибудь имеет описание, как обращаться к KEELOQовскому регистру в PIC12F635/PIC16F636? Make_Pic Микроконтроллеры, АЦП, память и т.д 1 07.05.2010 12:53
Кто нибудь работал с MUST II System ? trilobit Производственное оборудование 0 28.04.2010 11:51
Кто нибудь имел дело со шрифтами? Djakovskij Микроконтроллеры, АЦП, память и т.д 8 18.02.2010 20:35
Кто работал с Ad7714? ALEKSEY188 Микроконтроллеры, АЦП, память и т.д 18 11.02.2010 03:54


Часовой пояс GMT +4, время: 04:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot