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

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

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

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

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

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

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

 
Опции темы
Непрочитано 08.11.2012, 19:56  
Mek_ph
Прохожий
 
Регистрация: 30.08.2010
Сообщений: 9
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Mek_ph на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от Easyrider83 Посмотреть сообщение
Приемник сидит с поднятым СЕ все время приема.
Да.
Жду прерывание. А его нет.
Реклама:
Mek_ph вне форума  
Непрочитано 08.11.2012, 19:58  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Тогда выкладывайте подробный алгоритм, что делаете. Я вам даже готовые коды выложил. Кучу времени потратил на их отладку.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
Mek_ph (08.11.2012)
Непрочитано 08.11.2012, 22:01  
Mek_ph
Прохожий
 
Регистрация: 30.08.2010
Сообщений: 9
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Mek_ph на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от Easyrider83 Посмотреть сообщение
Тогда выкладывайте подробный алгоритм, что делаете. Я вам даже готовые коды выложил. Кучу времени потратил на их отладку.
Чтобы не утомлять чтением алгоритма, выкладываю лог инициализации для приемника снятый лог. анализатором (вставил пустые строки между записью блоков, для удобства чтения):
MOSI MISO
' ' (0x20) '14' (0x0E)
'11' (0x0B) '0' (0x00)

! (0x21) '14' (0x0E)
? (0x3F) '0' (0x00)

(0x22),'14' (0x0E)
? (0x3F) '0' (0x00)

# (0x23) '14' (0x0E)
'3' (0x03) '0' (0x00)

$ (0x24) '14' (0x0E)
'3' (0x03) '0' (0x00)

% (0x25) '14' (0x0E)
'2' (0x02) '0' (0x00)

& (0x26) '14' (0x0E)
'14' (0x0E) '0' (0x00)

' (0x27) '14' (0x0E)
~ (0x7E) '0' (0x00)

* (0x2A) '14' (0x0E)
'231' (0xE7) '0' (0x00)
'231' (0xE7) '0' (0x00)
'231' (0xE7) '0' (0x00)
'229' (0xE5) '0' (0x00)
'226' (0xE2) '0' (0x00)

+ (0x2B) '14' (0x0E)
'231' (0xE7) '0' (0x00)
'231' (0xE7) '0' (0x00)
'231' (0xE7) '0' (0x00)
'229' (0xE5) '0' (0x00)
'227' (0xE3) '0' (0x00)

1 (0x31) '14' (0x0E)
'20' (0x14) '0' (0x00)

2 (0x32) '14' (0x0E)
'20' (0x14) '0' (0x00)

3 (0x33) '14' (0x0E)
'20' (0x14) '0' (0x00)

4 (0x34) '14' (0x0E)
'20' (0x14) '0' (0x00)

5 (0x35) '14' (0x0E)
'20' (0x14) '0' (0x00)

[IMG][/IMG]
Mek_ph вне форума  
Непрочитано 08.11.2012, 22:12  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Да уж, не утомили )))) Одно скажу - 0x0E при чтении дефолтных настроек конфига - это правильно.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
Mek_ph (08.11.2012)
Непрочитано 08.11.2012, 22:32  
Mek_ph
Прохожий
 
Регистрация: 30.08.2010
Сообщений: 9
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Mek_ph на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от Easyrider83 Посмотреть сообщение
Да уж, не утомили )))) Одно скажу - 0x0E при чтении дефолтных настроек конфига - это правильно.
первый байт это команда записи с адресом, ответом идет статус регистр

алгоритм просто неудобно анализировать, я использовал модуль SPI для работы с памятью, который подразумевает прожевывание больших массивов. Думал что радиомодуль инкрементирует адрес при записи, было бы очень удобно. Оказалось нет. Поэтому приходится перед каждым регистром писать команду записи с новым адресом.
Ну и лог анализатор все таки дает истинную картину а не предполагаемую.
Mek_ph вне форума  
Непрочитано 09.11.2012, 09:14  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Вначале трансивер нужно вывести из повер-довна, подождать пару мс и потом продолжать инициализацию

В 24 пиши 43 или даже 53 - для пакетов по 20 байт
niXto вне форума  
Эти 2 пользователя(ей) сказали Спасибо niXto за это сообщение:
Mek_ph (09.11.2012), OneginForte (09.11.2012)
Непрочитано 09.11.2012, 18:53  
Mek_ph
Прохожий
 
Регистрация: 30.08.2010
Сообщений: 9
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Mek_ph на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от niXto Посмотреть сообщение
Вначале трансивер нужно вывести из повер-довна, подождать пару мс и потом продолжать инициализацию

В 24 пиши 43 или даже 53 - для пакетов по 20 байт
Я сделал задержку. На скриншоте кстати видно ее. После записи байта в регистр 00 пауза потом дальше.

24 вы имеете в виду регистр 0x04? Спасибо, попробую.
Mek_ph вне форума  
Непрочитано 25.11.2012, 11:47  
BolshoyK
Гражданин KAZUS.RU
 
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
BolshoyK на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от Easyrider83 Посмотреть сообщение
Выкладываю обновленные библиотеки под STM32 и STM8.
Пример использования:
Код:
unsigned char Init_RF (SPI_TypeDef* SPIx)
{
	RF_InitTypeDef RF_InitStruct;
	RF_InitStruct.RF_Power_State=RF_Power_On;
	RF_InitStruct.RF_Config=RF_Config_IRQ_RX_On|RF_Con  fig_IRQ_TX_Off|RF_Confing_IRQ_Max_Rt_Off;
	RF_InitStruct.RF_CRC_Mode=RF_CRC16_On;
	RF_InitStruct.RF_Mode=RF_Mode_RX;
	RF_InitStruct.RF_Pipe_Auto_Ack=RF_Pipe1_Ack_Enable  ;
	RF_InitStruct.RF_Enable_Pipe=RF_Pipe0_Enable|RF_Pi  pe1_Enable;
	RF_InitStruct.RF_Setup=RF_Setup_5_Byte_Adress;
	RF_InitStruct.RF_TX_Power=RF_TX_Power_High;
	RF_InitStruct.RF_Data_Rate=RF_Data_Rate_1Mbs;
	RF_InitStruct.RF_Channel=0x35;
	RF_InitStruct.RF_RX_Adress_Pipe0[0]='S';
	RF_InitStruct.RF_RX_Adress_Pipe0[1]='A';
	RF_InitStruct.RF_RX_Adress_Pipe0[2]='P';
	RF_InitStruct.RF_RX_Adress_Pipe0[3]='O';
	RF_InitStruct.RF_RX_Adress_Pipe0[4]='G';
	
	RF_InitStruct.RF_RX_Adress_Pipe1[0]='V';
	RF_InitStruct.RF_RX_Adress_Pipe1[1]='A';
	RF_InitStruct.RF_RX_Adress_Pipe1[2]='G';
	RF_InitStruct.RF_RX_Adress_Pipe1[3]='O';
	RF_InitStruct.RF_RX_Adress_Pipe1[4]='N';
	
	RF_InitStruct.RF_Payload_Size_Pipe0=16;
	RF_InitStruct.RF_Payload_Size_Pipe1=16;
	RF_InitStruct.RF_Auto_Retransmit_Count=2;
	RF_InitStruct.RF_Auto_Retransmit_Delay=3;
	return RF_Init(SPIx, &RF_InitStruct);
}
Для STM8 последняя строка выклядит так:
Код:
return RF_Init(&RF_InitStruct);
В данном примере модуль настраивается на прием 16 байт с двух источников с именами "сапог" и "вагон" на скорости 1Мбит по каналу 0х35 с подтверждением передачи для "вагона".
Далее пример отправки пакета:
Код:
KeyActualFlag=RF_SendPayloadACK("TEST MESSAGE", 16);
Переменная unsigned char KeyActualFlag принимает значение 0xFF если чип не отвечает в следствии проблем с железом или неправильной настройки, или 0 - если данные отправлены, подтверждение не получено и 1 если получено подтверждение передачи.

Функция приема возвращает номер потока или 0xFF, если данных нет.

Пример приема данных:
Код:
u8 Data[16];
u8 pipeN=0;
while(1)
{
pipeN=RF_Receive_Data(SPI1, Data, 16);
 if (pipeN!=0xFF)
 {
  lcd_print_string("DATA! Pipe: ");
  lcd_print_value(pipeN);
  lcd_print_string(Data);
 }
}
Попробовал библиотеку. Возник вопрос, а она точно работает ?
Найденные проблемы:
Отсуствует процедура инициализации SPI. Добавил.
строка:
Код:
KeyActualFlag=RF_SendPayloadACK("TEST MESSAGE", 16);
Должна выглядеть так:
Код:
KeyActualFlag=RF_SendPayloadACK(SPI2,"TEST MESSAGE", 16);
Если инициализация делается так:
Код:
tmp=RF_Send_Cmd(SPIx, CONFIG_REG, RF_InitStruct-›RF_Config|RF_InitStruct-›RF_Power_State|RF_InitStruct-›RF_CRC_Mode|RF_InitStruct-›RF_Mode);
То в регистре CONFIG поселяется значение 0x08.
Переделал так:
Код:
tmp=RF_Send_Cmd(SPIx, CONFIG_REG, RF_InitStruct-›RF_Power_State);
delay_ms(2);
tmp=RF_Send_Cmd(SPIx, CONFIG_REG, RF_InitStruct-›RF_Config|RF_InitStruct-›RF_Power_State|RF_InitStruct-›RF_CRC_Mode|RF_InitStruct-›RF_Mode);
Стало гораздо лучше, конфиг пишется правильный с первого раза.

Но дальше... Дальше что-то незаладилось. Не могу передать ничего.
Считывал конфиг и сравнивал с другим примером - один в один, а передача при этом не идет. В процедуре передачи точно все правильно ?
Прием делается стендом на основе работающего примера с сайта: http://davidegironi.blogspot.ru/2012...on-atmega.html

Вот мой конфиг:
Код:
unsigned char Init_RF (SPI_TypeDef* SPIx)
{
	RF_InitTypeDef RF_InitStruct;
	RF_InitStruct.RF_Power_State=RF_Power_On;
	RF_InitStruct.RF_Config=RF_Config_IRQ_RX_On|RF_Con  fig_IRQ_TX_On|RF_Confing_IRQ_Max_Rt_On;
	RF_InitStruct.RF_CRC_Mode=RF_CRC16_On;
	RF_InitStruct.RF_Mode=RF_Mode_TX;
	RF_InitStruct.RF_Pipe_Auto_Ack=RF_Pipe0_Ack_Enable  ;
	RF_InitStruct.RF_Enable_Pipe=RF_Pipe0_Enable;
	RF_InitStruct.RF_Setup=RF_Setup_5_Byte_Adress;
	RF_InitStruct.RF_TX_Power=RF_TX_Power_High;
	RF_InitStruct.RF_Data_Rate=RF_Data_Rate_1Mbs;
	RF_InitStruct.RF_Channel=76;

	RF_InitStruct.RF_RX_Adress_Pipe0[0]=0xE2;
	RF_InitStruct.RF_RX_Adress_Pipe0[1]=0xF0;
	RF_InitStruct.RF_RX_Adress_Pipe0[2]=0xF0;
	RF_InitStruct.RF_RX_Adress_Pipe0[3]=0xE8;
	RF_InitStruct.RF_RX_Adress_Pipe0[4]=0xE8;
	
	RF_InitStruct.RF_RX_Adress_Pipe1[0]=0xC2;
	RF_InitStruct.RF_RX_Adress_Pipe1[1]=0xC2;
	RF_InitStruct.RF_RX_Adress_Pipe1[2]=0xC2;
	RF_InitStruct.RF_RX_Adress_Pipe1[3]=0xC2;
	RF_InitStruct.RF_RX_Adress_Pipe1[4]=0xC1;
	RF_InitStruct.RF_RX_Adress_Pipe2=0xC3;
	RF_InitStruct.RF_RX_Adress_Pipe3=0xC4;
	RF_InitStruct.RF_RX_Adress_Pipe4=0xC5;
	RF_InitStruct.RF_RX_Adress_Pipe5=0xC6;
	
	RF_InitStruct.RF_TX_Adress[0]=0xE2;
	RF_InitStruct.RF_TX_Adress[1]=0xF0;
	RF_InitStruct.RF_TX_Adress[2]=0xF0;
	RF_InitStruct.RF_TX_Adress[3]=0xE8;
	RF_InitStruct.RF_TX_Adress[4]=0xE8;
	
	RF_InitStruct.RF_Payload_Size_Pipe0=16;
	RF_InitStruct.RF_Auto_Retransmit_Count=6;
	RF_InitStruct.RF_Auto_Retransmit_Delay=0;
	return RF_Init(SPIx, &RF_InitStruct);
}
Чую что-то упустил. Но кругом сомневаюсь.
BolshoyK вне форума  
Непрочитано 25.11.2012, 14:41  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Под STM8 перекачайте файлы. Там куда-то одна строчка улетела. Как раз при использовании PIPE0 баг вылезал.
Инитиализацию SPI и GPIO я оставил для другой процедуры. Эти у меня кросс-платформенные.
Задержка не нужна. Нужно, чтобы между инитиализацией GPIO и поднятием CSN прошло хотя бы 2мс. Я использую OD выход и подтяжку резистором к плюсу. Поэтому после подачи питания у меня автоматом CSN=HIGH.
Проверяю чип так - после инитиализации должно вернуться значение 0x0E. Если вернулось - все интерфейс работает.
Вложения:
Тип файла: rar NRF24L01.rar (4.1 Кб, 92 просмотров)

Последний раз редактировалось Easyrider83; 25.11.2012 в 14:44.
Easyrider83 вне форума  
Непрочитано 27.11.2012, 12:48  
BolshoyK
Гражданин KAZUS.RU
 
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
BolshoyK на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Easyrider83, посмотрел новую библиотеку, кроме изменения списка параметров функций(убранного SPI порта) и новой функции проверки модуля, не нашел отличий. Ну и нехватает SPI библиотеки, с исправленными функциями.
использую под стм32.
Подскажете где искать ошибку ?
BolshoyK вне форума  
 

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

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

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, время: 20:14.


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