Start
Experimente
Grundlagen
Produkte
- SI4735
- - 4 MHz
- - Software
- - Antennen
- - Hilfeseite
- - RDS
- - ES-M32
- - Heimradio
- - PCradio2
Neues
Impressum
|
SI4735
Radio Data System, RDS
Der
SI4735 enthält ein RDS-System, dessen Daten man mit geeigneter
Software auslesen kann. Während viele FM-Radios nur den
Stationsnamen zeigen, können nun auch der vollständige
Radiotext, angebotene Ersatzfrequenzen und die Uhrzeit angezeigt
werden. Die RDS-Daten werden von den Stationen in einem rotierenden
System übertragen. Sehr schnell erscheint der Stationsname,
seltener ein neuer Radiotext-Block. Nur einmal pro Minute wird eine
neue Urzeit übertragen. Deshalb dauert es etwas länger bis
dieses Feld gefüllt ist. Übertragen wird die Weltzeit UTC und
die aktuelle Zeitverschiebung, womit die lokale Zeit berechnet werden
kann.
|
Download Si4735Radio4.exe (update 2.6.09: Si4735Radio4.zip, 331 KB incl. Quelltext)
(Änderung: Software startet ohne RDS, Prozessorbelastung verringert)
Für die Realisierung des
RDS-Empfangs war es nötig die USB-Datenübertragung noch
einmal zu verbessern. Sie ist jetzt schneller und zuverlässiger
geworden. Die Geschwindigkeit ist wichtig, weil die empfangenen Daten
mindestens so schnell ausgelesen werden sollten wie sie empfangen
werden.
Die Programmierung des RDS-Empfangs
erscheint auf den ersten Blick kompliziert. Sie ist jedoch
für diesen Chip einfacher als für andere Systeme, weil
Synchronisation, Fehlerbehandlung und die Einteilung in Datenpakete
bereits im Chip erfolgen. Man muss daher nur noch die einzelnen Daten
aus je acht Bytes lesen und die Nutzbytes interpretieren. Der folgende
Ausschnitt aus dem Delphi-Quelltext zeigt die Verarbeitung für den
Radiotext und für die Uhrzeit. Im RDS-System gibt es noch viele
andere Dienste wie Verkehrsmeldungen, Alarm- und Ruf-Systme, wobei
teilweise nicht-öffentliche Daten übertragen werden.
|
procedure TForm1.RDSClick(Sender: TObject); var n,i,pos, max, : Integer; var h1, h2, m1, m2: String; begin for n := 1 to 20 do begin if GET_INT_STATUS() then begin FM_RDS_STATUS; if R[3] > 0 then begin //neue Daten? if (R[6] and 248)= 32 then begin // 2A Radiotext pos := R[7] and 15; Codearray[pos*4] := R[8]; Codearray[pos*4+1] := R[9]; Codearray[pos*4+2] := R[10]; Codearray[pos*4+3] := R[11]; end; if (R[6] and 248)= 64 then begin // 4A, Time UTCoffset := (R[11] and 31) div 2; if R[11] and 32 = 32 then UTCoffset := UTCoffset* -1; Minuten := R[11] div 64 + 4 * (R[10] and 15); Stunden := R[10] div 16 + 16* (R[9] and 1); Zeit := 1; end; Edit8.text := ''; for i:= 0 to 63 do begin Edit8.Text := Edit8.Text + chr(Codearray[i]); end; if Zeit = 1 then begin h1 := IntToStr(Stunden); if Stunden < 10 then h1 := '0'+h1; h2 := IntToStr(Stunden + UTCoffset); if (Stunden + UTCoffset) < 10 then h2 := '0'+h2; m1 := IntToStr(Minuten); if Minuten < 10 then m1 := '0'+m1; Edit11.text := h2+':'+ m1 + ' '+'UTC: '+h1+':'+m1; end; end; end;
Bild: Wolfgang Hartmann
|