SMD-Radio mit TEA5768HL


Wir wollten uns ein RDS-Radio aufbauen welches mit einem Atmega gesteuert werden kann. Die Idee war nicht schlecht, aber die Beschaffung der Bauteile war nicht einfach. Bekommen haben wir ein Radio-IC mit der Bezeichnung TEA5768HL. Da dieses IC nur in SMD Ausführung erhältlich ist, wurde zunächst eine Versuchs Platine erstellt auf der sich nur das TEA5768HL und die zusätzlich benötigten Bauteile befinden.

Schaltplan kommt demnächst.

   

Um die Radio-Platine anschließen zu könne, wurde eine Platine erstellt auf die das Radio gesteckt werden kann und auf der sich ein Kopfhörerverstärker mit einem TDA7050 befindet. Die Anschlüsse von dieser Platine gehen über eine Steckerleiste auf eine weitere Platine, auf der sich der RDS-Decoder TDA7330 befindet. Das ganze wird von einer weiteren Platine, auf der sich ein Atmega8 befindet, gesteuert. Um das Radio ansteuern zu können, muss zuerst die Leitung BUSENABLE auf high gelegt werden, anschliessend können Daten über den I2C-Bus an das Radio gesendet werden. Nachdem das Radio seinen betrieb aufgenommen hat, werden über den MPXO Ausgang des TEA5768HL die RDS-Daten an den RDS-Decoder TDA7330 gesendet. Das RDS-Decoder-IC stellt die RDS-Daten an den Anschlüssen RDDA und RDCL zur Verfügung. Jetzt müssen diese Bits nur noch von dem Atmega8 eingelesen und ausgewertet werden. Dieses hört sich einfach an, gestaltet sich in Basic (BASCOM) jedoch nicht gerade einfach. Was andere in Assembler mit 1 bis 2 KByte Source-Code erledigen fordert dem Atmega8 alles ab, aber es ist machbar. 

   

Da der Speicher des Atmega8 gerade dazu ausreicht die RDS-Daten zu decodieren, wurde diese Steckkarte für das SKS-Board entwickelt. Auf ihr befindet sich das Radio-IC TEA5768HL, ein HIFI-Controller TEA8425, ein Kopfhörerverstärker TDA7050 und der RDS-Decoder TDA7330. Ausserdem gibt es noch einen Anschluss für ein Tastenfeld mit 8 Tastern (Buchse links unten) und einen IR-Empfänger für Fernbedienungen die RC5 Daten senden können. Das gute ist, es funktioniert alles. Das schlechte daran ist, es funktioniert nicht zusammen in einem Programm das in Basic (BASCOM) geschrieben wurde.

   

Nun ein paar Programmzeilen um zu zeigen wie wir das realisiert haben. Sollte jemand eine Idee haben wie man es besser machen kann, wären wir darüber sehr dankbar.

   

$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 20

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 ,_
                Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20 * 4
Initlcd
Cls
Cursor Off

Config Sda = Portc.4
Config Scl = Portc.5

Config Porta.7 = Output
Busenable Alias Porta.7

Dim Sender As Byte
Dim Q1 As Long
Dim Q2 As Long
Dim Q3 As Long
Dim Frequenz As Word
Dim Yx as Byte

Lcd "Init TEA5768HL"
Busenable = 1
Q1 = 101200000           ' Dieses ist die Frequenz von HR3 = 101,2 MHz
Q2 = Q1 + 225000         ' Mit dieser Formel wird die Zahl errechnet die
                         ' dann in Byte 1 und 2 zum TEA5768HL übertragen wird
Q3 = Q2 * 4
Q1 = Q3 / 32768                                           
Frequenz = Q1  
                                   
Waitms 10
Cls
Lcd "HR3 101.2 MHz"
Yx = &H00
I2cstart
I2cwbyte &B11000000      ' Dieses ist die Adresse vom TEA5768HL
Sender = High(frequenz)
Sender.6 = Yx.0
Sender.7 = Yx.0
I2cwbyte Sender
Sender = Low(frequenz)
I2cwbyte Sender
I2cwbyte &B01110000      ' Die Funktion der Bits ist im Datasheet des
                         ' TEA5768HL ausführlich beschrieben
I2cwbyte &B00010001 
I2cwbyte &B11000000
I2cstop

Busenable = 0            ' Jetzt müsste das Radio Spielen.