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

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

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

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

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

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

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

Ответ
Опции темы
Непрочитано 12.09.2014, 15:02   #1071
STM32F4
Частый гость
 
Регистрация: 04.12.2012
Сообщений: 38
Сказал спасибо: 25
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
STM32F4 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от BolshoyK Посмотреть сообщение
взять готовую библиотеку почему нельзя? зачем писать ее заново вспоминая все нюансы и таймауты?
На STM32F4x под CooCox нет в сети, или не нашел.
Реклама:
STM32F4 вне форума   Ответить с цитированием
Непрочитано 12.09.2014, 19:25   #1072
BolshoyK
Гражданин KAZUS.RU
 
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
BolshoyK на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

в этой теме лежала для стм32
BolshoyK вне форума   Ответить с цитированием
Непрочитано 12.09.2014, 22:18   #1073
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

От кокоса, похоже, совсем мозги спекаются.
Easyrider83 вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 21:04   #1074
zenekk
Частый гость
 
Регистрация: 05.05.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
zenekk на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Не получается настроить нормальную связь двух трансмиттеров с использованием контрольной суммы в пакете. Использую библиотеку Easyrider83.
Вот настройка передатчика:

Код:
  RF_InitStruct.RF_Power_State=RF_Power_On;
  RF_InitStruct.RF_Config=RF_Config_IRQ_RX_Off|RF_Co  nfig_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_Pipe_All_Ack_Dis  able;//RF_Pipe_All_Ack_Disable;//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=53;
  
  RF_InitStruct.RF_RX_Adress_Pipe0[0]=0x11;
  RF_InitStruct.RF_RX_Adress_Pipe0[1]=0x22;
  RF_InitStruct.RF_RX_Adress_Pipe0[2]=0x33;
  RF_InitStruct.RF_RX_Adress_Pipe0[3]=0x44;
  RF_InitStruct.RF_RX_Adress_Pipe0[4]=0x55;
  
  RF_InitStruct.RF_TX_Adress[0]=RF_InitStruct.RF_RX_Adress_Pipe0[0];
  RF_InitStruct.RF_TX_Adress[1]=RF_InitStruct.RF_RX_Adress_Pipe0[1];
  RF_InitStruct.RF_TX_Adress[2]=RF_InitStruct.RF_RX_Adress_Pipe0[2];
  RF_InitStruct.RF_TX_Adress[3]=RF_InitStruct.RF_RX_Adress_Pipe0[3];
  RF_InitStruct.RF_TX_Adress[4]=RF_InitStruct.RF_RX_Adress_Pipe0[4];
	
  RF_InitStruct.RF_Payload_Size_Pipe0=16;
  RF_InitStruct.RF_Auto_Retransmit_Count=1;
  RF_InitStruct.RF_Auto_Retransmit_Delay=1;
Вот настройка приемника:

Код:
  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_CRC_Off;
  RF_InitStruct.RF_Mode=RF_Mode_RX;
  RF_InitStruct.RF_Pipe_Auto_Ack=RF_Pipe_All_Ack_Dis  able;//RF_Pipe0_Ack_Enable;//RF_Pipe_All_Ack_Disable;
  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=53;
  
  RF_InitStruct.RF_RX_Adress_Pipe0[0]=0x11;
  RF_InitStruct.RF_RX_Adress_Pipe0[1]=0x22;
  RF_InitStruct.RF_RX_Adress_Pipe0[2]=0x33;
  RF_InitStruct.RF_RX_Adress_Pipe0[3]=0x44;
  RF_InitStruct.RF_RX_Adress_Pipe0[4]=0x55;
  
  RF_InitStruct.RF_TX_Adress[0]=RF_InitStruct.RF_RX_Adress_Pipe0[0];
  RF_InitStruct.RF_TX_Adress[1]=RF_InitStruct.RF_RX_Adress_Pipe0[1];
  RF_InitStruct.RF_TX_Adress[2]=RF_InitStruct.RF_RX_Adress_Pipe0[2];
  RF_InitStruct.RF_TX_Adress[3]=RF_InitStruct.RF_RX_Adress_Pipe0[3];
  RF_InitStruct.RF_TX_Adress[4]=RF_InitStruct.RF_RX_Adress_Pipe0[4];
  RF_InitStruct.RF_Payload_Size_Pipe0=16;
  RF_InitStruct.RF_Auto_Retransmit_Count=1;
  RF_InitStruct.RF_Auto_Retransmit_Delay=1;
так приемник данные принимает нормально , стоит только на приемнике установить
Код:
RF_InitStruct.RF_CRC_Mode=RF_CRC16_On;
то ни одного пакета не принимается....

В чем может быть проблема?
zenekk вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 21:21   #1075
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Вероятно, принимает он все таки не данные, а мусор с эфира?
Конфиг рабочий. Железо исправно? 0x0E функция инитиализации возвращает?

Последний раз редактировалось Easyrider83; 15.11.2014 в 21:50.
Easyrider83 вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 21:45   #1076
wlad773
Прописка
 
Аватар для wlad773
 
Регистрация: 06.05.2008
Адрес: Пятигорск
Сообщений: 222
Сказал спасибо: 11
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
wlad773 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Сообщение от STM32F4 Посмотреть сообщение
Попробую описать мою конфигурацию!
Для первого запуска обмена данных я решил попробовать настроить микросхемы с минимальной настройкой, дабы уменьшить количество ошибок )
И так, что я сделал на передатчике:
1. CONFIG|=PWR_UP включаю микросхему
2. Жду 10мкс
3. CONFIG&=~PRIME_RX настраиваю на передачу данных
4. записываю 5-ть байт(0x78,0x78,0x78,0x78,0x7 в регистр TX_ADDR(0x10) и RX_PW_P0(0x0A) ! не знаю зачем я это делаю, но говорят надо!
На этом моя инициализация передатчика закончилась!!!!!!!!!!
5. Теперь начинаем передавать данные:
5.1 NSS=0; сброс огибающей
5.2 отправляю команду W_TX_PAYLOAD(0xA0)
5.3 следом отправляю байт данных
5.4 NSS=1; огибающая
5.5 поднимаем линию CE
5.6 жду 10мкс
5.7 опускаем линию CE
5.8 ВСЕ, по идее данные должны уйти в эфир!
6. Проверяем регистр STATUS(0x07) там все время лежит 0x1F. а в регистре FIFO_STATUS(0x17) лежит 0x21.

Теперь приемник:
1. CONFIG|=PWR_UP включаю микросхему
2. Жду 10мкс
3. CONFIG|=PRIME_RX настраиваю на прием данных
4. записываю 5-ть байт(0x78,0x78,0x78,0x78,0x7 в регистр TX_ADDR(0x10) и RX_RW_P0(0x0A) !
ВСЕ, инициализация приемника закончилась!
5. теперь в цикле читаю регистр STATUS(0x07) и там все время лежит 0x0E.

Так же для приемника и передатчика у меня настроено прерывание от ножки IRQ! ни на передатчике ни на приемнике не разу не происходило перываний (Хотя по идее, после неудачной отправки передатчиком должно произойти прерывание и выставиться флаг MAX_RT в регистре STATUS(0x07).


Подскажите пожалуйста? что не так ?
5-ть байт надо записываю(0x78,0x78,0x78,0x78,0x7 в регистр TX_ADDR(0x10) и RX_ADDR_P0. А в RX_PW_P0(0x0A) указывается количество принимаемых байт. По умолчанию ничего не принимается.
wlad773 вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 21:51   #1077
zenekk
Частый гость
 
Регистрация: 05.05.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
zenekk на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Принимает то что я передаю, кроме последнего байта почемуто...
Передаю так:
Код:
unsigned char tx[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x0  9,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
..............
RF_SendPayload(&tx[0], 16);
DelayMs(300);
На приемнике последний (16) байт принимается как 0x0E.. Сейчас посмотрю что реально уходит на передатчик по spi.
zenekk вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 22:13   #1078
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Лучше так:
RF_SendPayload(tx, 16);
или так:
RF_SendPayload(tx, sizeof(tx));
Easyrider83 вне форума   Ответить с цитированием
Непрочитано 15.11.2014, 22:29   #1079
zenekk
Частый гость
 
Регистрация: 05.05.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
zenekk на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Цитата:
Лучше так:
RF_SendPayload(tx, 16);
или так:
RF_SendPayload(tx, sizeof(tx));
Не соглашусь.

В первом варианте мы неявно передаем адрес первого элемента массива tx, работать будет, но ничем не отличается от &tx[0], где я явно указываю что передаю адрес первого элемента массива tx.
Насчет sizeof(tx).. А если у меня массив tx размерностью скажем 255? но передать нужно лишь первые 16 байт.

Но в общем то посмотрел в передатчике по spi передается то что нужно, 16 байт 0x00...0x0F а на приемнике принимается 0x00...0x0E,0x0E
zenekk вне форума   Ответить с цитированием
Непрочитано 16.11.2014, 03:58   #1080
zenekk
Частый гость
 
Регистрация: 05.05.2011
Сообщений: 16
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
zenekk на пути к лучшему
По умолчанию Re: Кто-нибудь работал с RF модулями nRF2401A?

Разобрался!
Проблема была в передатчике.
В логике работы функции отправки байта по SPI.
Код:
uint8_t SPI_ReadByte(uint8_t byte){
	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
	SPI_I2S_SendData(SPI1,byte);
	while (SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RE  SET);

	return SPI_I2S_ReceiveData(SPI1);
}
При такой логике работы, низкой скорости SPI и высокой частоты тактирования контроллера происходит следующее:
флаг SPI_I2S_FLAG_RXNE выставляется раньше заднего фронта SCK, а ввиду того что это последний байт, после этого следует поднять линию CS. Так вот CS поднимался раньше чем контроллер SPI отдавал задний фронт SCK (видно в прикрепленном изображении), что наверное приводило к сбою в nrf24 при защелкивании последнего байта и он не воспринимался.
Странно то, что nrf24 на место последнего байта ставил предыдущий, но CRC обсчитывалось то ли от 15 байт, то ли от верных 16 байт, а в канал уходило 16 байт, но с 16 байтом равным 15му. Отсюда и не совпадение CRC на приемнике.

Решение проблемы: Вставить задержку перед поднятием CS или увеличить скорость SPI. Проверка флага BSYв статус-регистре SPI не дает положительного результата. Возможно это косяк SPI в STM32f103, глубже пока не копал.

Ах да, скорость SPI была ~250кГц, при 1МГц и частоте ядра 72MHz этот баг уже не проявляется.
Миниатюры:
Нажмите на изображение для увеличения
Название: spi_fail.png
Просмотров: 71
Размер:	80.7 Кб
ID:	71838  

Последний раз редактировалось zenekk; 16.11.2014 в 04:14.
zenekk вне форума   Ответить с цитированием
Ответ

Закладки


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

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


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