LINUX.ORG.RU

FT232RL + NRF24L01

 ,


0

1

Хочу подключить NRF24L01 к компьютеру через USB. Для этого спаял переходник на базе чипа FT232RL и собираюсь делать SPI через Bitbang.

Вот код: http://pastebin.com/RFyKxJij

Собирается командой gcc -O2 `pkg-config --cflags --libs libftdi1` -o nrf24l01-control main.c

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

Я загружаю данные в пайп, подаю импульс на CE, жду пару секунд, читаю регистр STATUS. Что я ожидаю получить? Статус 0x1E, который бы соответствовал состоянию «пакет отправлен, однако ответа не получено». А получаю статус 0x0E, что до отправки, что после. Как будто я только загрузил данные, но не дёрнул CE. Можно подумать, что я вообще не загружаю данные в пайп, но это не так - после трёх вызовов приложения (если не перетыкать USB-модуль и не очищать пайп SPI-командой TX_FLUSH) я получаю STATUS = 0x0F, что означает переполнение пайпа передачи (пайп вмещает в себя 3 пакета, если они не будут отправлены, то данные будут потеряны). Значит данные загружаются.

Все соединения хороши, я несколько раз проверял мультиметром. К тому же чтение и запись регистров по SPI отлично работает. Также я пробовал другую FTDI и другой радиомодуль с тем же результатом.

★★★★★

Последнее исправление: KivApple (всего исправлений: 1)

Сразу говорю, что я этот nrf24l01 в жизни в глаза не видел.

1. Первое, что требуется: биты PWR_UP=1, PRIM_RX=0 в CONFIG. Установлено? В программе не вижу или не замечаю.

2. Увеличь таймаут на CE хотя бы до 20 мкс, так как 10 мкс ­это минимум.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.