Betrieb des FM Radio Moduls RDA5807M bereits ab 50 MHz

Gast #6079550
Lesenswert?

Hallo,
obwohl es gemäß RDA5807M Datenblatt möglich sein sollte, gelang es mir 
lange Zeit nicht, Empfang mit dem Baustein bereits auf Frequenzen ab 50 
MHz durchzuführen. Ab 65 MHz war es kein Problem, aber der 50 
MHz-Bereich war auf die übliche Weise mit Eingabe der gewünschten 
Sollfrequenz in das Register 3 nicht aufrufbar. Nach langer 
Internetsuche kam mir da ein russisches Mikrocontroller-Forum zu Hilfe, 
in dem sich ein Beitrag mit der alternativen  Nutzung des 
FRQ-Direkt-Modes beschäftigte. Hierbei wird folgendermaßen vorgegangen: 
Nach dem Start-Reset ist im Register 3 das Frequenzband 3 ( ab 65 bzw. 
50 MHz ) aufzurufen. Weiterhin sind im Register 7 sowohl das Bit zur 
Aktivierung des 50 MHz-Modes, als auch das Bit für den 
Frequenz-Direktmode zu setzen. Anschließend ist lediglich noch die 
gewünschte Sollfrequenz in das Register 8 zu schreiben.
Diese können im Bereich von 50.000 bis 115.535 MHz liegen ( 1 KHz-Raster 
). Zur Berechnung der Eingabewerte sind als Megahertz vorliegende 
Sollfrequenzen mit dem Faktor 1000 zu multiplizieren und um den Wert der 
Startfrequenz 50000 zu reduzieren. Danach ist das Ergebnis in einen 
vierstelligen Hexwert zu wandeln und auf die übliche Weise als Hi- und 
Low-Byte im Register 8 abzulegen.

PS: Mit weitgehend identischen Betriebsparametern und Steuerbefehlen ist 
auch der RDA5820NS anzusprechen. Im Vergleich zum RDA5807M besitzt er 
zusätzlich eine Sendefunktion mit u.a. analogen Line-Audioeingängen und 
einer Pout von max. +3dBm.

************************************************************************ 
*
Hier ein einfaches ( ohne spezielle Library auskommendes ) 
Arduino-Programmbeispiel für den RDA5807M für Ausgangsfrequenzen von 
51.51 Mhz oder ( ausgeklammert ) 98.7 MHz

#include <Wire.h>

void setup() {
Wire.begin();
Wire.beginTransmission(0x11);
Wire.write(0x02);
Wire.write(0xC0);Wire.write(0x03); // RESET_1
Wire.endTransmission();
delay(100);

Wire.beginTransmission(0x11);      // RESET_2
Wire.write(0x02);
Wire.write(0xC0);Wire.write(0x0D);
Wire.endTransmission();
delay(100);

Wire.beginTransmission(0x11);
Wire.write(0x03);
Wire.write(0x00);Wire.write(0x0C); // BAND 3 (>50/65 MHz)
Wire.endTransmission();
delay(100);

Wire.beginTransmission(0x11);
Wire.write(0x07);
Wire.write(0x4C);                  // >50 MHz
Wire.write(0x01);                  // DIREKT-FRQ-MODE
Wire.endTransmission();
delay(100);

Wire.beginTransmission(0x11);       // DIRECT-FRQ-MODE
Wire.write(0x08);
  Wire.write(0x5E);Wire.write(0x6H); // 51510-50000=1510
                                     // 1510 = 0x5E6H
//Wire.write(0xBE);Wire.write(0x3C); // 98700-50000=48700
                                     // 48700 = 0xBE3C
Wire.endTransmission();
}

void loop() {
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren