Forum: Mikrocontroller und Digitale Elektronik Betrieb des FM Radio Moduls RDA5807M bereits ab 50 MHz


von Klaus344 (Gast)


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() {
}

von Klaus H. (gpsklaus)


Lesenswert?

KORREKTUR:

FALSCH:  Wire.write(0x5E);Wire.write(0x6H); // 51510-50000=1510
                                     // 1510 = 0x5E6H

RICHTIG: Wire.write(0x05);Wire.write(0xE6); // 51510-50000=1510
                                     // 1510 = 0x05E6

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.