NRF24L0+ Problem

Gast #4788439
Lesenswert?
• ▲
▼
Hallo,
ich versuche gerade 2 NRF24L0+ Boards zum Laufen zu bekommen.
Ein Board ist der Sender, das andere der Empfänger.
Ich hab beide mit einem zusätzlichen Kondensator ausgestattet (47uF).

Der Empfänger wird wie folgt betrieben:
1
  nrf_set_ce(NRF_CE_RX); //Set High
2
  
3
  nrf_start_write_register(0x00);
4
  spi_send_byte((1<<6)|(1<<1)|(1<<0)); //RX Interrupt,PRX mode, Wake UP
5
  spi_css(SPI_SLAVE_DESELECT);
6
  
7
  
8
  nrf_start_write_register(0x01);
9
  spi_send_byte((1<<0)); //Auto Ack
10
  spi_css(SPI_SLAVE_DESELECT);
11
  
12
  
13
  nrf_start_write_register(0x02);
14
  spi_send_byte((1<<0)); //Enable Pipeline
15
  spi_css(SPI_SLAVE_DESELECT);
16
  
17
  
18
  nrf_start_write_register(0x03);
19
  spi_send_byte(0x01); //3Byte Adress  
20
  spi_css(SPI_SLAVE_DESELECT);
21
  
22
  nrf_start_write_register(0x05);
23
  spi_send_byte(40); //RF Channel  
24
  spi_css(SPI_SLAVE_DESELECT);
25
  
26
  nrf_start_write_register(0x06);
27
  spi_send_byte((1<<5)|(00<<1)); //250kbps; RF Power
28
  spi_css(SPI_SLAVE_DESELECT);
29
  
30
  nrf_start_write_register(0x11);
31
  spi_send_byte(0x1);//Payload number of bytes
32
  spi_css(SPI_SLAVE_DESELECT);
33
  
34
  nrf_start_write_register(0x10);
35
  spi_send_byte(0xE7);//TX Adress
36
  spi_send_byte(0xE7);//TX Adress
37
  spi_send_byte(0xE7);//TX Adress
38
  spi_css(SPI_SLAVE_DESELECT);
39
  
40
  nrf_start_write_register(0x0A);
41
  spi_send_byte(0xE7);//RX Adress
42
  spi_send_byte(0xE7);//RX Adress
43
  spi_send_byte(0xE7);//RX Adress
44
  spi_css(SPI_SLAVE_DESELECT);

Sender:
1
  nrf_set_ce(NRF_CE_RX);//CE High for transmit
2
  
3
  nrf_start_write_register(0x00);
4
  spi_send_byte((1<<5)|(1<<1)); //RX Interrupt,PTX mode
5
  spi_css(SPI_SLAVE_DESELECT);
6
  
7
  nrf_start_write_register(0x01);
8
  spi_send_byte((1<<0)); //Auto Ack
9
  spi_css(SPI_SLAVE_DESELECT);
10
  
11
  
12
  nrf_start_write_register(0x03);
13
  spi_send_byte(0x01); //3Byte Adress  
14
  spi_css(SPI_SLAVE_DESELECT);
15
  
16
  nrf_start_write_register(0x05);
17
  spi_send_byte(40); //RF Channel  
18
  spi_css(SPI_SLAVE_DESELECT);
19
  
20
  nrf_start_write_register(0x06);
21
  spi_send_byte((1<<5)|(00<<1)); //250kbps; RF Power
22
  spi_css(SPI_SLAVE_DESELECT);
23
  
24
  nrf_start_write_register(0x11);
25
  spi_send_byte(0x1);//RF Payload number
26
  spi_css(SPI_SLAVE_DESELECT);
27
  
28
  nrf_start_write_register(0x10);
29
  spi_send_byte(0xE7);//TX Adress
30
  spi_send_byte(0xE7);//TX Adress
31
  spi_send_byte(0xE7);//TX Adress
32
  spi_css(SPI_SLAVE_DESELECT);
33
  
34
  nrf_start_write_register(0x0A);
35
  spi_send_byte(0xE7);//RX Adress
36
  spi_send_byte(0xE7);//RX Adress
37
  spi_send_byte(0xE7);//RX Adress
38
  spi_css(SPI_SLAVE_DESELECT);

Senden eines Bytes
1
        spi_css(SPI_SLAVE_SELECT);
2
        spi_send_byte(NRF_W_TX_PAYLOAD); //0xA0
3
        spi_send_byte(0x01);
4
        spi_css(SPI_SLAVE_DESELECT);  
5

6

7

8
  nrf_set_ce(NRF_CE_TX); //High
9
  timer_delay_ms(2);
10
  nrf_set_ce(NRF_CE_RX); //Low

Empfangen:
Durch NOP-> liefert 0x0E = keine RX Daten

Das SPI Timing stimmt, habe ich durch Logic Analyzer kontrolliert.

Beim Sender erhalte ich das Status-Byte 0x1F = Kein Rx, TX Buff voll, 
Maximum of retransmits



Ich habe keine Ahnung mehr wo der Fehler liegen könnte.
Die Boards sind vieleicht 50cm auseinander.

Vielen vielen Dank schon im vorraus.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.