Перейти к содержанию

    

nRF24L01+ баг нашелся.

В общем, ситуация такая. Выявился там огрех с обработкой пакетов в приемнике. Актуально только для режима передачи пакетов Back-To-Back, т.е. с выключенным умом под названием Enhanced Shock Burst.

 

Теперь подробности. Скажем, передаем два пакета подряд - следующий пакет грузим в FIFO в то время, пока передается первый, сигнал CE, естественно, не выключаем. Эти два пакета передаются без какой либо паузы, все хорошо.

 

На приемном конце начинается веселье. Адреса у меня стояли для отладки дефолтные (E7E7E7E7E7), длина адреса была 3 (но это все похоже не суть). Длина CRC - 2 байта.

 

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

 

Для отладки я выключил контроль CRC и увеличил на два значение регистра RX_PW_P0 (чтобы CRC принималась в пакет). На приемной стороне выглядело это так:

 

Первый пакет:

P0 P1 .... Pn CRC0 CRC1

 

Ну как бы все как надо. Второй пакет получался в двух вариантах

 

а) Если второй байт CRC первого пакета не равен первому байту адреса

 

P0 P1 ... Pn CRC0 CRC1

 

б) А вот если второй байт CRC первого пакета равен первому байту адреса (в моем случае - 0xE7), то происходил провал

 

0xE7 P0 P1 ... Pn CRC0

 

Т.е. такое впечатление, что последний байт CRC уже учелся как первый байт адреса. Причем, именно последний байт, заполнять PAYLOAD байтами 0xE7 я пробовал, к провалу это не приводит.

 

Почему игнорируется преамбула второго пакета (точнее, она не сбрасывает в исходное состояние поиск адреса) - я фиг знаю, ну видимо там вот такие кривые руки у HDL-кодера были.

 

Я подозреваю, что тут еще роль играет то, что все байты адреса по дефолту одинаковы. Завтра попробую сделать адрес с разными значениями байтов, возможно это решит проблему. Заодно написал на форум, который у самих NordicSemi есть, но что-то мне кажется, что ближайший месяц они мне будут рассказывать за то, какой я кривой и косой пользователь их продукции ;)

 

 

В общем, не наступите на эти прекрасные грабли, если что.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и workaround сегодня проверил. Не ставьте адрес с повторяющимися байтами и все будет окей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация