Muss ich das
Funkmodul erst configurieren, oder reicht das, wenn ich einfach ein SPI Bus Configuriere und den dann da anschließ?
Der SPI Bus stellt ja nur die Verbindung zu dem Funkmodul her.
Die Konfiguration der einzelnen Register innerhalb des Funkmoduls musst Du natürlich in deiner Software machen.
Die benötigten Werte können dann über die SPI versandt werden.
Da man einige Daten ohne Takt an den SPI Bus übergeben kann, würd ich empfehlen die Bausteine über eine Software SPI anzusprechen.
Will man dann wirklich einen Sendestring über die SPI Schnittstelle schicken, kann man im Prinzip die selben Routinen wie für die Kommandoübertragung nutzen, man lässt nur den Takt weg.
Anbei mal beispielhaft, welche Bytes in so einem RFM Sendemodul gesetzt werden können / müssen.
Code:
volatile unsigned char uc_frequ[2]; /* Frequenz tuningword */
uc_frequ[1]=ui_frequ[uc_kanal]/256;
uc_frequ[1]|=0b10100000;
uc_frequ[0]=ui_frequ[uc_kanal]%256;
/* Configuration Setting: 433MHz, CLK 5MHz, 11,5pf Kapaz., +/-60kHz */
#asm ("cbi portb,nsel");
sendbyte(0b10001110);
sendbyte(0b01100000);
#asm ("sbi portb,nsel");
#asm ("nop");
/* Frequency Setting: eingestellter Kanal*/
#asm ("cbi portb,nsel");
sendbyte(uc_frequ[1]);
sendbyte(uc_frequ[0]);
#asm ("sbi portb,nsel");
#asm ("nop");
/* Output Power Command: Max Power */
#asm ("cbi portb,nsel");
sendbyte(0b10110000);
#asm ("sbi portb,nsel");
#asm ("nop");
/* Data Rate Command: 2400 bit/s */
#asm ("cbi portb,nsel");
sendbyte(0b11001000);
sendbyte(0b10001111);
#asm ("sbi portb,nsel");
#asm ("nop");
/* Low Batt + Sync Command: enable Sync Circuit */
#asm ("cbi portb,nsel");
sendbyte(0b11000010);
sendbyte(0b00100000);
#asm ("sbi portb,nsel");
#asm ("nop");
/* PLL Setting Command: 0xD240 up to 19,2kbit/s*/
#asm ("cbi portb,nsel");
sendbyte(0b11010010);
sendbyte(0b01000000);
#asm ("sbi portb,nsel");
#asm ("nop");
/* Power Managment Command= Enable Clock; disable Synthesizer; disable pow. Ampl. */
#asm ("cbi portb,nsel");
sendbyte(0b11000000);
sendbyte(0b00100000);
#asm ("sbi portb,nsel");
Wie man sieht ist das doch eine Ganze Menge.
Es gibt da leider keinen allgemeingültigen Code, da die Module sehr viele Möglichkeiten bieten, die Funkstrecke aufzubauen.
Das geht mit der Baudrate los und hört beim Frequenzhub der FSK auf.
Wenn man versteht, welche Parameter was bewirken, kann man die Module optimal auf seine Zwecke anpassen. Der Code passt aber dann nur für diese eine Anwendung gut.
Beim Empfänger sieht das ähnlich aus, allerdings hat dieser Baustein auch noch einen Zwischenspeicher, der FiFo genannt wird.
Dieser FiFo muss, bevor er Daten aufnimmt "aufgeschlossen" werden.
Das passsiert mit einer Codesequenz, die da lautet 0x2D 0xD4.
Vorher kommt noch eine Präambel, die zur Synchronisation des Empfängers dient.
Das alles steht in den entsprechenden Datenblättern.
Ich weiß, die sind nicht besonders gut gemacht, aber letztlich der Weg, der zum gewünschten Ergebnis führt.
Eine gute Dokumentation gibts auch noch bei Hersteller der, auf den Modulen verbauten, Funkchips.
Leider hab ich die Adresse gerade nicht parat.
Den kompletten Code für ein Funk Telemetriesystem, allerdings in "C" könnt ihr euch von unserer Modellflieger Page ziehen:
http://www.toeging.lednet.de/flieger...telemetrie.htm
Lesezeichen