Anwesenheitserkennung NRF24L01

7

Ich habe meine RF73 / RFM73-Bibliothek für den NRF24L01 angepasst. Diese Chips sind fast identisch, außer dass der RFM73 über eine zweite Registerbank verfügt, die mit einigen magischen Werten initialisiert werden muss. Das RFM73 verfügt über einen speziellen Befehl zum Umschalten zwischen den Bänken und ein Bit im Statusregister, das die aktuelle Bank angibt. Dies bietet einen guten Mechanismus, um das Vorhandensein des Chips zu testen (schalten Sie die andere Bank um und prüfen Sie, ob das Bit im Statusregister umschaltet), ohne Einstellungen zu stören oder etwas zu übertragen.

Hat jemand eine Funktion des NRF24L01 gefunden, mit der auf ähnliche Weise das Vorhandensein dieses Chips getestet werden kann?

Wouter van Ooijen
quelle
Meinen Sie den nRF24L01 +? Niemand benutzt mehr den nRF24L01, AFAIK.
Leon Heller
2
Dann denke ich, mein Name ist niemand. Ich benutze einige dx.com-Module, vielleicht ist der Chip in diesen in Wirklichkeit ein 24L01 + oder 24L01B, ich werde es überprüfen. Wenn jemand die Frage für eines dieser verwandten Module beantworten möchte, zögern Sie nicht! +
Wouter van Ooijen
@WoutervanOoijen Eines der nRF24-Module, die ich bei eBay gekauft habe, war ein L01, nicht L01 +, aber der Verkäufer war nett genug, es kostenlos zu ersetzen, als ich darauf hinwies. Möchten Sie das versuchen? Als ich gerade nachgesehen habe, sind die billigeren Module L01, während die etwas teureren anscheinend alle L01 + sind.
Anindo Ghosh
Keine Notwendigkeit zu versuchen, ich habe beide auf Lager. Meine Fragen lauten jedoch weiterhin: Gibt es eine bequeme Möglichkeit für die Anwendung, zu überprüfen, ob der Chip vorhanden ist? (Für zusätzliche Punkte: Wie man einen L01 von einem L01 + unterscheidet)
Wouter van Ooijen
2
Sie können das Statusbyte verwenden, um die Anwesenheit zu überprüfen. Jedes erste Byte, das Sie an den Chip senden, antwortet mit dem Statusbyte. Sie können also einen Dummy senden und den Status lesen.
Sérgio Sena

Antworten:

2

Diese Bibliothek unterscheidet den NRF24L01 vom NRF24L01 +, indem versucht wird, die Datenrate von 250 Kbit / s einzustellen. Wenn dies gelingt, ist der Chip von der Sorte +. Sie können auch versuchen, den Chip ein- und auszuschalten. Es ist unwahrscheinlich, dass Sie andere Treibersoftware stören würden? durch Einstellen und erneutes Einstellen dieser Einstellungen. https://github.com/jpbarraca/pynrf24/blob/master/nrf24.py#L671

Joeforker
quelle
1

Ich kenne nicht alle Ihre Einschränkungen, dh wie viele Bytes Sie zu senden wagen, wenn Sie sich Sorgen machen , dass stattdessen ein anderes SPI-Gerät vorhanden ist oder so, aber vorausgesetzt, Sie sind bereit, etwas Kommunikation zu betreiben [SPI, nicht unbedingt RF] und Da Sie exklusiver Benutzer dieses ausgewählten SPI-Geräts sind, gibt es anscheinend viele Möglichkeiten, dies zu erreichen:

  • Wenn Sie wissen, dass das Radio auf seine Standardeinstellungen zurückgeschaltet wurde, überprüfen Sie, ob RX_ADDR_P0 0xE7E7E7E7E7 ist. Schließt Rauschen und ein paar Bytes mehr nicht vollständig aus als das Überprüfen von zB RF_SETUP-Byte, scheint aber eine anständige Wette zu sein.
  • Wenn Sie gut auf das Gerät schreiben können, setzen Sie RX_ADDR_P0 auf einen fest codierten unwahrscheinlichen oder zufälligen Signalwert und prüfen Sie, ob er korrekt zurückgelesen wird. Ebenso bei jeder anderen Konfiguration (SETUP_RETR scheint ein guter Kandidat für einen Einzelbyte-Wert zu sein).

Keiner dieser Pins bestätigt, dass andere Pins angeschlossen wurden. Dazu müssten Sie wahrscheinlich einen ACK-gesendeten Send versuchen, bei dem er wahrscheinlich fehlschlägt (und daher sollte Ihr CE-Pin, falls verbunden, dazu führen, dass das MAX_RT-Statusbit und der IRQ-Pin gesetzt werden signalisiert). Sie können sich auch nicht von einem möglicherweise ähnlichen Gerät oder so unterscheiden. Aber nur für die grundlegende SPI-Verkabelung sollten die oben genannten Punkte mit Aufzählungszeichen IMO ausreichen.

natevw
quelle