Forum: Mikrocontroller und Digitale Elektronik Arduino RFM70


von Modellflieger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo alle meiteinander =)
Ich bastel schon einige Zeit an einer Funkbrücke zwischen 2x Arduino Pro 
Mini 328p 5V/16Mhz auf basis der RFM70 Funkmodule. Die Wahl ist auf 
diese Funkmodule gefallen, da ich für die Schaltung nur begrenzten Platz 
habe. Ich habe mir aus verschiedenen Quellen einen Code zusammengesucht, 
weil ich mich mit diesen Funkmodulen noch nicht sehr gut auskenne und 
das Datenblatt etwas dürftig ist. Langsam weiß ich aber nicht mehr, was 
ich noch versuchen könnte. Ich krieg einfach nichts übertragen.
Die Pinbelegung sieht so aus:
Schaltung wird mit 3,3V versorgt (<-könnte hier schon das Problem 
liegen?)
Das SPI Interface der Funkmodule ist mit den Arduinos verbunden
Miso=Miso, Mosi=Mosi, CSN=SS Pin14, CE=Pin 1, SCK=SCK,
IRQ=INT0 Pin32 am Atmega328p.
Die Arduinos hängen fürs Debugging an jeweils einer seriellen Verbindung 
zum PC, damit ich sehen kann ob was ankommt.
Nach meinen jetzigen Tests kommt eine Verbindung zwischen Arduino und 
RFM70 zustande, aber nicht zwischen den beiden RFMs.
Ich wäre mehr als dankbar, wenn mir jemand von euch Profis weiterhelfen 
könnte.


Grüße Modellflieger

von kein (Gast)


Lesenswert?

Modellflieger schrieb:
> das Datenblatt etwas dürftig ist

Das würde ich so nicht sagen. Da steht schon alles drin, was man wissen 
muss.
Für den Anfang vermisst man halt einen Ablaufplan, der einem die 
notwendigen Schritte zur Initialisierung vorgibt.
Das nächste Problem ist das Zusammensuchen von Code aus verschiedenen 
Quellen. Es gibt zwar den Beispiel-Code vom Hersteller, aber der ist 
auch nicht 100%ig sinnvoll. Es werden z.B. Register mit demselben Inhalt 
initialisiert, den sie nach dem Einschalt-Reset sowieso schon haben. Und 
es werden auch einzelne Bit gesetzt, obwohl sie oder das ganze Register 
den Status "read only" haben.
Also macht man sich die Mühe, die Register alle der Reihe nach 
anzuschauen un kann dann überlegen, welchen Wert man ihnen verpasst.

Zur Inbetriebnahme der Module muss natürlich zuerst die 
SPI-Schnittstelle funktionieren. (Clock Idle Low und senden mit 
steigender Clockflanke).

Die Initialisierung von Sender und Empfänger läuft dann wie folgt:

Wartezeit nach dem Einschalten.
In Bank 0 die Register 0-7 und 17-22 beschreiben,
dann in Bank 1 die Register 0-5 und 12-14.
Dann zur Bank 0 zurückschalten und das ACTIVATE-Kommando ausführen.
Jetzt fehlen noch die Register 28 und 29 in Bank 0
und das Kommando FLUSH_TX oder FLUSH_RX, jenachdem, ob gesendet oder 
empfangen werden soll. (Tx und Rx Init unterscheiden sich nur im 
Register 0 in Bank 0 und dem FLUSH_TX oder _RX Kommando.

Die Init ist somit fertig.

Erst jetzt schalte ich die Chip-Enable Leitung auf High.
Dann kanns losgehen:

beim Sender:
- Status lesen, wenn Bit5, TX_DS Data sent "0" ist
- per Kommando W_TX_PAYLOAD Daten in den Tx-FIFO schreiben
- warten, bis das RF-Modul mit Daten senden fertig ist -> IRQ Pin "Low"
- IRQ löschen (Bit5, TX_DS im Status Register auf "1" setzen)
- ...

beim Empfänger:
- warten, bis das RF-Modul Daten empfangen hat -> IRQ Pin "Low"
- per Kommando W_RX_PAYLOAD Daten aus dem Rx-FIFO lesen
- IRQ löschen (Bit6, RX_DR im Status Register auf "1" setzen)
- ...

Ach ja, bei der Wahl der RF-Frequenz sollte man vielleicht nicht 
dieselbe wählen, die man fürs eigene WLAN benutzt oder die des Nachbarn.


Viel Erfolg.

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.