Хочу подключить 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 и другой радиомодуль с тем же результатом.