Jak sterować układem TEA6100 w języku bascom ?
tuning interface
Philipsa – zbliżony do I²C, lecz nie w pełni zgodny). Config I2cMaster
. ADDR/Nhigh/Nlow
,Philips TEA6100/TEA6100A jest samochodowym syntezatorem PLL dla głowic FM/AM IF¹. Wersja A obsługuje również pętlę AFC. Układ nie jest klasycznym procesorem dźwięku (jak TDA73xx) ani radiem jednokostkowym (jak TEA5767), dlatego:
• komunikujemy się z nim wyłącznie w celu ustawiania częstotliwości (FM).
• nie steruje się nim PWM-em (to częsty błąd).
MSB LSB
+----+---------+--------------+
|A4…A0|N16…N9 | N8…N1 | = 3 bajty
+----+---------+--------------+
A4…A0 – bity adresowe (zależne od sposobu zamiany zakresów, AFC itp.)
N16…N1 – 17-bitowe słowo dzielnika.
Referencja: fref = 50 kHz (domyślnie z kwarcu 10,7 MHz ÷ 214).
Obliczamy:
\[ N = \frac{f{RF}+f{IF}}{f{ref}} \]
dla UKF 87,5–108 MHz i f_IF = 10,7 MHz.
Przykład (100,70 MHz):
N = (100,7 + 10,7)/0,05 = 2232.
'====================================================
' TEA6100 – sterowanie Bascom-AVR
' µC: ATmega8 @ 8 MHz
'====================================================
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 64 : $swstack = 64 : $framesize = 64
'---- piny interfejsu TEA6100 -----------------------
Const Clk = Portb.0 ' CLOCK
Const Data = Portb.1 ' DATA
Config Pinb.0 = Output
Config Pinb.1 = Output
Set Clk : Set Data 'stan nieaktywny = High
'---- parametry PLL --------------------------------
Const Fref = 50000 ' 50 kHz
Const If_offset = 107000 ' 10,7 MHz (w kHz)
Const AddrByte = &B10000000 ' A4…A0 = 1 0 0 0 0 (przykład)
'---------------------------------------------------
Sub SendBit(b As Bit)
If b = 1 Then Set Data Else Reset Data
Reset Clk 'zbocze opadające
Waitus 5
Set Clk
Waitus 5
End Sub
'---------------------------------------------------
Sub SendByte(byval d As Byte)
Dim i As Byte
For i = 7 To 0 Step -1
SendBit(d.i)
Next
End Sub
'---------------------------------------------------
Sub SetFreq(byval Freq_kHz As Long) 'freq w kHz
Dim N As Long
Dim Nh As Byte , Nl As Byte
N = (Freq_kHz + If_offset) / Fref 'oblicz dzielnik
Nh = N / 256
Nl = N Mod 256
'transmisja 3 bajtów
SendByte AddrByte
SendByte Nh
SendByte Nl
Set Data : Set Clk 'deaktywacja
Waitms 50 'czekamy na PLL lock
End Sub
'---------------------------------------------------
' PRZYKŁADOWE UŻYCIE:
Waitms 100
Call SetFreq(100700) '100,7 MHz
Do
'tu kod aplikacji (np. klawiatura / UART)
Loop
– Synteza PLL redukuje dryft analogowego generatora i zapewnia krok 50 kHz.
– TEA6100 pracuje do ~150 MHz, dlatego często stosowany w radioodbiornikach samochodowych.
– Interfejs jest jednokierunkowy (µC → TEA6100); brak potwierdzeń.
• budowa własnego tunera FM, konwersja starych radio-head-units na MCU, projekty SDR z heterodyną 10,7 MHz.
• automatyczne przeszukiwanie pasma (skaner) – algorytm incrementeuje Freq_kHz
w krokach 100 kHz i sprawdza poziom IF.
– W praktyce TEA6100 ustępuje nowym syntezatorom z pełnym I²C (NPX TSA551x, RDA5807M czy Si470x), jednak dzięki prostocie i dostępności wciąż pojawia się w naprawach sprzętu car-audio.
– Dominujący dziś trend to monolityczne tunery (TEA5767, RDA5807) z wbudowanym IF i procesorem RDS; w projektach retro-radio TEA6100 bywa wstawiany w miejsce trudno dostępnych TSA6057.
• Pull-upy 4k7 Ω na DATA/CLK; poziomy 5 V.
• Jeżeli urządzenie ma linię EN lub Latch Enable, należy ją trzymać w stanie wysokim i ściągnąć nisko tylko na czas transmisji (nie we wszystkich wariantach układu).
• Przeliczenie dla innych kwarców: f_ref = f_xtal / (2·P) – patrz datasheet.
– Własne nadajniki FM wymagają pozwolenia radiowego; odbiorniki są dozwolone.
– Zachowaj kompatybilność EMC – krótkie przewody do pętli PLL, ekranowanie głowicy.
Waitus
≥ 4 µs – krótsze czasy powodują niepewne ładowanie rejestru. – W sieci krąży błędna informacja, że TEA6100 obsługuje I²C „0x44/0x46” lub PWM – to najpewniej pomyłka ze scalakami TEA6300/TEA6320 (procesory dźwięku).
– Starsze egzemplarze mogą wymagać napięć > 5 V (np. 8,5 V); użyj konwertera poziomów.
• Wymiana TEA6100 + analogowa głowica na nowszy TEA5767 sterowany I²C – uproszczenie kodu.
• Implementacja algorytmu SEEK (mierzenie napięcia RSSI na pinie IF).
• Porównanie szumów fazowych różnych syntezatorów PLL w zakresie 88–108 MHz.
Sterowanie TEA6100 w Bascom sprowadza się do przygotowania słowa dzielnika PLL i przesłania go trzema bajtami przez prosty 2-przewodowy interfejs Data/Clock
. Kluczowe jest prawidłowe obliczenie dzielnika z uwzględnieniem IF 10,7 MHz oraz zachowanie timingów z datasheet. Kod „bit-bang” w Bascom (lub I2cMaster
przy zgodnym hardware) umożliwia pełne programowe przestrajanie odbiornika FM.