TEA5767 – mikro tuner sterowany cyfrowo

4.5/5 - (2 votes)

tuner FMTen niewielki moduł ze scalakiem TEA5767 na pokładzie, to nic innego jak kompletne cyfrowe radio, w zakresie FM. W dodatku stereo, pobierające niewiele mocy, ze sterowaniem przez magistralę I²C. Na tyle wydał się ciekawy i tani, (cena około 5pln) że mnie zainteresował. Dodatkowo można go odzyskać z wielu przenośnych odtwarzaczy muzyki i przeróżnych gadżetów. Pierwsze podejście do modułu miałem około połowy czerwca 2013. Wtedy to zbudowałem układ poznawczo/modelowy oparty o ten projekt. Podobało mi się, że jest zasilany napięciem 3V, i było to zarazem dodatkowym utrudnieniem, gdyż nie mam obcykanej obsługi wyświetlacza od Nokii 3310. Oczywiście układ nie działał jak należy, i trafił na bocznicę z powodu braku czasu. A szkoda bo chciałem go używać w samochodzie, ponieważ po wypadku mojej żony, patałachy podczas remontu auta, popsuli chyba antenę, i wbudowane radio nie działa.

Układ ma brata prawie bliźniaka o nieco uproszczonej funkcjonalności SP3767 firmy Si-Power. Generalnie obsługa ma być identyczna.

Podstawowe funkcje układu scalonego TEA5767:

– FM 70 to 108MHz
– Automatic search tuning function
– Fully digital processing, include audio output
– I2C-bus, only requires a minimum
– Low power , Mini size and low-cost
– High sensitivity , Low noise
– Integrated LDO regulator
– Bass boost

opis wyprowadzeń i wymiary PCB ze scalakiem tunera

opis wyprowadzeń i wymiary PCB ze scalakiem tunera

Jakieś te opisy pinów do bani są w tej nocie. pin 3 to BUS MODE, 4 to WRITE/READ, a 9 to MPXO. Raczej pokazano tam co gdzie podłączyć, niż funkcjonalność wyprowadzeń!

Pin MPXO moim zdaniem to wyjście i nie powinno się go zwierać do masy, wyprowadza zespolony sygnał stereofoniczny, w brew temu co jest poniżej.

aplikacja z TEA5767

aplikacja z TEA5767

Zwarcie pinu 3 (BUSMODE) do masy aktywuje tryb magistrali I²C.

Pin READ/WRITE nie jest używany w trybie I2C, więc pozostawiamy go nie podłączony. Magistrala I²C działa z maksymalną częstotliwością 400kHz. TEA5767 nie posiada wzmacniacza dźwięku, więc poziom wyjściowy dźwięku jest bardzo niski. W związku z tym słuchawek nie powinno podłączać się bezpośrednio. Napięcie zasilania powinno zawierać się między 2,5 a maksymalnie 5,0V.

Podstawowe cechy układu scalonego tunera.

IC address: 11000000b w trybie zapisu.
Transfer danych powinien odbywać się w sekwencji: address, byte 1, byte 2, byte 3, byte 4 and byte 5 ważna jest kolejność, której nie wolno zmieniać. Najmniej znaczący bit (LSB) = 0 adresu oznacza operację zapisu do TEA5767HN. Bit 7 każdego bajtu jest uważany za najbardziej znaczący bit (MSB) i musi być przesyłany jako pierwszy bit w bajcie (co jest zgodne ze specyfikacją obsługi magistrali w BASCOM AVR).
Dla oszczędności energii IC może być przełączony w tryb czuwania (low current Standby) przez standby bit. Magistrala jest wtedy jeszcze aktywna. Prąd czuwania może być zmniejszony przez wyłączanie interfejsu magistrali (pin BUSENABLE LOW). Jeśli interfejs magistrali jest wyłączony (PIN BUSENABLE jest w stanie niskim) bez trybu standby, IC utrzymuje normalne działanie, ale jest izolowany od linii magistrali.
Programowo konfigurowane wyjście (SWPORT1) można zaprogramować jako wyjście wskaźnika dostrojenia. Tak długo, jak IC nie zakończy akcji strojenia, pin SWPORT1 pozostaje na poziomie LOW. Pin ten ustawiany jest w stan HIGH, gdy akcja preset lub search tuning jest zakończona, lub po osiągnięciu limitu pasma.
Dzielnik częstotliwości odniesienia (synthesizer PLL) zostanie zmieniony, gdy MSB w bajcie 5 ma stan logiczny 1. System strojenia może być taktowany przez pin XTAL2 na 6,5 ​​MHz.
Podczas Power-on reset, funkcja MUTE jest aktywna, wszystkie pozostałe bity są ustawione na LOW, a według innej noty mają wartości losowe. Aby prawidłowo zainicjować IC wszystkie bajty muszą zostać przesłane.
TEA5767HN posiada zintegrowany wzmacniacz niskoszumny (LNA).
Przy malejącym poziomie wejściowym RF Dekoder MPX przełączy z odbioru stereo na mono, aby ograniczyć szumy na  wyjściu audio. Odbiór mono i stereo można też przełączać samodzielnie.
Przy niskich poziomach wejściowych RF może zostać załączona funkcja soft mute. Funkcja soft mute może zostać też wyłączona przez stosowne ustawienie bitów konfiguracyjnyh. Do obsługi sygnałów wejściowych na wysokim poziomie, wzmocnienie LNA jest sterowane za pomocą automatycznego regulatora wzmocnienia (AGC). AGC rozpocznie się gdy wejście antenowe osiąga poziom około 4mV, w danym zastosowaniu impedancji anteny 40Ω. AGC ma zakres do 40dB.

tabele konfiguracyjne ze znaczeniem bitów

tabele konfiguracyjne z opisem bitów konfiguracyjnych TEA5767, w trybie zapisu

tabele konfiguracyjne ze szczegółowa rozpiską bitów TEA5767, w trybie zapisu

tabele konfiguracyjne ze szczegółowa rozpiską bitów TEA5767, w trybie zapisu

Jak to działa? Sygnał anteny RF jest wtryskiwany do zrównoważonego wzmacniacza niskoszumnego (LNA) za pomocą obwodu dopasowującego RF. Aby nie przeciążać LNA i miksera LNA sygnał wyjściowy jest podawany do układu automatycznej regulacji wzmocnienia (AGC).
W mikserze kwadraturowym sygnał radiowy RF jest konwertowany w dół na sygnał IF 225KHz poprzez pomnożenie go z sygnałem lokalnego oscylatora (LO). Wybrana architektura mieszacza zapewnia wewnętrzne odrzucenie obrazu. Ble ble ble …

Układ może pracować z rezonatorem kwarcowym 13MHz lub 32.768kHz. PLL może być taktowany również przez zewnętrzny sygnał 32,768 kHz, 6,5 MHz lub 13 MHz poprzez pin XTAL2. O wyborze sygnału taktującego należy powiadomić „system” przez odpowiednie ustawienie bitów konfiguracyjnych w piątym bajcie danych. Dla przykładu bit XTAL (Clock frequency) powinien być ustawiony gdy częstotliwość rezonatora wynosi 32,768 kHz.
Aby dostroić poszukiwaną częstotliwość (preset mode) radia zostaną podjęte następujące działania: po pierwsze musi być obliczone 14 bitowe słowo PLL. Kolejnie zostanie ono wysłane do programowalnego dzielnika.
Nasz tuner może pracować w dwóch trybach: high side injection lub low side injection (bit 4 bajtu 3). Wybór jednego z tych trybów ustala, czy lokalny oscylator znajduje się poniżej lub powyżej pożądanej częstotliwości. Jeśli wstrzyknięcie jest pożądane po stronie wysokiej bit HILO jest ustawiony na 1, w przeciwnym wypadku na 0. Informacja ta musi zostać przesłana do tunera.

jak obliczyć wartość licznika PLL gdy znamy częstotliwość stacji radiowej

jak obliczyć wartość licznika PLL gdy znamy częstotliwość stacji radiowej

Inne informacje mogą być również wysyłane, do ustawienia ON/OFF softmute (bit 3 data bajt 4), HCC (bit 2 data bajt 4) oraz SNC (bit 1 data bajt 4), itd.
Po uaktywnieniu funkcji Stereo Noise Cancelling nazwanej też SDS gdy sygnał będzie za słaby dekoder stereo może zostać przełączony w tryb mono. Pozwoli to na ograniczenie szumu na  wyjściu dekodera. Tryb mono można również wymusić przez przełączenie bitu 1 w bajcie 4.
High Cut Control jest to opcja, która daje możliwość wycięcia wysokich częstotliwości z sygnału audio, gdy jest odbierany słaby sygnał.
HCC można włączyć poprzez magistralę – bitem 2 bajtu 4, tak jak to zaznaczone jest wyżej.
Sygnał wejściowy RF może podlegać bardzo słabemu poziomowi wejściowemu, Tak że całkowita energia szumów w zakresie fal AF może być większa niż sygnał AF. To powoduje nieprzyjemny dźwięk. Po aktywacji funkcji softmute ograniczy ona ilość energii w widmie hałasu AF. Szum między stacjami będzie osłabiony co ​​spowoduje lepszy odbiór sygnału audio.
Softmute jest sterowany przez interfejs magistrali. Poprzez ustawienie bitu 3 bajtu danych 4 softmute jest włączony. W przeciwnym razie funkcja jest wyłączona.

 Już co nieco wiadomo jak to się je … Wypadało by przejść do konkretów. No więc aby dostroić się do jakiejś rozgłośni radiowej możemy postąpić w dwojaki sposób
– po pierwsze znając odpowiednią częstotliwość obliczyć PLL i niech się dzieje …
– po drugie uruchomić funkcję automatycznego strojenia z przeszukiwaniem pasma w górę bądź w dół. Przy czym druga opcja wydawać się może na pierwszy rzut okiem prostsza, ale warto dobrać stosowne parametry „towarzyszące” wpływające na jakość odnajdywanych radiostacji.
Sposób pierwszy:

Na listingu widzimy deklarację typów zmiennych, przypisanie częstotliwości radiostacji, oraz kod z obliczeniem PLL i przesłaniem wartości do TEA5767 z minimalistyczną konfiguracją niezbędną do funkcjonowania.

Sposób drugi może wyglądać następująco:

Przykład przedstawia konfigurację rejestrów przygotowaną do załaczenia funkcji search mode z opcją search up. Oraz opcją search stop level ustawioną na mid – level ADC output =7.

W powyższych przykładach pominięto niezbędną konfigurację magistrali I²C oraz konfigurację wyprowadzeń.

Niby wszystko prosto i pięknie lecz „życie” nie jest takie różowe. Po mimo moich usilnych starań układ nie działa w sposób oczekiwany … Okrzyknąłem się „The master of noise” bo w chwili obecnej, zresztą od dłuższego czasu nie potrafię nic innego jak tylko szumieć tunerem po mimo funkcjonowania zapisów i odczytów rejestrów układu TEA5767. Wszystkie funkcje działają oprócz odtwarzania stacji radiowych ;-D Jedyna odtwarzana to szyyyyyyyyyyy! Antena ma długość ~1,5M Zobaczymy co będzie dalej i ile czasu mi pożre ten moduł ;-p zanim uzyskam zamierzoną funkcjonalność.

A.D. 2014-12-18 Trochę czasu już uciekło … a moje wzmagania nie dobiegły jeszcze końca. Udało mi się za to uszkodzić mechanicznie kilka modułów szczegóły tutaj -> “podstawka uniwersalna” do modułów na przykładzie CL6017 🙂

A.D. 2015-02-21 czekam na nową „zabawkę” i przypływ siły witalnej ;-D Moduł z tunerem TEA5767W razie czego w rękawie mam jeszcze jednego asa ;-P i być może będzie inżynieria wsteczna …moduł kompletny tuner ze sterowaniemA.D. 2015-03-06 Haaaa podłączyłem ten nowy moduł, wgrałem stary kod, i nic … reset µC … i moduł zaczął gadać … huuurrraaaa :mrgreen:

Wołam babajage, mówię widzisz .. i podaję słuchawkę – przykłada słuchawkę i patrzy jak na idiotę 😉 Mówi: no gada …  Pierwszy raz w życiu widziałem taki wyraz twarzy, moja żona powiedzmy była dumna z politowaniem?

:mrgreen:

Taaak teraz ogrom pracy przede mną, trzeba dociec problemu czego poprzednie moduły nie chciały gadać. Dla zainteresowanych zamieszczę kawałek kodu, który ożywił tuner …

i jeszcze deklaracje i konfiguracje:

Pewno to jeszcze nie koniec tego opisu moich wzmagań …

A.D. 2015-05-28 Co bym teraz nie napisał to i tak nie będzie szczerą prawdą … 😛
Ze dwa dni temu BARTek zagonił mnie do roboty, prosząc o test swojego kodu.  I całe szczęście, bo temat wisiał by w próżni nie wiadomo ile jeszcze. Miał wątpliwości spowodowane jak się to okazało później, super jakością swojego egzemplarza. Jego tuner „startował na palec”.
DZIĘKI BARTek za mobilizację.
A to z tego tytułu, iż ćwiczę realizację motta „teraz życie można rozdzielić między NOP i SLEEP” 😆 i oczywiście wcale nie jestem z tego faktu zadowolony.
Tymczasem pokonując wiele przeciwności losu odszukałem model z modułami do testu tunera, dostosowałem podesłany kod do swojego sprzętu, oraz uruchomiłem go. Rolę wyświetlacza i impulsatora BARTka pełnił u mnie terminal RS-a. Ponieważ kolega opublikował swoją pracę u siebie, nie będę jej tu powielał. Przedstawię jedynie kawałek kodu z obliczeniami, gdyż od razu przykuł moją uwagę.

Przez sprytne uproszczenia związane z mnożeniem i dzieleniem przez 10 i jego krotności, z paskudnego molocha, przyprawiającemu zadyszki naszym µC, BARTek otrzymał o wiele łagodniejszą wersję. Z początku przyglądając się samym obliczeniom stwierdziłem, że brakuje mi jednego zera i BARTek miał chyba lepszą wersję notki katalogowej, skoro kod funkcjonuje. Ale wszystko jest w należytym początku, gdyż częstotliwość wpisywana jest w kodzie jako liczba całkowita, z przesuniętym przecinkiem w prawo, tzn np częstotliwość 103,2 jako 1032.

Przejdę teraz do esencji sprawy i krótko opiszę wyniki testów.

Pierwsze podejście, użyłem tunerka. Oczywiście układ nie funkcjonował w sposób spodziewany. Wgrałem kod do ostatnio nabytego „dużego” modułu z tunerem, wszystko działało jak trzeba. Tak samo jak podczas moich poprzednich wzmagań. W związku z powyższym zacząłem analizować przyczyny takiego stanu rzeczy.

W między czasie wymieniliśmy się kilkoma uwagami, obaj rezystory pull-up zastosowaliśmy o wartości 10kΩ, w „dużym” module były wlutowane o wartości 4,7kΩ. U mnie zasilanie było na poziomie 5V u kolegi BARTka 3V3.

Taaak jest jeszcze jeden istotny detal, który wcześniej zbagatelizowałem nie realizując go, a na który zwracałem ostatnio uwagę. W materiałach bardziej lub mniej trefnych, na temat tego tunera, przedstawiono schemat z filtrowanym zasilaniem doprowadzonym do tunera!!! W dużym module, tenże filtr oczywiście jest zrealizowany.

Więc próbowałem dostosować moją podstawkę do tunerków, by zamontować pominięty wcześniej filtr. Modernizacja przebiegała dwu etapowo i na efekty nie trzeba było długo czekać. Tunerki jakoś łatwiej odnajdywały stacje radiowe. Po mimo zastosowania przeze mnie, lichej antenki w postaci krótkiego kabelka z końcówkami BLS.

Także być może gdybym nie olał sobie tego istotnego elementu którym jest pominięty uwadze filtr zasilający, radio grało by już dawno. Oczywiście moduł tunera – tunerowi nie równy, po mimo zastosowania identycznego układu scalonego. Dużo łatwiej, szybciej, i mniej problemowo funkcjonują modele tunerów wyposażone w większą ilość elementów zewnętrznych. W artykule przytoczonym przed chwilką umieściłem fotkę trzech modeli z których ten środkowy jest beeee, bo wypada najgorzej …. w funkcjonowaniu.

Teraz wiem, że aby nie mieć problemów warto swój układ wyposażyć w filtr zasilający tunera, oraz zastosować dobrą antenkę. Oczywiście warto zakupić też modulik w wersji „na bogato” wyposażony w elementy bierne, by nie stracić cierpliwości przy uruchamianiu tunera. 😛 Rezystory pull-up dla magistrali I²C, o wartości 10kΩ, jak i 4,7kΩ nie stanowią problemu. Zasilanie 5V i 3V3 nie robi różnicy.

Życzę wszystkim tylko udanych prób i tunerków działających od pierwszego kopa!!

A.D. 2015-08-01 Istotne uwagi BARTka wynikłe podczas naszych ostatnich luźnych pogaduszek:

Wczoraj w nocy już nie wytrzymałem i potraktowałem mój moduł TEA radio hotairem. Od tej chwili działa jak złoto. Więc wniosek jest taki, że od początku chiński modulik był źle polutowany …

lutowanie gorącym powietrzem naprawiło moduł i polepszyło parametry odbioru …


ANKIETA:

moduł z TEA5767 uruchomiłem / uruchomiłam:

Pokaż wyniki

Loading ... Loading ...

 nota katalogowa IC: TEA5767.pdf (3511 pobrań )
jeszcze jedna nota katalogowa IC: tea5767-8.pdf (3384 pobrania )
nota katalogowa modułu modul_FM.jpg (3449 pobrań ) raczej kiepskie źródło wiedzy
ściągawka kaktusa z konfiguracją rejestrów i dodatkowymi informacjami 😉 TEA5767_nastawy.pdf (66 pobrań ) , trzeba być zalogowanym by pobrać ten załącznik
Eagle v6.x libs FM_tuner_Ev6_4.lbr.zip (54 pobrania ) ta biblioteka nie będzie działała z niższymi wersjami Eagle.

widok co zawiera moja biblioteka

Otagowano , , , .Dodaj do zakładek Link.

11 odpowiedzi na „TEA5767 – mikro tuner sterowany cyfrowo

  1. Jacek komentarz:

    Cześć, właśnie zacząłem siedzieć nad tym modułkiem. Mam pytanie: czy w trybie auto search on sam dodaje kolejne 100kHz do częstotliwości radiowej, czy trzeba za każdym razem wpisywać nowe słowo PLL? Z noty i AN nie mogę się tego doczytać. Dzięki za odp.

    • kaktus komentarz:

      Odpowiem w ten sposób.
      po inicjacji wyszukiwania – procedura ta trwa do znalezienia sygnału o zadanych parametrach (wartość stop level). Procedura wyszukiwania automatycznego jest przedstawiona w prezentowanym opisie. W razie potrzeby należy ją powtórzyć.

  2. Jacek komentarz:

    Czyli rozumiem to tak: wpisujemy do PLL f=87.5MHz, nastawiamy odpowiedni stop level, HILO, de-emphasis i pozostałe i czekamy, aż coś zacznie grać w głośnikach. Jeśli gra, to odczytujemy wartość PLL znalezionej stacji z read registers, wpisujemy tą wartość + 100kHz jeszcze raz i znowu rozpoczynamy szukanie i tak do końca pasma FM 108MHz. Oczywiście wykrycie stacji sprawdzamy za pomocą flagi Ready flag, a koniec pasma za pomocą Band Limit flag. Czy dobrze myślę? :>

    • kaktus komentarz:

      Hehee nie za bardzo wiem do czego zmierzasz Panie Jacku.
      Bo skoro zacznie już coś ładnie grać to po co dalej przy tym majstrować? No chyba że w poszukiwaniu innej fali bardziej zacnej 😉
      Po za tym pozostała część Twojej wypowiedzi (od słów „Oczywiście …”) jest zgodna z moim tokiem rozumowania.
      Przeprowadź kilka prób praktycznych, a wszystko się samo wyjaśni.

  3. Jacek komentarz:

    Chodzi mi to, żeby najpierw namierzyć wszystkie odbierane stacje w danej lokalizacji, a w kolejnym kroku umożliwić słuchaczowi wybór jednej z nich. Chodzi mi jakim sposobem wyszukać i zapisać wszystkie stacje w danej lokalizacji odbiornika, ale może przeprowadzę kilka prób praktycznych i wtedy się odezwę 😉 Jutro będę wszystko lutował i programował (kod do obsługi w C jest już prawie skończony).
    Dzięki za info, pewnie się jeszcze odezwę. Pzdr

    • kaktus komentarz:

      No to teraz rozumiem, o co dopytujesz.
      Ja nie zwiększałem częstotliwości w takim przypadku (nie robiłem +100kHz). Uruchamiałem przeszukiwanie od ostatnio ustawionej wartości, przez jej odczytanie.

      Proszę bardzo. Udanych prób zwieńczonych szybkim sukcesem życzę.
      A na koniec poproszę zagłosuj w ankiecie. I przyznaj stosowną ilość gwiazdek co do przydatności opisu.

  4. Jacek komentarz:

    Więc tak: udało mi się uruchomić TEA5767 za pierwszym razem na wcześniej ustalonej częstotliwości RMF Maxxx. Gra! Czy mógłbyś mi wytłumaczyć, jak przeprowadzasz skanowanie po wszystkich stacjach? Moim celem jest najpierw poznać wszystkie stacje w okolicy, a potem jedną wybrać. Próbowałem tak, że nastawiam np. RMF z search mode i potem odczytuję rejestry, ale to niestety nie zmieniało rejestrów PLL i dalej było tylko RMF. Band limit nie był osiągnięty.

    • kaktus komentarz:

      Proponuję następujący tok postępowania:
      1. konfiguracja rejestrów do rozpoczęcia wyszukiwania
      2. po znalezieniu przyjaznej fali odczyt częstotliwości
      3. konfiguracja rejestrów do rozpoczęcia wyszukiwania od odczytanej częstotliwości
      4. przechodzimy do punktu 2.
      oczywiście po drodze trzeba sprawdzać niezbędne elementy jak koniec skali, czy jak kto lubi – znacznik stereo itd itp.

  5. Andrew komentarz:

    Temat stary ale mam pytanie.

    Skąd adres:
    IC address: 11000000b w trybie zapisu.

    Skoro w dokumentacji jest:
    IC address: 110 0000b co daje &H60 a nie &C0

  6. Andrew komentarz:

    Znalazlem odpowiedz w dokumentacji.
    Bit LSB w trybie zapisu to 0 co daje nam wlasnie:

    1100 0000
    1100 000R/W

    gdzie R/W

    dla zapisu =0
    dla odczytu =1

    czyli 1100 0000 i 1100 0001

    • kaktus komentarz:

      Dokładnie.
      To podstawowa zasada adresowania układów współpracujących w tej magistrali.

      Brawo za dociekliwość. Dzięki temu przymiotowi wyjaśnisz jeszcze nie jedną wątpliwość.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

trzy × pięć =

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.