реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Мои мучения с CC2500
bodja74
сообщение Jul 1 2009, 16:35
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(zheka @ Jun 22 2009, 06:32) *
А помогли действительно задержки.

Думаю вам поможет проверка статусного байта.
Детальнее...


Статусный байт

Байт статуса трансивера можно получать на выводе SO при каждой
посылке командного строба ,адресного байта или записи байта данных.
Также байт статуса можно принимать при записи данных в регистры при
Burst доступе.
Статусный байт дает возможность определять готовность SPI к обмену ,
текущий режим ,флаги переполнения Tx FIFO или Rx FIFO,количество свободных байт в Tx FIFO буффере при передаче или оставшихся
байт в Rx FIFO буффере при приеме .

Если данные записываются в трансивер ,статусный байт возвращается при каждой посылке адресного байта,командного строба или данных .
Если данные читаются из трансивера , статусный байт возвращается
при посылке адресного байта или командного строба.

Возможные значения байта CHIP_RDY

7 CHIP_RDYn Бит готовности SPI к обмену,необходимо дожидаться появления лог. 0
6:4 STATE[2:0] Индикатор текущего состояния трансивера
000 IDLE режим
001 RX режим
010 TX режим
011 FSTXON включен частотный синтезатор ,начата передача пакета
100 CALIBRATE производится калибровка частотного синтезатора
101 SETTLING PLL is settling
110 RXFIFO_OVERFLOW RX FIFO переполнен
111 TXFIFO_UNDERFLOW TX FIFO пуст

3:0 FIFO_BYTES_AVAILABLE[3:0] если значение FIFO_BYTES_AVAILABLE[3:0]=15 количество свободных байт RX FIFO в режиме RX не менее 15 или количество оставшихся байт в TX FIFO в режиме TX не менее 15

Цитата
Ладно, установил я длину 256 байт, откуда мне их читать на стороне приема? ОГбычно данные берутся из буфера, который равен 64 байтам.

Опять поможет статусный байт
Детальнее... biggrin.gif
Байт длины пакета используется для определения длины пакета данных ,как для передатчика ,так и для приемника.
Тоесть передатчик включит ровно столько данных в пакет ,сколько будет указано в регистре PKTLEN и от количества данных в Tx FIFO передатчика это не зависит.
Если необходимо передавать пакеты переменной длины ,нужно установить PKTLEN=255 (0xFF) и самостоятельно первым байтом данных указывать длину пакета.
Следует учесть ,что при передаче пакета произвольной длины ,размер пакета равен размер данных+1 байт(длины пакета)
В итоге есть три способа указать длину пакета.
1 Фиксированная длина пакета PKTCTRL0.LENGTH_CONFIG=0,длина пакета указывается в регистре PKTLEN
2 Произвольная длина пакета PKTCTRL0.LENGTH_CONFIG=1,длина пакета указывается первым байтом сразу после синхрослова.
3 Бесконечная длина пакета PKTCTRL0.LENGTH_CONFIG=2

Двух-байтный CRC данных может быть аппаратно подсчитан и включен в передающий пакет при установке PKTCTRL0.CRC_EN =1.
Если в приемнике также установлен PKTCTRL0.CRC_EN =1 ,в нем производиться подсчет принятых данных и проверка на совпадение CRC.
Если CRC не совпал и PKTCTRL1.CRC_AUTOFLUSH=1 пакет не будет размещен в буффере приемника ,при этом следует учесть ,что при установке PKTCTRL1.CRC_AUTOFLUSH=1 ,размер данных в пакете не может быть более 64 байт.

Передающий пакет из МК в трансивер состоит из байта длины пакета (если установлен PKTCTRL0.LENGTH_CONFIG=1) и данных.
Если PKTCTRL0.LENGTH_CONFIG=0 количество данных в пакете фиксировано и байт длины пакета добавляется аппаратно.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 2 2009, 03:13
Сообщение #32


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата
Если PKTCTRL0.LENGTH_CONFIG=0 количество данных в пакете фиксировано и байт длины пакета добавляется аппаратно


Фиксировано и равно тому что указано в PKTLEN?
Если да, то зачем тогда аппаратная добавка длины ?
Как работает приемник, то есть как он определяет длину пакета в этом случае - ориентируется ли он на PKTLEN при приеме, или анализирует саму принимаемую информацию? Если PKTLEN и байт длины не совпадают, что тогда?
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Jul 2 2009, 06:30
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(bodja74 @ Jul 1 2009, 20:35) *
7 CHIP_RDYn Бит готовности SPI к обмену,необходимо дожидаться появления лог. 0
6:4 STATE[2:0] Индикатор текущего состояния трансивера
000 IDLE режим
001 RX режим
010 TX режим
011 FSTXON включен частотный синтезатор ,начата передача пакета
100 CALIBRATE производится калибровка частотного синтезатора
101 SETTLING PLL is settling
110 RXFIFO_OVERFLOW RX FIFO переполнен
111 TXFIFO_UNDERFLOW TX FIFO пуст

поправлю = FSTXON - просто запущен синтезатор. Ничего в этом состоянии не передается. Но перевод трансивера из FSTXON в TX или RX делается гораздо быстрее, так как не требуется собственно включение синтезатор и его калибровка (если она включена автоматически).
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 2 2009, 07:18
Сообщение #34


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Ковыряюсь с подстройкой частоты. Что-то не получается.

Правильно ли я делаю? :
1.Строб SIDLE
2. Изменяю регистр FREQ0
3. Строб SCAL

И еще - где-то, в руководстве написанном ksv198 читал, что регистры можно изменять парами - не надо следить за перемолнением младшего байта и пример на ассемблере.
А как это ГРАМОТНЕЕ и ПРАВИЛЬНЕЕ сделать в C? Ну то есть за пределы одной единицы FREQ2 я точно не вылечу - диапазон не позволит, менять надо только два регистра, работая с ними как с одним - я так понял.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 3 2009, 22:01
Сообщение #35


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Почему RSSI и LQI в статусных регистрах отличаются от тех, что приходят с пакетом? Какие правильнее использовать?
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 4 2009, 09:17
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(zheka @ Jul 2 2009, 07:13) *
Фиксировано и равно тому что указано в PKTLEN?
Если да, то зачем тогда аппаратная добавка длины ?

Да я и сам не против бы задать такой вопрос,по идее в даташите длина пакета присоединяется опционально и при PKTCTRL0.LENGTH_CONFIG=0 длины пакета в пакете не должно быть.
Хотя однозначного ответа в даташите на этот вопрос я так и не нашел.
У меня еще камни "родные" чипконовские laughing.gif ,может ревизия не та ,может не до конца разобрался
с настройками.
В целом остановился на переменной длине пакета ,думаю так проще приемнику.
Цитата
Как работает приемник, то есть как он определяет длину пакета в этом случае - ориентируется ли он на PKTLEN при приеме, или анализирует саму принимаемую информацию? Если PKTLEN и байт длины не совпадают, что тогда?

На PKTLEN при приеме ориентируется ,индикаторы RSSI и LQI закидывает фиг знает куда, это точно biggrin.gif ,
поэтому я опять остановил свой выбор на переменной длине.
Ничего же не мешает передавать переменную длину фиксированно biggrin.gif ,зато RSSI и LQI четко сидят на хвосте.
Цитата
Почему RSSI и LQI в статусных регистрах отличаются от тех, что приходят с пакетом? Какие правильнее использовать?

Было у меня тоже такое ,правильнее те ,что с пакетом идут.
Там при изненении режима или при переходе в режим IDLE есть целый ряд регистров которые могут затираться,
сейчас точно не вспомню ,нада даташит покурить.
Цитата
Правильно ли я делаю? :
1.Строб SIDLE
2. Изменяю регистр FREQ0
3. Строб SCAL

Правильно,я допустим выводил содержание пакета и индикаторы на терминалку и подстраивал приемник,
,добиваясь наилучшего LQI ,неплохо получалось даже на безродных кварцах.
Так что с этим проблем не должно быть.
Цитата
поправлю = FSTXON - просто запущен синтезатор

Вы правы ,думаю FSTXON это готовность синтезатора.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 5 2009, 16:34
Сообщение #37


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



у меня от расстояния пропорционально изменяется RSSI, при этом LQI остается неизменным - в районе 150-170. И лишь когда RSSI становится меньше 20 и вовсе пропадает, LQI резко подскакивает до 255. Так что производит тонкую подстройку по LQI нецелесообразно. ИЛи я где-то не прав?
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 7 2009, 08:43
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Для начала снесите бит CRC_OK с LQI ,а то цифры для него нереальные.
Значение LQI должно стремиться к нулю.
LQI - это индикатор качества сигнала ,и зависит больше от совпадения частот ,чем от самой мощности.
В цемом все увидите сами ,когда будете играться не с дальностью ,а с настройкой частоты.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 7 2009, 15:41
Сообщение #39


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Настройкой? Я игрался с настройкой - и RSSI и LQI сначала мало менялись, потом резко ушли, такое ощущение, что до последнего работала какая-то автоподстройка.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 7 2009, 17:27
Сообщение #40


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



У вас дальность какая на уверенном приеме ?
Пропадает ли сигнал при незначительной помехе,типа перекрыть прямую видимость собственным телом?
Какая модуляция ,скорость,полоса фильтра,антенна?
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 8 2009, 08:07
Сообщение #41


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Дальность проверял только в помещении. Точную подстройку чатсоты не производил.
на 6 метрах периодически теряется несущая если между приемником и передатчиком собственное тело. Выхожу на балкон, приседаю - что с телом, что без тела - периодически теряется несущая. На кухне - препятствие - бетонная стена и деревянная дверь, расстояне 7 метров тоже периодически теряется несущая. Если не приседать (препятствие стекло) то получается 7,5 м дальность. На бельевые веревки не залазил ))) Целостность пакетов при присутствующей несущей не проверял, но подозреваю, что если постоянно меняется LQI и RSSI, то пакеты все же целы. Тем более, у меня какой-то глюк в программе, если хоть один пакет теряется, то информация на экране перестает обновляться, так что разрыв связи ловлю четко.

Антенна - петля на плате. Все осстальное:
Код
/ Chipcon
// Product = CC2500
// Chip version = E
// Crystal accuracy = 10 ppm
// X-tal frequency = 26 MHz
// RF output power = 0 dBm
// RX filterbandwidth = 551.067708 kHz
// Phase = 1
// Datarate = 250.240707 kbps
// Modulation = (7) MSK
// Manchester enable = (0) Manchester disabled
// RF Frequency = 2432.999988 MHz
// Channel spacing = 199.788952 kHz
// Channel number = 0
// Optimization = Sensitivity
// Sync mode = (3) 30/32 sync word bits detected
// Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX
// CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
// Forward Error Correction = (0) FEC disabled
// Length configuration = (1) Variable length packets, packet length configured by the first received byte after sync word.
// Packetlength = 255
// Preamble count = (2)  4 bytes
// Append status = 1
// Address check = (0) No address check
// FIFO autoflush = 1
// Device address = 0


Единственное - все элементы у меня 0805, но они на кварце, на фильрах по питанию. У меня нет цепи согласования с антенной (для PCB она по рефдезайну не требуется), потому и нет критичных к типоразмеру элементов. Тут кому-то говорили, что мол в таком случае можно использовать и 0805.

Вопрос - если у меня передатчик настроен на +1 dbm, то при расположении приеника ну практически вплотую, при ориентации антенн друг на друга какой RSSI должен быть?

Сообщение отредактировал zheka - Jul 8 2009, 08:10
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 10 2009, 14:04
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(zheka @ Jul 8 2009, 12:07) *
Тем более, у меня какой-то глюк в программе, если хоть один пакет теряется, то информация на экране перестает обновляться, так что разрыв связи ловлю четко.

Дайте угадаю ,у вас даже при включении питания связь устанавливается через раз biggrin.gif
В целом дальность никакая laughing.gif
Цитата
// RX filterbandwidth = 551.067708 kHz
// Phase = 1
// Datarate = 250.240707 kbps
// Modulation = (7) MSK

Вот это я и ожидал увидеть,так сказать неуспели настроить камень,зато газуем на полную biggrin.gif
Для начала сделайте FSK ,она менее привередлива к точности частоты , RX filterbandwidth около 200кгц
чем шире полоса ,говоря простыми словами ,тем хуже прием
,когда поймаете сигнал ,сможете сузить ,ну естественно не меньше чем сама девиация ,ну и скорость допустим 10kbps.
Примерно на этих настройках сможете получить оптимальное соотношение скорости и дальности.
Цитата
Единственное - все элементы у меня 0805, но они на кварце, на фильрах по питанию. У меня нет цепи согласования с антенной (для PCB она по рефдезайну не требуется), потому и нет критичных к типоразмеру элементов. Тут кому-то говорили, что мол в таком случае можно использовать и 0805.

Да ,типоразмер здесь не важен.
Саму антенну лучше делать по волновому сопротивлению близким ко входу трансивера или через балун.
хотя это даст процентов 10-20 улучшения ,так что сней можно играться на последнем этапе.
Цитата
Вопрос - если у меня передатчик настроен на +1 dbm, то при расположении приеника ну практически вплотую, при ориентации антенн друг на друга какой RSSI должен быть?

В среднем 60-70 при этом постоянно менялось ,наверное из за отраженых сигналов.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 10 2009, 15:11
Сообщение #43


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Цитата
Дайте угадаю ,у вас даже при включении питания связь устанавливается через раз


Нет с этим все ОК
Цитата
Вот это я и ожидал увидеть,так сказать неуспели настроить камень,зато газуем на полную


Здешний обитатель ks148 писал что месяц убитл на попытки запустить на частоте 9600 бод. ПОлучалась лажа , которая чудесным образом исчезла при включении 250 кбод. Этим я и руководствовался.

Цитата
В среднем 60-70 при этом постоянно менялось ,наверное из за отраженых сигналов.


Таки вы меня путаете. У меня рекорд RSSI при расположени вплотную - 102 (в десятичном формате), а вы пишете, что 60-70 и при этом называете мою дальность никакой.
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jul 10 2009, 16:01
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(zheka @ Jul 10 2009, 19:11) *
Таки вы меня путаете. У меня рекорд RSSI при расположени вплотную - 102 (в десятичном формате), а вы пишете, что 60-70 и при этом называете мою дальность никакой.

Зато у меня LQI от 0 до 5 biggrin.gif
Если сигнал будет слабым ,но достаточно чистым ,тоесть качественным ,приемник возьмет его без проблем.
Я писал выше ,что лучше опираться на LQI.
А хорошая дальность для этих трансиверов ,это когда они будут брать по всей квартире из любой точки,с любой направленостью антенны ,со всеми препятствиями какие могут быть в квартире ,стены ,шкафы и люди в придачу.
Я свой трансивер даже в микроволновку запихнул laughing.gif и ходил кругами ,чтобы поймать положение при котором трансивер иногда пропускал пакеты.
По крайней мере это то ,что я смог добиться от них ,возможно они еще лучше лупят.

Цитата
Здешний обитатель ks148 писал что месяц убитл на попытки запустить на частоте 9600 бод. ПОлучалась лажа , которая чудесным образом исчезла при включении 250 кбод. Этим я и руководствовался.

Чем выше скорость ,тем хуже дальность.У ks148 наверное не все удачно пошло ,как по софту так и по железу.
Go to the top of the page
 
+Quote Post
zheka
сообщение Jul 10 2009, 17:03
Сообщение #45


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Вот вам мое чудо засунутое под сканер.
МОжет быть какие-конструктивные замечания будут?
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 16:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01687 секунд с 7
ELECTRONIX ©2004-2016