nRF24L01+ Невозможно установить адрес

Я пытаюсь установить связь между Arduino Nano и Arduino Uno с помощью nRF24L01+.

Я пробовал использовать RF24 от ManiacBug и TMRH20, но когда я открываю последовательный монитор после загрузки примеров программ «Начало работы с ManiacBug» и программы pingpair от TMRH20, он не меняет свой адрес.

Я использую адреса для чтения и записи: 0xF0F0F0F0E1LL и 0xF0F0F0F0D2LL, но ответ, который я получаю, следующий:

Я проверил все соединения и попробовал разные примеры, доступные в Интернете, но ничего не помогло.

, 👍0


1 ответ


Лучший ответ:

1

Вы можете установить адреса с помощью команд SPI. Например, 5-байтовый адрес передатчика может быть записан как (сначала старший бит):

  digitalWrite(CSN_pin, LOW);
  SPI.transfer(0x30); // write TX_ADDR register
  SPI.transfer(tx_addr[0]);
  SPI.transfer(tx_addr[1]);
  SPI.transfer(tx_addr[2]);
  SPI.transfer(tx_addr[3]);
  SPI.transfer(tx_addr[4]);
  digitalWrite(CSN_pin, HIGH);

где tx_addr — массив из 5 байт. Аналогичным образом вы можете записывать в регистры RX_ADDR, схему регистров см. в таблице данных nRF24L01+, раздел 9.

Кроме того, следующий код позволяет вам прочитать регистр TX_ADDR:

  digitalWrite(CSN_pin, LOW);
  SPI.transfer(0x10); // читаем регистр TX_ADDR
  data_out[0] = SPI.transfer(0x0);
  data_out[1] = SPI.transfer(0x0);
  data_out[2] = SPI.transfer(0x0);
  data_out[3] = SPI.transfer(0x0);
  data_out[4] = SPI.transfer(0x0);
  digitalWrite(CSN_pin, HIGH);

  Serial.print("TX_ADDR=");
  Serial.print(data_out[0]);
  Serial.print(data_out[1]);
  Serial.print(data_out[2]);
  Serial.print(data_out[3]);
  Serial.println(data_out[4]);
,

@MichaeIT Я попробовал это решение, но безуспешно. Я просмотрел ветку https://github.com/nRF24/RF24/issues/211, но все равно безуспешно., @Teck Freak

Попробуйте писать и читать, как предложено в приведенном выше примере. Если это не помогло, значит, возникла проблема с SPI., @MichaelT

Я попробовал это и получил ответ 00000. Проблема с SPI Arduino или nRF? Как я пробовал разные nRF и Arduino., @Teck Freak

@MichaeIT Мне удалось заставить его работать на Arduino Uno, подключив контакты MISO, MOSI и SCK непосредственно к контактам заголовка ICSP, но в Arduino Nano это не удалось., @Teck Freak