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

 
 
> Вопрос по содержимому регистра 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
 
Start new topic
Ответов
ksv198
сообщение May 31 2007, 06:46
Сообщение #2


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

Группа: Участник
Сообщений: 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
Сообщение #3


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

Группа: Свой
Сообщений: 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
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 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
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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
rx3apf
сообщение Jun 11 2007, 07:23
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 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



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:52
Рейтинг@Mail.ru


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