|
|
  |
CC2500 Приемопередатчик, Кто-то реально делал? |
|
|
|
Aug 21 2008, 09:41
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-08
Пользователь №: 39 500

|
Вообщем за базовый проект, взял файл swrc085a.zip с примером программы под СС2510 с сайта ТИ. Беру главный файл проекта - per_test_main.c. В принципе во многом уже разобрался (повыкидал код относящийся к некому ЖКИ, подставил режимы конфигурирования радиочасти без выбора с меню, а просто жёстко в программе прописал параметры) и даже некоторому научился - например сейчас без проблем могу читать/писать в пины, так что светодиодами на плате мигаю и состояния с переключателей режимов снимаю. Далее пошёл на конфигурирование радиочасти, установил 2460 частоту, 250 кбод, и другие параметры, всё как в примере. Зациклил эту некую процедуру передачи программно и спаял небольшую схемку - высокочастотный выпрямитель с выходом на чувствительный микроамперметр, подсоединил всё к антенне через конденсатор малой ёмкости. Вообщем при передаче стрелка чуть отклоняется - значит ВЧ энергия с выхода СС2510 идёт в антенну. К сожалению других приборов способных мерять 2,4 ГГц у меня нет. В цикле передачи потом поставил задержку на пол-секунды, прошил, смотрю на микроамперметр когда идёт передача стрелка отклоняется, потом на пол-секунды падает. Вообщем всё как в программе. Сделал вывод - что-то в антенну идёт это точно. Вопросы: 1)Но вот что??? Не могу понять где в процедуре передатчика подсовываются сами передаваемые данные вот смотрю в условие if (mode == RADIO_MODE_TX) там есть radioPktBuffer[i] = 0xCC; --- А ЧТО ЭТО??? 2) Далее там же burstSize = selectBurstSize(); --- А ЧТО ЭТО ТАКОЕ??? Я задал значение из тех 4-ёх, что можно было, задал жёстко burstSize = 1000; сам не понимая что оно значит. Но как бы при 1000 цикл передачи у меня проходит в 10 раз быстрее чем когда ставлю 10000. 3) также вообще не могу понять что оно значит --- pktSetSeqNum(seqNum); 4) далее вопросы по части if (mode == RADIO_MODE_RX) perRssiSum -= perRssiBuf[perRssiBufCounter]; --- ЧТО И ЗАЧЕМ ЭТО?? Там и дальше по программе ещё раз 5 встречаются строки с RSSI, соответсственно зачем они тоже не понимаю. 5) И где в итоге вышли те данные которые я хотел передать, я тоже не могу найти Вообщем не вижу ни того, что входит ни того, что выходит. )))
|
|
|
|
|
Aug 21 2008, 18:03
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-08
Пользователь №: 39 500

|
[quote name='Zoltrix' date='Aug 21 2008, 12:41' post='457961'] Вообщем за базовый проект, взял файл swrc085a.zip с примером программы под СС2510 с сайта ТИ. Беру главный файл проекта - per_test_main.c. В принципе во многом уже разобрался (повыкидал код относящийся к некому ЖКИ, подставил режимы конфигурирования радиочасти без выбора с меню, а просто жёстко в программе прописал параметры) и даже некоторому научился - например сейчас без проблем могу читать/писать в пины, так что светодиодами на плате мигаю и состояния с переключателей режимов снимаю. Далее пошёл на конфигурирование радиочасти, установил 2460 частоту, 250 кбод, и другие параметры, всё как в примере. Случилось чудо - радиотракт запустил. Потом пол-дня бегал смотрел, где как принимает. Вообщем там пакет в radioPktBuffer заполняется данными 0хСС - уже разобрался, я поставил проверку при чтении и если принимает 0хСС то горит светодиод, если нет то тухнет. Типа простейший индикатор принятых данных. В помещении на 5 метров при любой ориентации антенны работает, при 10м уже начинаются проблемы, антенну надо ориентировать. На расстоянии 20м приём получить крайне тяжело, нужно найти определённую точку для приёма и ориентацию антенны. Метров с 30 приёма нет вообще. Тоесть, в принципе, всё как можно было использовать пример с сайта ТИ - я использовал.
Теперь остаётся самое сложное, как мне правильно передать СОМ-порт. Мне обязательно необходима безошибочная передача, т.е. мне надо сделать некий буфер, заполнять его данными, потом в какой-то момент их передавать пакетом по радиотракту. А если он на приёмной стороне примется не правильно, то надо как-то заставить передатчик опять передать те даные, а на приёмной стороне их надо как-то опять правильно собрать в один поток и отправить в СОМ-порт. Вообщем я так понимаю должен быть целый алгоритм приёмо-передачи с исправлением ошибок, с повтором пакетов.
|
|
|
|
|
Nov 6 2008, 14:00
|
Участник

Группа: Новичок
Сообщений: 41
Регистрация: 12-11-06
Пользователь №: 22 234

|
Привет всем. Я проглядел данную тему и у меня сложилось впечатление, что при использовании данного девайса может возникнуть целая куча проблем. Даташит его выглядит для начинающего электронщика, не имевшего ранее дела с радиопередающими устройствами, весьма пугающе. У меня будет несколько общих вопросов: 1) так всё-таки, используется ли у кого-нибудь на практике сей девайс и как он себя проявляет? 2) как много времени уйдет на то, чтобы его заказать и получить? (ибо ждать два месяца нет возможности) 3) как много времени ушло у вас на то, чтобы научиться пользоваться этим приборам? 4) стоит ли с ним связываться? Возможно существуют аналоги немного более дорогие (до 20у.е), но более доработанные и удобные и использовании.
А задача всё та же - передать 3 бита информации на расстояние в 3 м.
|
|
|
|
|
Nov 7 2008, 12:38
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(zl3p @ Nov 6 2008, 17:00)  Привет всем. Я проглядел данную тему и у меня сложилось впечатление, что при использовании данного девайса может возникнуть целая куча проблем. Даташит его выглядит для начинающего электронщика, не имевшего ранее дела с радиопередающими устройствами, весьма пугающе. У меня будет несколько общих вопросов: 1) так всё-таки, используется ли у кого-нибудь на практике сей девайс и как он себя проявляет? 2) как много времени уйдет на то, чтобы его заказать и получить? (ибо ждать два месяца нет возможности) 3) как много времени ушло у вас на то, чтобы научиться пользоваться этим приборам? 4) стоит ли с ним связываться? Возможно существуют аналоги немного более дорогие (до 20у.е), но более доработанные и удобные и использовании.
А задача всё та же - передать 3 бита информации на расстояние в 3 м. 1) И еще как! Провляет себя весьма положительно. 2) В Москве (если будут на складе фирмы) часа два, по России от почты зависит. 3) С нуля на первой версии даташита (где много чего не было) - около месяца, с учетом ручного домашнего изготовления плат. 4) Это Вам решать
|
|
|
|
|
Nov 14 2008, 01:32
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167

|
Ктот-то приделывал к нему RF-FrontEnd CC2591? плату из референса разводили? хочу попробовать на двухслойке, но боюсь возбуждения тракта.
|
|
|
|
|
Dec 19 2008, 07:02
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-08
Пользователь №: 39 500

|
Цитата(andrik.kiev.ua @ Nov 14 2008, 05:32)  Ктот-то приделывал к нему RF-FrontEnd CC2591? плату из референса разводили? хочу попробовать на двухслойке, но боюсь возбуждения тракта. делал как в РД, в итоге при приёме получил возбуд, когда HGM=1. Выкинул tl-индуктивности - всё ОК. Надо ближе к корпусу МС располагать емкостя и возбуда не будет
|
|
|
|
|
Dec 22 2008, 22:31
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167

|
Цитата(Zoltrix @ Dec 19 2008, 09:02)  делал как в РД, в итоге при приёме получил возбуд, когда HGM=1. Выкинул tl-индуктивности - всё ОК. Надо ближе к корпусу МС располагать емкостя и возбуда не будет спасибо за ответ. в референсе многослойная плата. Сколько слоев у Вас? как насчет дальности, стоит заморачиваться? на зондах использую фолдед диполь, но не хватает дальности в городских условиях - хочу в базе поставить 2591.
|
|
|
|
|
Jan 19 2009, 13:25
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-08
Пользователь №: 39 500

|
Цитата(andrik.kiev.ua @ Dec 23 2008, 02:31)  спасибо за ответ. в референсе многослойная плата. Сколько слоев у Вас? как насчет дальности, стоит заморачиваться? на зондах использую фолдед диполь, но не хватает дальности в городских условиях - хочу в базе поставить 2591. У меня печатка всего 2 слоя. Антенна - псб-диполь на печатной плате. Длинна - 42 мм. Расстояние без 2591 - около 20 метров при любом расположении антенн и около 100 метров при стогом направлении антенн друг на друга. С усилителем 2591 - расстояния около 50 и 300 метров. Кирпичную стену в 3 кирпича пробивает без проблем. Ж/Б плиту вниз на этаж, но с заметным затуханием - надо ориентировать антенны. Всё очень сильно зависит от антенны - надо подбирать её длинну, так как хар-ки текстолита очень разные.
|
|
|
|
|
Jan 20 2009, 01:06
|
Участник

Группа: Новичок
Сообщений: 15
Регистрация: 30-05-05
Пользователь №: 5 537

|
А кто-нибудь использует трансивер-SOC СС2510? ksv198 - Вы работаете с СС2500 уже 3 года, по крайней мере начинали. На СС2510 не переходили? Вопрос вообще-то ко всем кто использует этот чип. Есть ли зависания встроенного контроллера при приеме пакетов с использованием ПДП и как боретесь с этим. Еррата даташит от TI читаем но что-то слабо помогает.
|
|
|
|
|
Jan 20 2009, 17:14
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(woodman @ Jan 20 2009, 04:06)  А кто-нибудь использует трансивер-SOC СС2510? ksv198 - Вы работаете с СС2500 уже 3 года, по крайней мере начинали. На СС2510 не переходили? Вопрос вообще-то ко всем кто использует этот чип. Есть ли зависания встроенного контроллера при приеме пакетов с использованием ПДП и как боретесь с этим. Еррата даташит от TI читаем но что-то слабо помогает. Добрый день! На СС2510 не переходил, просто применял в другом проекте. СС2500+АТМега48 дешевле одной СС2510, при этом для моих целей Меги хватает. При использовании СС2510 только один плюс для себя нашел - меньше места на плате занимает.
|
|
|
|
|
Jan 22 2009, 00:44
|
Участник

Группа: Новичок
Сообщений: 15
Регистрация: 30-05-05
Пользователь №: 5 537

|
Цитата(ksv198 @ Jan 20 2009, 20:14)  Добрый день! На СС2510 не переходил, просто применял в другом проекте. СС2500+АТМега48 дешевле одной СС2510, при этом для моих целей Меги хватает. При использовании СС2510 только один плюс для себя нашел - меньше места на плате занимает. Спасибо! А зависания в режиме приема с СС2510 наблюдались? И еще, использовали ли ПДП на приеме? С передачей нет проблем, а вот прием (Пакеты ~24Bytes; 250kbps; FSK) какой-то глюкавый получается у нас. Поэтому любой опыт работы с чипом будет интересен и полезен.
|
|
|
|
|
Jan 26 2009, 12:34
|
Группа: Участник
Сообщений: 13
Регистрация: 8-08-08
Пользователь №: 39 500

|
Цитата(woodman @ Jan 22 2009, 04:44)  Спасибо! А зависания в режиме приема с СС2510 наблюдались? И еще, использовали ли ПДП на приеме? С передачей нет проблем, а вот прием (Пакеты ~24Bytes; 250kbps; FSK) какой-то глюкавый получается у нас. Поэтому любой опыт работы с чипом будет интересен и полезен. Зависания есть, помогает только пересброс питания или код подобный тому что у меня. Происходят это после приёма сбойного пакета и последующей потери синхронизации, дальше надо проводить термокалибровку - без неё приём не востановится. А также не всегда при приёме пакета (особенно если он неправильный - сбойный) выстанавливался флаг. Вот упрощённая процедура приёма. tick_t4 - таймер по прерыванию 500 мкс tick_25ms - счётчик 25 мс интервалов void RadioRXwork(void) { mode = RADIO_MODE_RX; // Установка DMA для перемещения пакета в радиобуфер dmaRadioSetup(RADIO_MODE_RX); // Начало приёма DMAARM = DMAARM_CHANNEL0; // Arm DMA channel 0 RFST = STROBE_RX; // Switch radio to RX tick_25ms=0; // Обнуление ожидания приёма while (TRUE) { // Опрос поступающего пакета принятого по радио if (pktRcvdFlag) // TRUE значит пришёл пакет и его обрабатывают { pktRcvdFlag = FALSE; // Проверка принятого пакета if (pktCheckValidity()) { // Определяется что должно быть в пакете чтобы приемник его принял // Запись данных в буфер UART и выдача в UART tick_t4=40; // Снхронизация таймеров приёмной и передающей части SIZE_UART_TX_DATA=radioPktBuffer[1]-6; for (temp_i=7; temp_i<=38; temp_i++) uartTxBuffer[temp_i-7] = radioPktBuffer[temp_i]; // Если пакет не пустой, то запрещение прерываний (иначе UART передавал по несколько байтов) и выдача в UART if (SIZE_UART_TX_DATA > 0) {RX_TX_DATA++; uartStartTxForIsr();} return; } // Нам не нужен буфер пакета больше, готовимся к следующему пакету if (SIZE_UART_TX_DATA == 0) {DMAARM = DMAARM_CHANNEL0; RFST = STROBE_RX;} //// <<<<<<<< ЭТО ОБЯЗАТЕЛЬНО!!! } if (tick_25ms>40) // Если не было обмена более 1с - выключаем радиотракт (переводим в режим IDLE) { P2_0=0; RFST = 0x04; //// <<<<<<<< переводим в режим IDLE ЭТО ОБЯЗАТЕЛЬНО!!! Чтобы без термокалибровки в приём не переходило halWait(10); P2_0=1; // Мигание светодиода в дежурном режиме tick_t4=20; break; } } } Кстати, везде где есть проверка флагов использую конструкцию с привязкой по времени while((!pktSentFlag) && (tick_t4!=25)); //////////// ЗДЕСЬ без (tick_t4!=25) ЗАВИСАЛО pktSentFlag = FALSE;
|
|
|
|
|
Jan 29 2009, 10:43
|
Группа: Новичок
Сообщений: 3
Регистрация: 29-01-09
Пользователь №: 44 121

|
Народ, наставьте на путь истинный. Завязался с СС2500 и СС2510. Сейчас в хозяйстве EZ430RF-CC2500 (родной TI) и самопальные СС2511 и СС2510 (макетки, кольцевая антенна). Задача - беспроводной датчик с батарейным питанием (2хAAA). Период опроса - 10 - 60сек (не поллинг, сами просыпаются и отсылают). Размер помещения 6 на 40 метров, где будет работать штук шесть таких датчиков. Второй месяц разбираюсь с исходниками, и смотрю, что это еще на долго. Вопрос к тем, кто уже бился  об эту стену. Надо ли мне simpliciti? В принципе датчик может не контролировать удачность приема - потеря нескольких измерений нестрашна. Может тогда СС2550 + какой-нибудь дешевый проц? Хотя из дополнительных функций теряется возможность изменения частоты опроса и смена номера канала (в соседнем помещении будет работать такой же комплект). PS В EZ430RF в демо убила следующая вещь: при передергивании питания хоста, поинт не переподключается - надо передернуть и поинта.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|