Forum: Mikrocontroller und Digitale Elektronik RFM12 - Software oder Hardware SPI


von RFm - User (Gast)


Lesenswert?

Hallo,

ich möchte die RFM12 Module einsetzen, habe zwei Devices am SPI - Bus 
dran, so dass ich eine Software und eine Hardware - Lösung nehmen 
möchte.

Ist es möglich die RFM12 Module am Hardware SPI eines Mega32 zu 
betreiben?
Ich habe leider bisher im Archiv Beträge gefunden, in denen von einer 
Softwarelösung die Rede ist. Ist die Ansteuerung nur so möglich?

Gruß

von R. W. (quakeman)


Lesenswert?

Mal andersherum gefragt, wieso sollten die RFM12 nur per software SPI 
und nicht per hardware SPI funktionieren?

Ich betreibe zwei RFM12 an einem LPC936 per hardware SPI ohne Probleme.

Ciao,
     Rainer

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

RFm - User wrote:
> Hallo,
>
> ich möchte die RFM12 Module einsetzen, habe zwei Devices am SPI - Bus
> dran, so dass ich eine Software und eine Hardware - Lösung nehmen
> möchte.

Andere Frage: Hast du soviel Datenverkehr, dass man nicht eine 
SPI-Schnittstelle nehmen kann? Ist ja eigentlich gerade der Sinn eines 
Bussystems.

von RFm - User (Gast)


Lesenswert?

@Christoph,

ich habe lediglich ein RFM12 und einen AD7322 am SPI - Bus, daher eig. 
kein Problem. Zumal das RFM-Modul das Ergebnis der Wandlung überträgt.
Lediglich die Frage, wie ich den SS-Pin gestallte, hat mich auf hardwre 
und Softwarelösung gebracht.
Einfach mit einen X-beliebigen Pin den entsprechenden Device SS-Pin auf 
low und dann das HW-SPI benutzen?
So, wie ich das bisher verstanden habe, muß mal bei jedem Device, vor 
der Übertragung auf low ziehen und nach 8bit, wieder auf high. Was ist 
nun Richtig?
SS-Pin nach Transmission wieder auf High oder SS-Pin nach jedem 
Byte/Befehl auf high?

Gruß

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

RFm - User wrote:
> @Christoph,
>
> ich habe lediglich ein RFM12 und einen AD7322 am SPI - Bus, daher eig.
> kein Problem. Zumal das RFM-Modul das Ergebnis der Wandlung überträgt.
> Lediglich die Frage, wie ich den SS-Pin gestallte, hat mich auf hardwre
> und Softwarelösung gebracht.
> Einfach mit einen X-beliebigen Pin den entsprechenden Device SS-Pin auf
> low und dann das HW-SPI benutzen?

Ja, genau.

> So, wie ich das bisher verstanden habe, muß mal bei jedem Device, vor
> der Übertragung auf low ziehen und nach 8bit, wieder auf high. Was ist
> nun Richtig?

Der Pin bleibt für die Dauer der Übertragung low, du kannst also mehrere 
Bytes auf einmal übertragen.

> SS-Pin nach Transmission wieder auf High oder SS-Pin nach jedem
> Byte/Befehl auf high?

Wie gesagt, nach der ganzen Übertragung. Und noch am Rande: Benutze den 
SS-Pin des Atmegas nicht als Eingang (egal für was), da der Atmega bei 
einem low-Impuls am SS-Pin und aktiviertem Hardware-SPI seinen 
Master-Mode verlässt und zum Slave wird.

von (prx) A. K. (prx)


Lesenswert?

RFm - User wrote:

> Einfach mit einen X-beliebigen Pin den entsprechenden Device SS-Pin auf
> low und dann das HW-SPI benutzen?

Bei einem reinen SPI-Master hat der SS-Pin keine besondere Funktion. 
Zumindest nicht wenn als Ausgang programmiert. Es ist daher reine 
Gewohnheit, ihn als Slave-Select zu verwenden. Jeder andere Pin tut es 
auch. Manchmal muss man sogar, weil bei älteren LPC2000 der SS Pin dabei 
garnicht verwendbar ist.

Es ist durchaus üblich, das gleiche Hardware-SPI für mehrere Slaves zu 
verwenden. Mit einen Select-Pin pro Slave, von denen maximal einer aktiv 
(0) ist.

von Stefan K. (nukeman)


Lesenswert?

Nachdem ich schon mehrfach in den Threads hier von Problemen mit
der HW-SPI gelesen habe. Wollte ich eben auf eine mögliche
Fehlerquelle hinweisen. Bin selbst drauf reingefallen und es hat
ein paar Stunden gedauert, bis ich drauf gekommen bin:

Den RFM kann man nur auslesen, wenn man seinen -eigentlich elektrisch
unabhängigen- Dateneingang SDI, also MOSI auf Low hält.
Bei der Hardware-SPI bedeutet das, man kann nicht "irgenwas" reintakten
um die Clock zu erzeugen, sondern es muss eine 0 sein.

Gruß
Stefan

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.