|
CC2500 как использовать FEC ? |
|
|
|
Mar 3 2012, 12:20
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Как его использовать ??
Выставил фиксированную длину пакета, FEC включил, используются добавочные байты RSSI и LQI.
Пробую передать посылку 8 байт. Какое значение нужно указывать в PKTLEN? Размер посылки, размер посылки+ CRC, размер посылки + CRC + Trellis terminator ?
На принимающей стороне при вижу, что приходит пакет длинной 0x0F. В начале вижу свои данные, дальше идет мусор. Сначала думал, что сразу за моими данными идет RSSI и LQI. Но вижу, что бит CRC пляшет рандомно.
Попробовал передать посылку 6ть байт. На входе снова 15ть байт и ситуация как и выше.
Перешел на посылку в 12ть байт. Тут снова приходить пакет длинной 15ть байт. Но в посылке вижу только первые восемь байт мои. Остальное мусор. Очень редко доходят все 12ть байт.
Прочитал даташит и два апнота по FEC, но так и не понял как его настроить.
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Mar 3 2012, 13:41
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Хорошо. Сейчас попробую. В даташите написано, что для включения FEC нужно установить фиксированную длину пакета.
Если работать с переменной, то все работает но походу FEC не кодирует.
|
|
|
|
|
Mar 3 2012, 15:17
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Провел эксперимен.
Длина 12 и 14 не работают.
Но 8 и 16ть работают. В даташите нигде нет упоминания насчет кратности 8ми.
|
|
|
|
|
Mar 3 2012, 16:08
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Это я поспешил.
Нужно всетаки все настройки еще проглядеть. Т.к. с выключенным FEC и фиксированной длинной меньше потерянных пакетов, чем со включенным FEC.
Нашел ошибку. За основу брал код от техаса.
У них функция отправки ориентирована на переменную длину пакета. Т.е. в начале отправляется длинна а после полезные данные. Я ее переписал не глядя.
|
|
|
|
|
Mar 3 2012, 19:31
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Господа. А как же тогда работает функция CRC_AUTOFLUSH ?
Приходит посылка. Считываю ее, вижу CRC флаг не совпал. Но ведь почему посылка не сбросилась ? Вторая ситуация. Приходит посылка, считываю ее и вижу что после этого в буфере есть еще байты а это уже признак того, что пришло что-то левое или посылка битая. Но у меня ведь стоит фиксированный PKTLEN. Почему все лишнее не отбрасывается?
Вычитал в даташите, что при использовании CRC_AUTOFLUSH и APPEND нужно учитывать дополнительные два байта. Это не помогло. Вырубил APPEND и это тоже не дало эффекта.
|
|
|
|
|
Mar 3 2012, 21:27
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
Я начинаю считывать пакет только после перехода в состояние Idle.
Также думал, что регистр RXBYTES показывает сколько байт находится в rx буфере. Но если сбросить буфер, то он показывает 31 (на это число настрое порог, и даже если порог FIFOTHR изменить то 31 так и останется). После завершения приема он почему-то становится равным 0x0F. При этом не важно сколько передано байт.
|
|
|
|
|
Mar 3 2012, 22:58
|
Группа: Новичок
Сообщений: 8
Регистрация: 3-03-12
Пользователь №: 70 586

|
C AUTOFLUSH разобрался. Помогло внимательное чтение даташита.
Он у меня срабатывал. Но я это событие неправильно обрабатывал.
При включенном AUTOFLUSH нужно сначала проверить состояние буфера а уже потом читать. Если забрать посылку(и при этом произошел AUTOFLUSH ) а уже после проверить состояние, то у CC2500 сносит голову. Для возрата его в нормальное рабочее состояние нужно сделать сброс RX буфера.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|