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() {
}
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.