Собрал два модуля, на базе Arduino Nano (без использования программных оболочек arduino), к нему подключил модуль NRF24L01+ c полосковой антенной, запитываю от FT232R на Nano, 3.3V.
Модули получены от разных китайских шопов, в чем и подозреваю загвоздку. Визуально отличаются незначительно, только расположением элементов.
Написал программку, для передачи 8-и байт (тестировал и 1 байт), и тут начались чудеса. Данные передаются, менял модули местами, поэтому приемный и передающий тракт на обоих модулях рабочий, но ACK - не принимается, после передачи взлетает MAX_RT и хоть ты тресни. Данные передаются стабильно, модули рядом друг с другом, тестировал на 250кбит и 1Мбит.
Регистры (все в hex, регистр:значение), различаются на приемнике в соответствующих частях STATUS/FIFO_STATUS, ну и конечно флажок PTX/PRX.
0:b 1:1 2:1 3:3 4:ff 5:0 6:6 7:e 8:0 9:1 a:de b:c2 c:c3 d:c4 e:c5 f:c6 10:de 11:0 12:0 13:0 14:0 15:0 16:0 17:11 18:0 19:0 1a:0 1b:0 1c:1 1d:5
Регистры вроде-бы несколько раз перепроверил, все верно. Маркировка чипов тоже вроде нормальная (с плюсом).
Черновой кусок кода для передачи данных
Код
NRF24L01_RXTX(NRF_TX, 8, dd);
while (NRF24L01_NOOP() == 0xe);
spi_data = NRF24L01_NOOP();
if (spi_data & 0x10) {
printf("Error %x CLR\r\n", spi_data);
}
while (NRF24L01_NOOP() == 0xe);
spi_data = NRF24L01_NOOP();
if (spi_data & 0x10) {
printf("Error %x CLR\r\n", spi_data);
}
NOOP считывает статус регистр.
RXTX посылает 0xA0 и потом данные, там вроде как тоже ничего особенного.
Может там перепиленный NRF24L01 без плюса? Или ревизии разные?
Никто не сталкивался с такими чудесами?