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

 
 
 
Reply to this topicStart new topic
> Вопрос по содержимому регистра RXBYTES для CC1100
Alechin
сообщение May 30 2007, 12:08
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



Вопрос в следующем - попытался определять число принятых байтов по значению в RXBYTES и натолкнулся на следующее - максимально возможное значение 0x0f, при том что в буфере лежит гораздо больше.
Т.е. при реальной длине пакета до 15 байтов - все нормально: значение в RXBYTES равно длине пакета плюс 2 (статус добавляется), а если длина принятого пакета больше 15 - значение в регистре все-равно 0x0f, хотя весь пакет успешно принят и находится в буфере, статус в конец пакета добавлен.
Сейчас выкрутился через чтение числа байтов, которое лежим вверху FIFO, но грызут сомнения, вдруг я все-таки что-то не так делаю? Хотя в TI-шном примере они то-же его (RXBYTES) не используют при чтении пакета из буфера (только проверяют, что он не равен нулю).
Go to the top of the page
 
+Quote Post
Elresearch
сообщение May 30 2007, 13:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730



Определяю число принятых байтов по значению в RXBYTES и такого не наблюдал ("максимально возможное значение 0x0f"), а вот пакеты 0-й длины приходили smile.gif
Go to the top of the page
 
+Quote Post
rx3apf
сообщение May 30 2007, 19:38
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Elresearch @ May 30 2007, 17:20) *
Определяю число принятых байтов по значению в RXBYTES и такого не наблюдал ("максимально возможное значение 0x0f"), а вот пакеты 0-й длины приходили smile.gif

Аналогично, никогда не замечал аномального поведения RXBYTES (но вообще согласно эрратам, отслеживать состояние по RXBYTES надо с осторожностью, из-за ошибки в реализации SPI). А вот что до пакетов нулевой длины - а как такое может быть ? Если в RXBYTES ноль - то в FIFO ничего нет. Или там два байта состояния, а самого пакета нет ?
Go to the top of the page
 
+Quote Post
ksv198
сообщение May 31 2007, 06:46
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(Alechin @ May 30 2007, 16:08) *
Вопрос в следующем - попытался определять число принятых байтов по значению в RXBYTES и натолкнулся на следующее - максимально возможное значение 0x0f, при том что в буфере лежит гораздо больше.

Наверное Вы имели ввиду FIFO_BYTES_AVAILABLE в статусном байте. Там реально 4 бита и если пакет больше, то все равно 15 smile.gif

Пакет нулевой длины может "получиться" если не совпала контрольная сумма, а чип сконфигурен на очистку в этом случае. Тогда если в IOCFGх 0х06 то нога дернется, показывая что пакет принят, а в RXBYTES будет ноль.
Go to the top of the page
 
+Quote Post
Alechin
сообщение May 31 2007, 07:34
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



Цитата(ksv198 @ May 31 2007, 10:46) *
Наверное Вы имели ввиду FIFO_BYTES_AVAILABLE в статусном байте. Там реально 4 бита и если пакет больше, то все равно 15 smile.gif

Нет, именно RXBYTES (с адресом 0x3b + 0x80). А почему тогда в TI-шных примерах они его тоже не используют для определения числа байт в FIFO? Меня это смущает. Ведь не логично ориентироваться на длину пакета из самого пакета, а не на реальное число байтов в FIFO (вдруг их меньше).
Go to the top of the page
 
+Quote Post
rx3apf
сообщение May 31 2007, 20:52
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Alechin @ May 31 2007, 11:34) *
Нет, именно RXBYTES (с адресом 0x3b + 0x80).

Вообще-то +0xC0...

Цитата(Alechin @ May 31 2007, 11:34) *
числа байт в FIFO? Меня это смущает. Ведь не логично ориентироваться на длину пакета из самого пакета, а не на реальное число байтов в FIFO (вдруг их меньше).


Почему же ? Если пакет имеет произвольную и неконтролируемую длину, теряется замечательная возможность аппаратной CRC. Вот это - действительно нелогично. Можно использовать и байт длины перед пакетом, можно менять режим другим способом, но в любом случае - длина пакета _должна_ быть известна на принимающей стороне...
Go to the top of the page
 
+Quote Post
plan
сообщение Jun 1 2007, 06:32
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 23-12-05
Из: Украина Днепродзержинск
Пользователь №: 12 599



Цитата(rx3apf @ May 31 2007, 23:52) *
Почему же ? Если пакет имеет произвольную и неконтролируемую длину, теряется замечательная возможность аппаратной CRC. Вот это - действительно нелогично. Можно использовать и байт длины перед пакетом, можно менять режим другим способом, но в любом случае - длина пакета _должна_ быть известна на принимающей стороне...

Не согласен с Вами. В сс1100 и сс2500(с другими не работал) работает описанная возможность. К примеру я отправляю 60 байт и на приемной стороне чип сам определяет длину пакета и декодирует конечную crc и после этого выдает инфу о достоверности принятого пакета. Отправлял пакеты от 1 до 62 байт и приемник аппаратно все определяет. На приемной стороне устанавливаю максимальную длину пакета 255.
Go to the top of the page
 
+Quote Post
ksv198
сообщение Jun 1 2007, 07:01
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(Alechin @ May 31 2007, 11:34) *
...А почему тогда в TI-шных примерах они его тоже не используют для определения числа байт в FIFO?

Потому что пакет может быть длинее чем размер RXFIFO
Цитата
Вообще-то +0xC0...

Кстати, да. Может в этом и проблема?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 11 2007, 07:23
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(plan @ Jun 1 2007, 10:32) *
Не согласен с Вами. В сс1100 и сс2500(с другими не работал) работает описанная возможность. К примеру я отправляю 60 байт и на приемной стороне чип сам определяет длину пакета и декодирует конечную crc и после этого выдает инфу о достоверности принятого пакета. Отправлял пакеты от 1 до 62 байт и приемник аппаратно все определяет. На приемной стороне устанавливаю максимальную длину пакета 255.

"Сам определяет" - это только в том случае, когда первый байт пакета содержит его длину. И он доступен на принимающей стороне. Этот вариант я, кстати, назвал. А другие варианты - пакет фиксированной длины либо "бесконечной" (когда приемник меняет режим на "фиксированный" в процессе приема, также исходя из "знания" длины пакета). Других вариантов нет.
Go to the top of the page
 
+Quote Post
Alechin
сообщение Nov 17 2007, 12:52
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



Цитата
Вообще-то +0xC0...
Кстати, да. Может в этом и проблема?

Сейчас руки дошли поковыряться с тем проектом.
Действительно, надо выставлять флаг BURST для доступа по чтению к статусным регистрам. Иначе получаются стробы и возвращается байт состояния, а там всего 4 бита под длину.
Только сечас нашел в pdf внизу страницы мелким шрифтом указание на это. В общем, внимательнее надо было читать pdf до появления проблем, а не после них.
Go to the top of the page
 
+Quote Post

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

 


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


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