PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI-Fragen (RFM01/02 Module)



stefan_Z
11.11.2008, 18:19
Hi!

Ich ärgere mich gerade mit den RFM01/02 rum.

Verkabelung RFM01 <-> M32
SDI <-> MOSI
SDO <-> MISO
SCK <-> SCK
nIRQ <-> INT0
nSEL <-> SS

Da ich keinen brauchbaren Bascom-Code finden konnte, hab ich erstmal die Datenblätter durchgekaut.
Soweit so gut, also erstmal mit dem Auslesen des Status beginnen...

Zwei Fragen (erstmal)...

1 - Auslesen Status Register RFM01

Sobald man eine Null in den SDI vom RFM01 rein-taktet, beginnt dieser mit dem Senden des Status-Reports, gefolgt vom FIFO-Inhalt.

Jetzt frage ich mich, ob man MISO und MOSI vom Mega32 trotz Hardware-SPI noch selber steuern kann, und worauf ich dabei achten sollte.
Denn MOSI muss ja auf LOW bleiben, bis alles da ist.
Kann ich die normalen SPI-Befehle SPIin SPIout SPImove nutzen, oder soll ichs besser per SHIFTin/out machen und SS selber steuern?

Timing-Diagramm RFM01 Read:
http://img373.imageshack.us/img373/9674/timingrf01sl5.jpg


2 - Data Transmit Command RFM02

Hier wirds jetzt seltsam (wie ich finde):
Man sendet das Data Transmit Command ganz normal per SDI+SCK und hält dann die Clock an, während man die Daten reinschiebt.
Wieso wird die Clock nicht genutzt? Und vor allem: Woher weiß der RFM02, welches Bit welches ist?
Bei Nutzung des FSK-Pins hat man auch kein Clock-Signal - genauso seltsam.

Timing-Diagramm RFM02 Data-Send:
http://img147.imageshack.us/img147/3219/timingrf02wc9.jpg

thewulf00
12.11.2008, 07:16
Unsere Erfahrungen sagen folgendes:
Software-SPI von Bascom funktionierte noch nie mit den RFMs. Beim Hardware-SPI wieß ichs grad nicht, aber das dürfte eigentlich gehen.

Die Knackpunkte bei uns waren anfangs die falsche Empfehlung und falsche Beschaltung von Pollin. Da musste der Optokoppler weg (Das Problem hast Du sicher nicht), und dringend ein Widerstand rein.

Für SS empfehle ich das selbersteuern. Dann könntest Du rein theoretisch auch mehrere Module gleichzeitig benutzen, aber das ist nur ein Nebeneffekt.

Zum Clockthema kann ich Dir net helfen, aber halte Dich im Zweifelsfall an die Beispiele im Forum.

stefan_Z
12.11.2008, 13:38
Also das RFM01 habe ich gestern glücklicherweise angesteuert bekommen.
Kann den Status auslesen und er reagiert auch auf Parameter wie FIFO usw..
Hardware-SPI (M32) ging nicht, da hab ichs mit SHIFTOUT/in gemacht - super.

Der Sender war noch nicht zur Kooperation zu bewegen, aber da gebe ich mich später mal dran...

stefan_Z
14.11.2008, 17:57
So, hier ist mal mein (nicht funktionierendes) Programm.

Vielleicht findet ja jemand den Fehler oder sagt mir, wo ich völlig falsch liege.
Ist quasi eine 1:1 Übersetzung des C-Codes hier: http://www.mikrocontroller.net/attachment/22522/rfm01.zip

RFM01 tuts soweit, aber der RFM02 nimmt anscheinend nichtmal Befehle entgegen, geschweige denn Nutzdaten.
Das Progi hängt immer da, wo der nIRQ dann kommen sollte (TX-Bit ist an).
Im Code, letzte Routine - Stelle ist kommentiert...