Hi, ich habe noch immer vor, obigen Chip zur Uhrzeitsynchronisation in der WordClock einzusetzen. Nach langer Wartezeit sind die Module auch endlich bei mir angekommen und ich habe das Radio auch erfolgreich ansprechen können. Z.B. kann ich mit einem kurzen Drahtstück als Antenne ganz gut NDR2 empfangen, der RDS-Empfang scheint auch zu klappen. Das Datenblatt ist mir eigentlich klar, nur frage ich mich, WANN ich die RDS-Daten vom Modul lesen und dekodieren soll. Die Daten kommen mit einer Bitrate von ca. 1,2 kHz an, aber woran kann ich erkennen, dass jetzt ein Block vollständig eingelesen wurde? Es gibt keinen Interrupt-Pin dafür und das Datenblatt schweigt sich darüber komplett aus. Damit ich keinen Block verpasse (der mit der Uhrzeit wird ja nur jede Minute gesendet), müsste ich ja irgendwie sicherstellen, dass ich nie zu spät oder zu früh die Daten lese. Hat dazu jemand eine Idee? Gruß, Oliver
ständig lesen und auswerten! Da ca. 1187 Bit/s / (26Bit*4) = ca. 11,5 RDS-Gruppen pro Sekunde übertragen werden, sollte das also häufiger als 11,5x pro Sekunde erfolgen. Und wenn Dir irgendwann in Block B der group type 4A über den Weg läuft, weisst Du, dass jetzt in Block C und D Datum und Zeit übertragen werden.
OK, dann müsste man aber darauf hoffen, dass die RDS-Gruppe sich niemals innerhalb eines I2C-Transfers ändert, sonst hätte man ja evtl. inkonsistente Daten. Sowas steht natürlich nicht im Datenblatt. Gruß, Oliver
@Oliver > Z.B. kann ich mit einem kurzen Drahtstück als Antenne ganz gut NDR2 > empfangen, der RDS-Empfang scheint auch zu klappen. Welches Modul hast du im Einsatz?
Oliver R. schrieb: > RDA5807M, siehe Titel. > > Gruß, > Oliver D. h., das Modul hat nur den RDA5807M montiert (siehe unten) und die Drahtantennen einfach an den FM anschließen. http://www.ebay.de/itm/5pcs-FM-Stereo-Module-Radio-Module-RDA5807M-RRD-102V2-0-RRD-102-V2-0-DE-/251545950501?hash=item3a914e9925:g:GNAAAOxy3NBSn-3q
Habe mal nen Codeschnipsel unter Arduino erstellt, der die RDS-Data einfach als Printf ausspuckt. Du musst nur auf den richtigen Block warten und die Zeit dann übernehmen. Leider ist das nicht ganz so einfach wie gedacht, da gibt es eine merkwürdige Sommer/Winterzeit-Geschichte (kann mich an die Details nicht erinnern) UND du musst die Zeit evtl. mehrfach vergleichen, da Empfangsfehler nicht immer transparent sind. Zeigt man die Uhrzeit ungefiltert an so kommen manchmal eigentümliche Zeiten heraus. Ich würde es trotzdem verfolgen, das dürfte eine schöne und dazu sehr günstige Methode für eine Quasi-DCF Zeit sein. Der Codeschnipsel in diesem Beitrag: Beitrag "FM Radio Modul RDA5807M" Viel Erfolg!
Hi Markus, > Oliver R. schrieb: >> RDA5807M, siehe Titel. >> >> Gruß, >> Oliver > > D. h., das Modul hat nur den RDA5807M montiert (siehe unten) und die > Drahtantennen einfach an den FM anschließen. > Ja genau diese Module sind es. Ich habe mir zwar noch einen Adapter auf Lochraster mit Stiftleisten gelötet ('ne ganz tolle Arbeit) aber der kleine Draht (10 cm) reicht für ein RSSI von 64 bei NDR2. Eine passendere Antenne würde da sicherlich noch einiges verbessern. Gruß, Oliver
Hi, > Leider ist das nicht ganz so einfach wie gedacht, da gibt es eine > merkwürdige Sommer/Winterzeit-Geschichte (kann mich an die Details nicht > erinnern) UND du musst die Zeit evtl. mehrfach vergleichen, da > Empfangsfehler nicht immer transparent sind. Zeigt man die Uhrzeit > ungefiltert an so kommen manchmal eigentümliche Zeiten heraus. > ich bin jetzt schon ein gutes Stück weitergekommen und empfange die RDS-Daten, indem ich 50 mal pro Sekunde (halb so oft würde wahrscheinlich auch reichen) mir die RDS-Daten hole (aber nur, falls RDS-Ready-Bit gesetzt ist) und dann die Daten auf Veränderungen prüfe. Die Dekodierung der Zeit ist mit durch einen Codeschnipsel aus einem anderen Dekoder auch gelungen, so dass ich bei gutem Empfang (RSSI>70) problemlos die Uhrzeit empfangen kann. Es ist allerdings tatsächlich so, dass auch hier dann und wann mal die falsche Uhrzeit empfangen wird, allerdings sind bei solch falschen Zeiten auch immer die Fehlerbits in den Registern BLERA/BLERB gesetzt, so dass man diese Zeiten problemlos verwerfen kann. Bei schlechterem Empfang (RSSI 40-50) ergibt sich leider nicht mehr solch ein eindeutiges Bild: Ich empfange dann auch vollkommen kaputte Zeitgruppen, in denen BLERA und BLERB auf 0 stehen. Außerdem empfange ich solche Zeitgruppen (Grouptype 4A) wesentlich öfter, als dies möglich wäre (also öfter als 1 mal pro Minute). Weiterhin verstehe ich nicht, weshalb es keine Blockfehlerregister für Block C und D gibt. RDS sendet schließlich für alle Blöcke Fehlerkorrekturdaten und nicht nur für A und B. Evtl. ist hier aber auch das Datenblatt unvollständig und es gibt noch etliche "geheime" Register, denen man diese Werte entlocken könnte. Ich habe aber bisher keinen Code gefunden, der andere als die offiziellen Register benutzen würde. Es könnte natürlich auch sein, dass die RDS-Daten gerade dann per I2C geholt werden (ich hole immer alle Leseregister am Stück), wenn sich die Register intern gerade ändern (Zugriffskonflikt). Warum es solch einen Konflikt dann aber bei schlechtem Empfang viel häufiger geben müsste, kann ich nicht erklären. Offenbar scheint die RDS-Fehlerkorrektur in diesem Chip nicht gut zu funktionieren, denn zumindest müsste man fehlerhafte Blöcke doch zuverlässig erkennen können. Für Hinweise auf Verbesserungen bin ich natürlich jederzeit dankbar. Gruß, Oliver
Vielleicht ein doofer Vorschlag, aber mittlerweile ist der SI4703 ja auch für kleines Geld (ca. 1,30€ bei Aliexpress) zu haben. Der Chip dürfte in dieser Hinsicht besser konstruiert sein, denn dieser hat die BLER-Bits für Block C und D. Code gibt es zuhauf dafür im Netz. Sonst frage die chinesische Firma RDA doch mal per email, die sind oft kommunikativer als man vermutet.
Ja, an den Si4704 habe ich auch schon gedacht. Es gibt dafür auch recht günstige Module und das Datenblatt gibt wirklich alles her, was man wissen muss. Man hat einen Interrupt-Pin für den Empfang einer RDS-Gruppe und zusätzlich kann auch auf alle Blockfehler zugreifen. mit dem RDA-Chip hat man womöglich an der falschen Stelle gespart. Ich habe aber das Gefühl, dass auch der RDA-Chip diese Möglichkeiten bietet, da man auch zwei GPIO-Pins zur Verfügung hat und zumindest gibt es einen Interrupt nach dem Tunen. Nur über RDS steht halt nicht viel... Mal sehen, ob ich einen Ansprechpartner bei RDA auftreiben kann. Gruß, Oliver
Habe mal die Register verglichen, scheint ja gerade so, als ob die Leute bei RDA den Silabs Chip Si4703 "nachgebaut" haben, bei den Details (wie z.B. RDS) keine Lust bzw. Zeit mehr hatten... Edit: Du meinst den Si4705, oder? Der Si4704 hat kein RDS. Unterschied Si4703 und Si4705, letzterer hat Digital Audio Out, sonst identisch.
:
Bearbeitet durch User
...ich weiß, die Frage ist sicherlich doof, aber: Wieso denn kein DCF nutzen? Klaus.
Klaus2 schrieb: > ...ich weiß, die Frage ist sicherlich doof, aber: Wieso denn kein DCF > nutzen? > > Klaus. Mensch Klaus, die Frage ist vielleicht doof.
Klaus2 schrieb: > Wieso denn kein DCF > nutzen? Vielleicht, weil RDS und DCF zwei verschiedene Sachen sind? MfG Paul
Hi, > ...ich weiß, die Frage ist sicherlich doof, aber: Wieso denn kein DCF > nutzen? > Nein, die Frage ist nicht doof, aber die käuflichen DCF-Empfängerplatinen haben so alle ihre Macken und laufen längst nicht bei allen Usern störungsfrei. Außerdem gibt es Regionen und Länder, wo man den DCF77 nicht empfangen kann. UKW mit RDS gibt es dagegen überall und das Modul kostet nur 'nen schlanken Euro... Gruß, Oliver
So, ich denke, dass ich mich jetzt mit dem RDA lange genug beschäftigt habe. Mein Fazit: Wunderware bekommt man für ca. 1€ nicht! Ich habe den Hersteller kontaktiert, natürlich ohne Erfolg. Aber wer schon das Datenblatt für solch einen popeligen Chip für "Confidential" hält, der hat wohl etwas zu verbergen. Ohne das vollständige Datenblatt kann man aber nur Radio hören und ein wenig RDS machen. Folgende Probleme ergaben sich beim Testen: - das Tunig nach dem Einschalten hat nicht immer zuverlässig funktioniert. In ca. 25% der Fälle hat er zwar 92.1 MHz in den Registern stehen, NDR2 konnte aber nicht empfangen werden, RSSI lag dann bei 40, RDS ging natürlich erst recht nicht. Ein erneutes Tunen hat dann aber gleich geklappt. Ob das nur beim Start so ist (ich halte mich bei der Startsequenz an das Datenblatt), oder ob das bei jedem Tuning so ist, kann ich leider nicht sagen. - RDS funktioniert nur bei starken Sendern halbwegs gut. Es gibt immer noch etliche Blockfehler. Der Chip scheint diese NICHT zu korrigieren, denn ich bekomme auch bei gutem Empfang GT-4A-Blöcke öfter als ein mal pro Minute. Das kann allerdings nicht sein, da diese nur zur vollen Minute ausgesendet werden. Also muss der Group-Type falsch sein. Dummerweise behauptet der Chip aber, dass keine Blockfehler vorliegen. In solchen Fällen kommt dann erwartungsgemäß nur Schrott als Zeit an, der Block war halt für etwas anderes gedacht. - Falls der Chip auch RDS-Verbose-Funktionen wie der Si4703 hat, dann müsste er sich nach dem Reset im RDS-Verbose-Modus befinden (der Begriff taucht ein mal im Datenblatt auf). Wäre er das nicht, dann dürften die Blockfehlerregister immer nur 0 anzeigen, und das RDS-Ready-Flag dürfte auch nicht bei fehlerhaften Blöcken gesetzt werden. Nur doof, dass die Blockfehlerregister für C und D nicht aufgeführt werden, und dass man auch nicht an die RDS-Rohdaten herankommt, um die Fehlerkorrektur selbst zu machen. Tatsache ist, dass es hinter dem Register 0Fh noch weitere gibt, die ihre Werte auch ständig ändern. Ohne Datenblatt kann man da lange probieren. Ich werde mich jetzt dem Silabs-Chip zuwenden, der kostet aus China auch nicht die Welt und hier habe ich ein hervorragendes Datenblatt. Der RDA-chip ist wohl nur für den absoluten Billigmarkt gedacht, Hauptsache man hört etwas aus dem Radio und man erkennt den Sendernamen. Für viel mehr taugt das Ding nicht. Viele Grüße, Oliver
Danke für die ausführliche Analyse, das bestätigt meine bisherigen Beobachtungen. Bisher hatte ich jedoch keine Zeit, in die Probleme tiefer einzusteigen. Würde ich mir jetzt auch nicht mehr antun. Hast du auch den Si4706 gesehen? Das ist ein auf RDS spezialisierter Empfänger z.B. für TMC Empfang. Die Register sond etwas anders aufgebaut, die Daten werden jedoch offensichtlich besser aufbereitet und auch die Fehlerkorrektur scheint "hochwertiger" zu sein. Kostet auch nicht die Welt.
Ich möchte mich hier für die Informationen ebenso bedanken. Ich bin erst vom Si4703 auf den RDA5807M umgestiegen weil er irgendwie besser zu performen schien in Tests. Allerdings ist das Handling vom Si4703 (gerade in Bezug auf RDS) um längen besser ^.^
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.