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 TDA8425 przez I2C: regulacja głośności, basów i tonów wysokich

GL4DI470R 12 Lut 2007 08:25 1832 8
REKLAMA
  • #1 3558670
    GL4DI470R
    Poziom 11  
    Posty: 60
    Ocena: 1
    Witam !
    Jestem początkującym, więc nie dokońca umiem rozszyfrować sterowanie ukladem Tda8425 zawartym w nocie katalogowej.
    Dokładniej, chodzi mi o to co trzeba wysłać do układu TDA aby zwiekszyc/zmniejszyc glosnosc, bas, treble itd.

    http://www.sklep.avt.pl/photo/_pdf/TDA8425.pdf

    Prosze o pomoc!

    Pozdrawiam
  • REKLAMA
  • #2 3558689
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1062
    i2cstart
    i2cwbyte xxx adres ukladu
    i2cwbyte <--- 8-bitowa komenda
    ...
    i2cstop

    jaki jezyk programowania? najlepiej zlozyc uklad i testowac czytajac note katalogowa sa tam podane wartosci jakie trzeba przeslac aby zmienic zadane parametry
  • REKLAMA
  • #3 3558695
    GL4DI470R
    Poziom 11  
    Posty: 60
    Ocena: 1
    Bascom

    No wlasnie moglbys na przykladzie podac jak np zwiekszyc/zmniejszyc glosnosc ? Potem analogicznie dojde jak sterowac reszta.

    Pozdrawiam
  • REKLAMA
  • #4 3558964
    Goompas
    Poziom 13  
    Posty: 123
    Pomógł: 3
    Ocena: 2
    Wszystko zalezy od tego do jakiego adresu musisz wpisac zadana wartosc. Takie informacje znajdziesz w instrukcji do urzadzenia.
    Wtedy standardowymi funckjami do obslugi i2c wysylasz zadana wartosc.
  • #5 3560504
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    GL4DI470R napisał:
    Witam !
    Jestem początkującym, więc nie dokońca umiem rozszyfrować sterowanie ukladem Tda8425 zawartym w nocie katalogowej.
    Dokładniej, chodzi mi o to co trzeba wysłać do układu TDA aby zwiekszyc/zmniejszyc glosnosc, bas, treble itd.

    Na tej stronce masz gotowe źródła w Bascomie8051(nie napisałeś "w czym" i "co" programujesz).Szukaj AVT-3008.

    Piotrek
  • REKLAMA
  • #6 3560620
    GL4DI470R
    Poziom 11  
    Posty: 60
    Ocena: 1
    Napisałem programuję w Bascome, Atmega8.
  • #7 3564688
    redart
    Poziom 23  
    Posty: 529
    Pomógł: 51
    Ocena: 30
    I2cstart
       I2cwbyte 130
       I2cwbyte Tda_subaddr
       I2cwbyte Tda_funct
       I2cstop


    Tda_subaddr=0 - Vol left Tda_funct=219-255 (-64dB - +6dB)krok 2dB
    Tda_subaddr=1 - Vol right Tda_funct=219-255 (-64dB - +6dB)krok 2dB
    Tda_subaddr=2 - bass Tda_funct=242-251 (-12dB - +15dB)krok 3dB
    Tda_subaddr=3 - treble Tda_funct=242-250 (-12dB - +12dB)krok 3dB
    Tda_subaddr=8 - rejestr funkcji:

    B0 (bit0) - wejście 1 lub 0

    B3 B4 Efekty
    1 1 Poszerzenie bazy stereo
    1 0 Stereo
    0 1 Pseudo stereo
    0 0 Wymuszone mono

    B5 - Mute (1-mute, 0-play)

    Jak wpiszesz pod ten adres (8) wartość Tda_funct=206 to zostanie wybrane wejście IN1, system stereo, mute wyłączone.
    LUDZIE, CZYTAJCIE PDF'y!
  • #8 3585979
    GL4DI470R
    Poziom 11  
    Posty: 60
    Ocena: 1
    Witam !

    Czyli jesli dobrze zrozumialem wysylajac do TDA
    
    I2cstart 
       I2cwbyte 130 
       I2cwbyte 0
       I2cwbyte 255 
       I2cstop
    


    zwiekszam glosnosc lewego kanalu na maxa ?

    
    I2cstart 
       I2cwbyte 130 
       I2cwbyte 8
       I2cwbyte 206 
       I2cstop
    


    W ten sposob wybieram wejscie 1 ?


    nie bardzo zrozumialem o co tu chodzi, tzn jak to wyslac :

    Cytat:

    B0 (bit0) - wejście 1 lub 0

    B3 B4 Efekty
    1 1 Poszerzenie bazy stereo
    1 0 Stereo
    0 1 Pseudo stereo
    0 0 Wymuszone mono

    B5 - Mute (1-mute, 0-play)



    Bardzo dziękuję za dotychczasową pomoc i proszę o rozwianie w/w wątpliwości.

    Pozdrawiam
  • Pomocny post
    #9 3588998
    redart
    Poziom 23  
    Posty: 529
    Pomógł: 51
    Ocena: 30
    Cytat:
    Czyli jesli dobrze zrozumialem wysylajac do TDA
    I2cstart
             I2cwbyte 130
             I2cwbyte 0
             I2cwbyte 255
             I2cstop

    zwiekszam glosnosc lewego kanalu na maxa ?

    Tak.
    Cytat:
    I2cstart
             I2cwbyte 130
             I2cwbyte 8
             I2cwbyte 206
             I2cstop

    W ten sposob wybieram wejscie 1 ?

    Tak, między innymi wybierasz wejście...

    Cytat:
    nie bardzo zrozumialem o co tu chodzi, tzn jak to wyslac :

    B0 (bit0) - wejście 1 lub 0

    Jeśli bit B0 ma wartość 0 to wybrane zostaje wejście 1, jeśli B0 = 1 to wejście drugie. Wysyła się to tak jak i inne wartości, rozumiem, że nie wiesz jak to przeliczyć. Więc tak: najpierw krótka lekcja nt. zapisu binarnego...
    Bit B0 (inaczej LSB - czyli bit najmniej znaczący - to ten po prawej stronie liczby w zapisie binarnym) ma wartość 1, bit B1 ma wartość 2, B2 - 4, B3 - 8, B4 - 16, B5 - 32, B6 - 64 i B7 - 128 (MSB - bit najbardziej znaczący). Jest to zapis dwójkowy, a nazwa bieże się stąd, że wartość bitu to wynik podniesienia liczby 2 do potęgi x, gdzie x to nr bitu w liczbie binarnej. Jeśli na danej pozycji (dany bit) umieszczona jest 1 to jest on 'zapalony' - aktywny. Sumując do siebie wszystkie wartości dziesiętne zapalonych bitów otrzymujemy wartość liczby binarnej zapisaną dziesiętnie. Przykład:
    Zapis binarny "11001010" należy odczytać (od prawej do lewej) tak:
    b0=0 - bit nie aktywny = 0
    b0=1 - bit aktywny = 2 dziesiętnie
    b0=2 - bit nie aktywny = 0
    b0=3 - bit aktywny = 8 dziesiętnie
    b0=4 - bit nie aktywny = 0
    b0=5 - bit nie aktywny = 0
    b0=6 - bit nie aktywny = 64 dziesiętnie
    b0=7 - bit aktywny = 128 dziesiętnie
    Sumując wszystkie wartości dziesiętne otrzymujemy wynik 202.

    Więc jeśli chcemy ustawić np bit B5 odpowiedzialny za funkcję MUTE (włączyć wyciszenie) to ten bit musi być aktywny, czyli B5=1. Zgodnie z tym co wyżej B5 ma wartość 32, więc do liczby wysyłanej należy dodać 32 lub odjąć, jeśli chcemy wyłączyć B5. Ale wymaga to wiedzy, jaka jest aktualnie wartość wysyłanej liczby. Aby nie komplikować arytmetyki rozwiązuje się to inaczej, a mianowicie zmienia pojedyńcze bity w całej liczbie, nie przejmując się ich wartością i takimi tam...

    Wprowadzamy zmienną (np Tda_funct) i modelujemy pojedyńcze bity używając zapisu:
    Tda_funct.x = 0 lub 1

    gdzie x to numer bitu,
    przykładowo
    Tda_funct.5 = 1
    włącza tylko i wyłącznie funkcję MUTE, nie ingerując w pozostałe bity odpowiedzialne za inne ustawienia.
    Dalej:
    Tda_funct.3 = 1
    Tda_funct.4 = 1

    włącza efekt Poszerzenie bazy stereo,
    Tda_funct.3 = 1
    Tda_funct.4 = 0

    włącza efekt Stereo
    Tda_funct.3 = 0
    Tda_funct.4 = 1

    włącza efekt PseudoStereo
    Należy pamiętać, że TDA8425 przy ustawianiu rejestru nr 8 (sterującego) wymaga ustawienia dwóch najstarszych bitów (B7=1 i B6=1) więc
    Tda_funct.7 = 1
    Tda_funct.6 = 1

    To samo dotyczy B1 i B2 (służą do mieszania kanałów wejść 1 i 2) czyli
    Tda_funct.1 = 1
    Tda_funct.2 = 1

    Do zmiany pozostają bity B0, B3, B4, B5. A na upartego tylko B0 jako selektor wejść. Kończąc ten wywód podsumuję: ustawiamy bity w następujący sposób:
    Tda_funct.7 = 1
    Tda_funct.6 = 1
    Tda_funct.5 = 0 'MUTE wyłączone
    Tda_funct.4 = 0 'Stereo
    Tda_funct.3 = 1 'Stereo
    Tda_funct.2 = 1
    Tda_funct.1 = 1
    Tda_funct.0 = 0 'Wejście 1

    Teraz trzeba to wysłać, więc:
    I2cstart 
    I2cwbyte 130 
    I2cwbyte 8 'rejestr sterujący
    I2cwbyte Tda_funct 'cała liczba 8bitowa "złożona" z 8 Tda_funct.x
    I2cstop


    Jeśli jeszcze coś nie jest jasne to pytaj, ale tutaj, a nie na pv.
    Pzdr.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy sterowania układem TDA8425 za pomocą magistrali I2C, ze szczególnym uwzględnieniem regulacji głośności, basów i tonów wysokich. Układ TDA8425 sterowany jest poprzez wysyłanie 8-bitowych komend do odpowiednich adresów subrejestrów. Przykładowo, adresy subrejestrów 0 i 1 odpowiadają za regulację głośności lewego i prawego kanału (wartości od 219 do 255, co odpowiada zakresowi od -64 dB do +6 dB z krokiem 2 dB). Subrejestry 2 i 3 służą do regulacji basów i tonów wysokich (wartości od 242 do 251 dla basów i 242 do 250 dla tonów wysokich, z krokiem 3 dB). Rejestr funkcji pod adresem 8 pozwala na wybór wejścia audio (bit B0), trybu stereo (bity B3 i B4) oraz funkcję mute (bit B5). Wartości bitów należy konwertować na liczbę dziesiętną, sumując wartości bitów aktywnych zgodnie z ich wagą binarną. Przykładowo, wysłanie do rejestru 8 wartości 206 ustawia wejście IN1, tryb stereo i wyłącza mute. Komunikacja I2C realizowana jest poprzez sekwencję: start, adres układu, adres subrejestru, wartość funkcji, stop. Programowanie w Bascom na mikrokontrolerze Atmega8 jest możliwe, a w sieci dostępne są przykładowe źródła, np. na stronie AVT (projekt AVT-3008). Dokumentacja TDA8425 zawiera szczegółowe informacje o adresacji i wartościach do sterowania parametrami układu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA