TEA6100 Bascom-AVR – sterowanie syntezerem PLL, kod bit-bang, interfejs Data/Clock

Pytanie

Jak sterować układem TEA6100 w języku bascom ?

Odpowiedź Sztucznej Inteligencji


Bezpośrednia odpowiedź na pytanie

  • Układ TEA6100 sterujemy z Bascom-AVR, przesyłając do niego 2 lub 3-bajtowe słowo nastawcze liniami DATA i CLK (interfejs tuning interface Philipsa – zbliżony do I²C, lecz nie w pełni zgodny).
  • W Bascomie realizuje się to najprościej metodą „bit-bang” – ręcznie ustawiając stany pinów mikrokontrolera lub, jeśli płyta projektowa używa gotowej magistrali I²C, korzystając z Config I2cMaster.
  • Kluczowe etapy:
    • obliczenie słowa podziału PLL (dzielnik N) z żądanej częstotliwości,
    • wysłanie kolejno bajtów: ADDR/Nhigh/Nlow,
    • zachowanie timingów z datasheet (minimum 4 µs „High” i 4 µs „Low” na linii CLK).

Szczegółowa analiza problemu

1. Co naprawdę robi TEA6100?

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).

2. Interfejs i format danych

 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.

3. Implementacja w Bascom

'====================================================
'  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

4. Podstawy teoretyczne

– 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ń.

5. Praktyczne zastosowania

• 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.

Aktualne informacje i trendy

– 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.

Wspierające wyjaśnienia i detale

• 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.

Aspekty etyczne i prawne

– Własne nadajniki FM wymagają pozwolenia radiowego; odbiorniki są dozwolone.
– Zachowaj kompatybilność EMC – krótkie przewody do pętli PLL, ekranowanie głowicy.

Praktyczne wskazówki

  1. Najpierw sprawdź oscyloskopem, czy na CLK/Data pojawiają się prawidłowe impulsy.
  2. Jeśli układ nie „łapie” częstotliwości, zweryfikuj wartość IF 10,7 MHz (niekiedy w starych głowicach jest 10,52 MHz).
  3. Utrzymuj Waitus ≥ 4 µs – krótsze czasy powodują niepewne ładowanie rejestru.

Ewentualne zastrzeżenia lub uwagi dodatkowe

– 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.

Sugestie dalszych badań

• 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.

Krótkie podsumowanie

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.

Oceń odpowiedź: 1
Zastrzeżenie: Odpowiedzi udzielone przez sztuczną inteligencję (model językowy) mogą być niedokładne i wprowadzające w błąd. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi powinny być zweryfikowane przez użytkownika.