Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Moduł radia TEA5767 od NXP - V2

grala1 11 Kwi 2018 15:57 3798 1
  • Witam wszystkich po raz kolejny.
    Dzisiaj postaram się Wam opisać po raz kolejny moduł radia TEA5767 od firmy NXP, z tym że dzisiaj będzie na podstawie bardziej rozbudowanego zestawu oraz będzie tutaj też mowa o odczycie informacji z tego modułu.

    Moduł radia TEA5767 od NXP - V2
    Moduł radia TEA5767 od NXP - V2

    Poniżej macie linka do poprzedniego opisu:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=17159497#17159497

    Opisywany dzisiaj zestaw prócz TEA5767 na swoim pokładzie posiada wzmacniacz zbudowany na układzie TDA1308 również firmy NXP, dwa gniazda słuchawkowe - jedno służące za wyjście audio, drugie robiące za gniazdo antenowe. Niestety mamy tutaj wzmacniacz słuchawkowy, więc nie możemy tutaj podłączyć bezpośrednio głośników.
    Napięcie zasilania to 5VDC, pobór prądu ok.18mA. W układzie jest dioda D1 pełniąca funkcję zabezpieczenia przed odwrotną polaryzacją napięcia zasilającego. Na płytce mamy złącze goldpin do podpięcia zasilania oraz do komunikacji opisane jako +5V, SDA, SLC, GND.
    Wymiary całości wraz ze złączem goldpin to 40x30x10mm.
    Zestaw sprzedawany jest wraz z anteną teleskopową, która po rozłożeniu ma 24cm. Ceny w Chinach z przesyłką zaczynają się od $3,23, na Allegro jest tylko jedna oferta z tym modułem w cenie 48zł z przesyłką.

    Miało być o odczytywaniu informacji udostępnianych przez moduł, więc do rzeczy.
    Poniżej program napisany w BASCOM.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Porównując go do poprzedniego programu mamy tutaj dopisaną część odczytującą pięć bajtów z TEA5767 oraz zmienione ustawienia w trybie zapisu - po wysłaniu pięciu bajtów w trybie zapisu zostaje odczytane pięć bajtów w trybie odczytu. Chodzi tutaj o zmuszenie radia do wyszukania stacji radiowej, gdzie zacznie ono przeszukiwać częstotliwość w dół lub w górę od zadanej mu częstotliwości i zatrzyma się po spełnieniu określonych warunków - wszystko to zapisane jest w bajcie trzecim w trybie zapisu, musimy tylko pamiętać, by w bajcie pierwszym włączyć SEARCH MODE - bit 6 .
    Na poniższym obrazku widzimy odczyt z I2C - to, co zostało nadane i odebrane z modułu TEA5767 (część programu - stacja_3). Zostało to odczytane za pomocą analizatora stanów logicznych SALEAE wpiętego w przewody SDA i SLC (pamiętać trzeba o wspólnej masie) między zestawem uruchomieniowym ZL2AVR i TEA5767.




    Moduł radia TEA5767 od NXP - V2

    Spójrzmy do dokumentacji dla opisu bajtów w trybie odczytu. Poniżej fragment dokumentacji gdzie mamy opis bajtów w trybie odczytu oraz adres dla pracy w trybie odczytu.
    Moduł radia TEA5767 od NXP - V2

    W pierwszych dwóch bajtach mamy zapisane takie informacje jak:
    Bajt pierwszy
    - bit 7 - czy stacja została znaleziona lub został osiągnięty limit częstotliwości;
    - bit 6 - czy został osiągnięty limit częstotliwości;
    - bit 5 do 0 - PLL 13 do 8
    Bajt drugi
    - bit 7 do 8 - PLL7 do 0
    Jak widać - moduł znalazł stację radiową, a limit częstotliwości nie został osiągnięty. W przypadku nieznalezienia żadnej stacji spełniającej zadanych warunków, moduł zatrzyma się na najniższej lub najwyższej częstotliwości (zależy, czy szuka w górę czy w dół) czyli 87,5 lub 108MHz a bit 6 bajtu pierwszego przyjmie wartość równą 1. PLL w tym przypadku to 11000111101110 zapisane w systemie dwójkowym, co po przeliczeniu na system dziesiętny daje nam 12782. Korzystając z poniższego wzoru:
    Moduł radia TEA5767 od NXP - V2
    Po przekształceniu otrzymujemy poniższy wzór, gdzie z PLL możemy wyliczyć częstotliwość odbieranej stacji, częstotliwość tą nawałem RMF:
    Moduł radia TEA5767 od NXP - V2
    Z powyższego zatem wychodzi nam że nasz moduł podczas wyszukiwania stacji zatrzymał się na częstotliwości 104,485144 czyli 104,5MHz.
    W ten sam sposób możemy wyliczyć od jakiej częstotliwości moduł szukał stacji radiowej. PLL tutaj to 11001001101001, czyli 12905, co daje po przeliczeniu wedle wzoru częstotliwość 105,5MHz.
    Bajt trzeci, bit 7 mówi nam o tym, czy stacja odbierana jest w stereo czy w mono.
    Z odczytu mamy 1, co oznacza w tym przypadku, że odbierana stacja jest w stereo.
    Zgodnie z dokumentacją dla opisanego bajtu czwartego w trybie odczytu bity od 7 do 4 to poziom ADC. W naszym przypadku odczytana wartość to 1100(bin)=12(dec).
    Wedle ustawień nasz moduł miał szukać „w dół” od zadanej częstotliwości 105,5MHz - bajt 3 bit 7 (0 - szukanie w dół, 1 - szukanie w górę).
    Zatrzymanie szukania miało nastąpić na wysokim sygnale, poziom wyjściowy ADC=10, bajt 3 bity 6 i 5 ( Search Stop Level).
    Podsumowując to wszystko, to moduł miał szukać stacji, zaczynając od częstotliwości 105,5MHz, miał szukać w dół i zatrzymać się na stacji której poziom ADC będzie nie mniejszy niż 10. Moduł wyszukał stacji z poziomem ADC 12 na częstotliwości 104,5 więc zadane mu warunki spełnił. Mamy też informację, że stacja ta odbierana jest w stereo.

    Tutaj przykład wyszukania innej stacji tym razem z ADC = 13, odbiór również w stereo. Szukanie od częstotliwości 104MHz i znalezienie jej na 103,3MHz (część programu - stacja_2).
    Moduł radia TEA5767 od NXP - V2

    Poniżej przykład wyszukiwania w górę i przy mniejszym poziomie ADC (część programu - stacja_1). Widać tutaj, że szukanie było od 98MHz i zatrzymało się na 99,1MHz, stacja nie jest odbierana w stereo, a moc jej sygnału to 7 przy założeniu szukania na poziomie minimum 7.
    Moduł radia TEA5767 od NXP - V2

    Zmieniając program, można by było uzyskać przeszukiwanie zakresu, ale należałoby wziąć pod uwagę, że moduł zaczyna szukać od podanej mu częstotliwości i zatrzymuje się, gdy spełni podane mu warunki, ale nie zawsze spełnione warunki to stacja radiowa. Czasem jest to jakieś buczenie w eterze, więc należałoby wznowić szukanie od momentu zatrzymania, czyli do zmiennej PLL podstawić to, co zostało odczytane po zatrzymaniu przeszukiwania - inaczej będziemy zawsze szukać od tej samej częstotliwości i zawsze w tym samym miejscu się zatrzymamy.
    Odbiornik ten włożyłem dla testów do auta. W czasie postoju odbiera dość dobrze stacje radiowe, choć nie zawsze są one w stereo. Zabrałem go na przejażdżkę i na antenie z zestawu w czasie jazdy jakość odbioru spada, po dołożeniu ok. metrowego przewodu jest poprawa, ale nie jest to to samo, co w czasie postoju, choć czasami sygnał jest bardzo dobry. Myślę, że po podłączeniu tego odbiornika do instalacji anteny samochodowej odbiór znacznie by się poprawił, ale nie liczyłbym na to, że mógłby on zyskać mobilność. Powiedziałbym, że ten moduł ma raczej zastosowanie stacjonarne.

    Myślę, że jak ktoś chce się pobawić takim odbiornikiem radiowym, to warto wydać te niespełna $4, plusem tego modułu jest dość prosta obsługa poprzez I2C.
    Należy tez pamiętać, że moduł ten nie pamięta, co mu się wysłało, więc po odłączeniu zasilania nie usłyszymy nic, póki nie wyślemy mu ponownie pięciu bajtów w trybie zapisu.


    Fajne!
  • #2 12 Kwi 2018 12:30
    miszczo997
    Poziom 27  

    PLL można liczyć prościej. Powiedzmy bazowe 88Mhz to wartość 10770 w rejestrze PLL. Teraz każde kolejne n x 0,1MHz to dodanie n*122/10. W ten sposób dla końca pasma czyli 108Mhz jest to 200*122/10=2440 czyli 13210, gdzie z wzoru podanego w dokumentacji wychodzi 13211. Jak ktoś chce dokładniej może użyć n*1221/100. Różnica pomiędzy każdym 0,1MHz w rejestrze PLL wynosi 12,207.