logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie TDA7318 przez I2C z ATmega8535 w Bascom – komendy, ustawienia wejść

Pth 11 Sty 2007 19:52 1590 8
REKLAMA
  • #1 3434769
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Czy ktoś jest mi w stanie pomóc z obsługą TDA7318?

    Podłączyłem już sobie procka z tym tda, procki na wzajem "się widzą" ponieważ mega8535 odbiera adres 136 od tda wiec jest ok.

    teraz jak wybrać któryś z wejść tda, ustalić daną głośność i ustawić jakieś inne podstawowe rzeczy?


    o to kilka pytań na które szukam odp.
    Jak wybrac kanał
    Jak ustawić głośność
    jak wybrać pomiedzy mono, stereo, etc...
    Jak włączyć , wyłączyć MUTE?
    regulacja bassu
    regulacja treble.



    Podłączyłem źródło dźwięku na wejście i głośnik na wyjście i nie wiem jak to wszystko w ogóle uruchomić :/

    Prosiłbym o podanie jakichś podstawowych komend do sterowania tym tda.

    Pisze w bascomie aktualnie pod mege8535

    Samą komunikacje między prockami mam załatwioną i działa. PDF przeglądałem ale mi to nic nie pomogło... Po podaniu sygnału audio na wejścia nie ma zadnych sygnałów audio na wyjściu procka...

    wiadomo że ma to wyglądać mniej wiecej tak:



    
    
    i2cstart
    i2cwbyte 136
    i2cwbyte <--- i tu 8-bitowa komenda
    ...
    i2cwbyte <--- i tu inne 8-bitowe komendy
    i2cstop
    


    problem jest tylko w tych 8-bitowych komendach...

    ______________________________

    Dla moderatorów : ten sam topic był założony w kategorii "progamowanie ogólne" ale go zamknałem i "przeniosłem" do działu dla początkujących.
  • REKLAMA
  • #2 3435980
    Artur k.
    VIP Zasłużony dla elektroda
    Posty: 25889
    Pomógł: 1279
    Ocena: 1701
    Witam

    Jak to zrobić od strony programowej to Ci nie powiem ale przecież w PDF-ie od tego układu jest wszystko wyjaśnione.

    Są podane nawet przykłady:
    Cytat:
    For example to select the stereo 2 input with a gain of +12.5dB the 8 bit string is:
    01001001

    To wynika z tabeli jaka jest podana w nocie, przykład przytoczony przeze mnie pochodzi z tabeli "audio swich".

    Tabela mówi, że 3 bity MSB w każdej komendzie muszą mieć wartość 010, a następne bity odczytujemy z tabeli.
    Trzy pierwsze bity są stałe: 010
    bity ustalające poziom: 01
    bity ustalające wejscie: 001
    cała komenda: 01001001

    Inny przykład:
    Chcemy wybrać wejście 1 i żeby pracowało z sygnałem na poziomie 0dB, więc:

    bity G0 i G1 dla poziomu 0dB mają wynosić : G0 = 1 , G1 = 1
    numer wejścia wybieramy za pomocą bitów S0 - S2 i dla wejścia 1 wszystkie 3 bity muszą wynosić 0.
    Komenda będzie miała postać:
    Narzucone odgórnie: 010
    bity ustalające poziom : 11
    bity ustalające wejscie: 000
    cała komenda: 01011000

    Tak samo postępujemy z każdym innym ustawieniem.
    Pamiętaj że bity muszą być wysyłane w takiej kolejności jaka jest podana w tabeli, czyli najpierw MSB, a potem LSB

    Mam nadzieje że zrozumiałeś :)

    Pozdrawiam
  • REKLAMA
  • #3 3436603
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    aha czyli np :
    
    i2cstart 
    i2cwbyte 136  'adres tda
    i2cwbyte &B01011000 'przykladowa komenda
    i2cstop 
    


    i to już powinno działać?



    Nie wiem czemu ale nie mogę sobie poradzić z uruchomieniem samego tda...
    na wyjściu jak nei było tak nie ma dzwięku :/
  • REKLAMA
  • #4 3437874
    Artur k.
    VIP Zasłużony dla elektroda
    Posty: 25889
    Pomógł: 1279
    Ocena: 1701
    Witam

    Nie znam się na programowaniu.

    Myślę że do układu TDA trzeba wysłać komendy konfigurujące wszystkie jego parametry, czyli: numer wejścia, czułość wejścia, poziom głośności, ustawienia "bass" i "treble" oraz mute.

    Podejżałem kod źródłowy z kitu AVT3008, tam pracuje układ TDA 8425 ale jego sterowanie jest podobne podobne.

    Z tego co zrozumiałem przeglądając kod źródłowy, to autor zdefiniował sobie zmienne odpowiadające wysyłanym bajtom, a samą procedurę uprościł do postaci:
    
    Sub Wyslij (kod As Byte , Adres As Byte , Value As Byte)      ' wysyla dane przez i2c
       I2cstart
       I2cwbyte Kod
       I2cwbyte Adres
       I2cwbyte Value
       I2cstop
       Waitms 10
    End Sub
    


    Tak jak pisałem, nie jestem znawcą tematu programowania, więc nie powiem koledze co kolega robi źle. Myślę że kolega powinien przeanalizować kod źródłowy podobnego rozwiązania (np. AVT3008) i na jego podstawie napisać swój.

    Pozdrawiam
  • #5 3437907
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    A mógłbyś podać treść całego programu z avt3008?
  • #7 3438084
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Nareszcie udało mi się to uruchomić.
    Wysłałem taką sekwencje i dopiero odpaliło :)
    
         I2cstart
         I2cwbyte &B10001000                                    'adres
         I2cwbyte Vol                                           'volume
         I2cwbyte 110                                           'bass
         I2cwbyte 126                                           'treble
         I2cwbyte 91                                            'wejscie
         I2cstop
    


    Ale przy maksymalnym wzmocnieniu (volume = 0) i ustawieniu wzmacniacza na max, który podłączyłem do tego tda praktycznie ledwo co słychać muzykę :/ Co może być nie tak?!
  • #8 3439649
    Artur k.
    VIP Zasłużony dla elektroda
    Posty: 25889
    Pomógł: 1279
    Ocena: 1701
    Witam

    Na pewno jakiś parametr jest zły. Wybrałeś poprawne wejście (i wyjście) oraz jego czułość ??.
    Pamiętaj że wyjście trzeba "odmutować".
    W kodzie który wstawiłeś nie widze linijki odpowiadającej konfiguracji wyjść i pewnie tu właśnie leży problem.

    Wyślij do układu komendy ustawiające "bas" i "treble" na pozycje neutralną - binarnie 01110111 (dla trebli) oraz 01100111 (dla basu)
    Głośność ustaw na -6.25dB - 00000101 (bin).
    Wyjścia ustaw na 0dB 10100000 (prawy przód) oraz 10000000 (lewy przód).
    Wybierz wejście 1 z czułością 0dB - 01011000.

    Po takim zabiegu układ powinien działać poprawnie.
    Oczywiście w tym przypadku sygnał podajesz na wejście 1, a odbierasz z wyjścia frontowego (nóżki 24 i 25 układu).

    Pozdrawiam
  • REKLAMA
  • #9 3453402
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    prosiłbym mimo wszytko aby pomogła mi osoba która miała styczność z takim lub podobnym procesorem audio i wie jak się do tego zabrać...

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania układem audio TDA7318 za pomocą magistrali I2C z mikrokontrolera ATmega8535 programowanego w Bascom. Użytkownik ma poprawnie nawiązane połączenie I2C (adres 136) z TDA7318, ale nie potrafi skonfigurować podstawowych parametrów takich jak wybór wejścia audio, głośność, tryb mono/stereo, mute, regulacja basu i treble. W odpowiedziach wyjaśniono, że sterowanie odbywa się poprzez wysyłanie odpowiednich bajtów konfiguracyjnych, gdzie trzy bity MSB komendy są stałe (010), a pozostałe bity definiują poziom głośności, wybór wejścia i inne ustawienia. Podano przykładowe komendy binarne do wyboru wejścia i ustawienia głośności. Zwrócono uwagę na konieczność wysłania pełnej sekwencji konfiguracyjnej obejmującej głośność, bas, treble, wybór wejścia oraz odmutowanie wyjścia. Przykładowa sekwencja I2C z podaniem wartości dla poszczególnych parametrów została przedstawiona, jednak użytkownik zgłaszał problem z niskim poziomem dźwięku mimo maksymalnego wzmocnienia. Sugerowano sprawdzenie poprawności ustawień czułości wejścia, wyjścia oraz odmutowania. Wskazano również na możliwość analizy kodu źródłowego podobnych projektów (np. AVT3008 z układem TDA8425) jako wzoru do implementacji. Podano link do pobrania przykładowego kodu, jednak bez udostępniania pełnego programu. Ostatecznie podkreślono, że prawidłowa konfiguracja wszystkich parametrów i wysłanie odpowiednich komend I2C jest kluczowe do poprawnego działania TDA7318.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA