|
|
  |
Вопрос по содержимому регистра RXBYTES для CC1100 |
|
|
|
May 30 2007, 12:08
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Вопрос в следующем - попытался определять число принятых байтов по значению в RXBYTES и натолкнулся на следующее - максимально возможное значение 0x0f, при том что в буфере лежит гораздо больше. Т.е. при реальной длине пакета до 15 байтов - все нормально: значение в RXBYTES равно длине пакета плюс 2 (статус добавляется), а если длина принятого пакета больше 15 - значение в регистре все-равно 0x0f, хотя весь пакет успешно принят и находится в буфере, статус в конец пакета добавлен. Сейчас выкрутился через чтение числа байтов, которое лежим вверху FIFO, но грызут сомнения, вдруг я все-таки что-то не так делаю? Хотя в TI-шном примере они то-же его (RXBYTES) не используют при чтении пакета из буфера (только проверяют, что он не равен нулю).
|
|
|
|
|
May 31 2007, 06:46
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(Alechin @ May 30 2007, 16:08)  Вопрос в следующем - попытался определять число принятых байтов по значению в RXBYTES и натолкнулся на следующее - максимально возможное значение 0x0f, при том что в буфере лежит гораздо больше. Наверное Вы имели ввиду FIFO_BYTES_AVAILABLE в статусном байте. Там реально 4 бита и если пакет больше, то все равно 15 Пакет нулевой длины может "получиться" если не совпала контрольная сумма, а чип сконфигурен на очистку в этом случае. Тогда если в IOCFGх 0х06 то нога дернется, показывая что пакет принят, а в RXBYTES будет ноль.
|
|
|
|
|
May 31 2007, 07:34
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Цитата(ksv198 @ May 31 2007, 10:46)  Наверное Вы имели ввиду FIFO_BYTES_AVAILABLE в статусном байте. Там реально 4 бита и если пакет больше, то все равно 15  Нет, именно RXBYTES (с адресом 0x3b + 0x80). А почему тогда в TI-шных примерах они его тоже не используют для определения числа байт в FIFO? Меня это смущает. Ведь не логично ориентироваться на длину пакета из самого пакета, а не на реальное число байтов в FIFO (вдруг их меньше).
|
|
|
|
|
May 31 2007, 20:52
|
Гуру
     
Группа: Участник
Сообщений: 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. Вот это - действительно нелогично. Можно использовать и байт длины перед пакетом, можно менять режим другим способом, но в любом случае - длина пакета _должна_ быть известна на принимающей стороне...
|
|
|
|
|
Jun 1 2007, 06:32
|

Участник

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

|
Цитата(rx3apf @ May 31 2007, 23:52)  Почему же ? Если пакет имеет произвольную и неконтролируемую длину, теряется замечательная возможность аппаратной CRC. Вот это - действительно нелогично. Можно использовать и байт длины перед пакетом, можно менять режим другим способом, но в любом случае - длина пакета _должна_ быть известна на принимающей стороне... Не согласен с Вами. В сс1100 и сс2500(с другими не работал) работает описанная возможность. К примеру я отправляю 60 байт и на приемной стороне чип сам определяет длину пакета и декодирует конечную crc и после этого выдает инфу о достоверности принятого пакета. Отправлял пакеты от 1 до 62 байт и приемник аппаратно все определяет. На приемной стороне устанавливаю максимальную длину пакета 255.
|
|
|
|
|
Jun 1 2007, 07:01
|
Частый гость
 
Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964

|
Цитата(Alechin @ May 31 2007, 11:34)  ...А почему тогда в TI-шных примерах они его тоже не используют для определения числа байт в FIFO? Потому что пакет может быть длинее чем размер RXFIFO Цитата Вообще-то +0xC0... Кстати, да. Может в этом и проблема?
|
|
|
|
|
Nov 17 2007, 12:52
|
Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334

|
Цитата Вообще-то +0xC0... Кстати, да. Может в этом и проблема? Сейчас руки дошли поковыряться с тем проектом. Действительно, надо выставлять флаг BURST для доступа по чтению к статусным регистрам. Иначе получаются стробы и возвращается байт состояния, а там всего 4 бита под длину. Только сечас нашел в pdf внизу страницы мелким шрифтом указание на это. В общем, внимательнее надо было читать pdf до появления проблем, а не после них.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|