Forum: Mikrocontroller und Digitale Elektronik nRF24L01+ Register Settings Transmit/Receive


von Marco G. (arccra)


Lesenswert?

Hallo zusammen,

ich stehe gerade etwas auf dem Schlauch. Ich will 2 nRF24L01+ 
kommunizieren lassen, schaffe as aber nicht recht. Registe lesen und 
beschreiben klappt ohne Probleme aber die beiden wollen sich einfach 
nicht unterhalten. Eine Library will ich nicht nutzen. Einen 10 nF habe 
ich zur stabilisierung bei beiden verbaut.

So sind aktuell meine Einstellungen der Register wenn ich sie auslese:

RECEIVER SETTINGS:
read from register (0x00): 00001011 POWER UP + RECEIVE MODE

read from register (0x01): 00111111 NOTHING CHANGED: EN_AA Enchanged 
ShockBurst

read from register (0x02): 00000011 NOTHING CHANGED: EN_RXADDR

read from register (0x03): 00000011 NOTHING CHANGED: SETUP_AW

read from register (0x04): 00000011 NOTHING CHANGED: SETUP_RETR

read from register (0x05): 00000010 NOTHING CHANGED: RF_CH

read from register (0x06): 00001111 NOTHING CHANGED: RF_SETUP

read from register (0x07): 00011111 NOTHING CHANGED: STATUS

read from register (0x08): 00000011 NOTHING CHANGED: OBSERVE_TX

read from register (0x09): 00000000 NOTHING CHANGED: CD

read from register (0x0a): 11100111 NOTHING CHANGED: RX_ADDR_P0

read from register (0x0b): 00010000 NOTHING CHANGED: RX_ADDR_P1

read from register (0x0c): 11000011 NOTHING CHANGED: RX_ADDR_P2

read from register (0x0d): 11000100 NOTHING CHANGED: RX_ADDR_P3

read from register (0x0e): 11000101 NOTHING CHANGED: RX_ADDR_P4

read from register (0x0f): 11000110 NOTHING CHANGED: RX_ADDR_P5

read from register (0x10): 11100111 NOTHING CHANGED: TX_ADDR

read from register (0x11): 00000001 PAYLOAD PIPE 0 -> 1 BYTE

read from register (0x12): 00000001 PAYLOAD PIPE 1 -> 1 BYTE

read from register (0x13): 00000000 NOTHING CHANGED: PAYLOAD PIPE 2

read from register (0x14): 00000000 NOTHING CHANGED: PAYLOAD PIPE 3

read from register (0x15): 00000000 NOTHING CHANGED: PAYLOAD PIPE 4

read from register (0x16): 00000000 NOTHING CHANGED: PAYLOAD PIPE 5

read from register (0x17): 00100001 NOTHING CHANGED: FIFO STATUS

TRANSMITTER SETTINGS:
sind die selben nur dass ich ihn als transmitter setze
read from register (0x00): 00001010 POWER UP + TRANSMIT MODE


Einen Payload kann ich in den Transmitter schreiben und das Register 
0x17 (FIFO_STATUS) bestätigt mir das auch mit der TX_EMPTY Flag = 0 bzw. 
TX_FULL Flag = 1. Nach einem 10 Mikrosekunden CE HIGH/LOW tut sich aber 
nichts obwohl der receiver auf CE HIGH steht.

Wie könnte ich z.B. hier herausfinden ob er es zumindest versucht hat 
die Daten zu senden? Im Register (0x08)->  OBSERVE_TX tut sich dabei 
nichts. Sollte es?

Bin für jeden Tipp dankbar. Vielleicht reicht auch ein Weg den ich gehen 
könnte wie man den Fehler findet.

Grüße, Marco

von NRFTestGuy (Gast)


Lesenswert?

Marco G. schrieb:
> Wie könnte ich z.B. hier herausfinden ob er es zumindest versucht hat
> die Daten zu senden?

Ich war vor genau deinem Problem gestanden und habe es mit
einem Rundumschlag erledigt.
Vielleicht ist dir dies noch nicht bekannt und hilft dir:

Beitrag "NRF24L01 - Testprogramm für Windows PC"
(funktioniert leider nur unter 32-Bit Systemen, aber immerhin
unter W7 verifiziert)

und dazu auch

Beitrag "NRF24L01+ test program for Arduino Uno"
Beitrag "NRF24L01+ test program for Arduino Mega"

Marco G. schrieb:
> Bin für jeden Tipp dankbar. Vielleicht reicht auch ein Weg den ich gehen
> könnte wie man den Fehler findet.

Mit einer Seite anfangen (also nur Sender oder nur Empfänger)
und sicherstellen dass diese funkioniert.
Siehe oben.

von NRFTestGuy (Gast)


Lesenswert?

Marco G. schrieb:
> Einen 10 nF habe ich zur stabilisierung bei beiden verbaut.

Du möchtest nicht deinen Aufbau zeigen? Der wäre aber wichtig
hinsichtlich der Versorgung des NRF24.

10 nF sind ärmlich. Ich emfehle (siehe auch meine Testprogramme)
100nF plus 10uF Elko. Und das empfehle ich nicht aus einem
reinen Bauchgefühl heraus. Auch der Aufbau ist nicht völlig
unkritisch.

von Marco G. (arccra)


Lesenswert?

Hallo NRFTestGuy,

beide an einem je einem Raspberry PI mit ausreichend dimensioniertem 
Netzteil. 3,3V Versorgungsspannung für den nRF24L01+ aus einem der 3,3V 
GPIOs des PIs. Ich denke damit sollte es keine Probleme geben.
Die Entfernung der beiden nRF24L01+ ist unter einem Meter. Daran sollte 
es also auch nicht liegen.

Verstehe ich das richtig mit den Pipe Adressen damit sie kommunizieren 
können:

1. nRF24L01+
TX_ADDR = irendeinesinnvolleadresse_1
Pipe 0 RX_ADDR = irendeinesinnvolleadresse_2

2. nRF24L01+
TX_ADDR = irendeinesinnvolleadresse_2
Pipe 0 RX_ADDR = irendeinesinnvolleadresse_1

Also die TX_ADDR des ersten nRF24L01+ ist die RX_ADDR der Pipe 0 des 
zweiten nRF24L01+.und dann natürlich umgekeht.


Grüße, Marco

von Marco G. (arccra)


Lesenswert?

Hallo zusammen,

Problem gelöst, die Jungs kommunizieren miteinander. Wenn jemand wissen 
will wie es funktioniert hat einfach hier melden dann mache ich mir die 
Mühe eine Beschreibung zu erstellen. Grundvoraussetzungen sind: 2x 
Arduino Nano (zum Testen der Hardware) und dann 2x Raspberry Pi.
Ich habe ein Software SPI programmiert, das ist dann recht einfach auf 
einen Mikrocontroller zu übertragen.

Grüße, Marco

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.