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

Problem a kodekiem audio AIC23B

levvek 19 Sty 2011 02:05 1028 1
  • #1 9025738
    levvek
    Poziom 10  
    Witam

    Chciałbym bardzo prosić o pomoc. Temat dotyczy mojej pracy magisterskiej. Nie potrafię sobie poradzić z działaniem kodeka texasa AIC23B. Szybko nakreśle sytuacje i co jest problemem.
    Otóż mam go połączonego z cortex-m3 przez spi, i2s. Kodek jest masterem, w trybie USB (12MHZ osc). Działanie programowania SPI raczej poprawne (reaguje na tryb bypass, vol+ vol-, wyłączanie/włączanie peryferiów typy dac adc clock osc). Również transmisja po I2S jest dobrze interpretowana przez mcu.
    Orzechem nie do zgryzienia dla mnie jest to, że wyjście danych (z ADC) pomiędzy próbkami generuje zerowe słowa. Sprawdziłem wszystkie 3 linie I2S na oscyloskopie. na BCLK jest idealnie 12MHz, na LRCout zadana częstotliwość próbkowania (np: 44100) natomiast linia Dout daje sygnał jak wyżej opisałem. Ilość zerowych słów pomiędzy próbkami zmniejsza się wraz ze wzrostem częstotliwości próbkowania. Nie wiem dlaczego ADC mi wystawia takie dane. Męczę się z tym już 2 miesiąc. Co więcej w pewnym momencie zaczęło wszystko działać poprawnie (brak zer), ale po 3-4 dniach znów padło. Próbowałem już niemal wszystkiego, łącznie z podgrzewaniem scalaka kodeka suszarka:O. Dodam, że kodek mam z propoxa (mmcodec01). Brakuje mi pewności by stwierdzić, że to nie moja wina i że kodek jest wadliwy.
    Jeśli by ktokolwiek miał jakiś pomysł byłbym wdzięczny.

    pozdrawiam[/quote]
  • #2 9611427
    ardzi88
    Poziom 11  
    Witam, podpinam sie pod ten temat poniewaz tez niedawno mialem problem z tym kodekiem,a raczej z mikrokontrolerem. Pisze tylko po to, zeby poinformowac innych o tym problemie, bo zabral mi on duzo czasu niestety. Otoz ja korzystalem z plytki propoxu z TLV320AIC23B - kodekiem o ktorym mowa wyzej, a jako mikrokontrolera uzylem, w odroznieniu od kolegi wyzej, LPC1769. Byc moze problem ten tez sie pojawi w innych LPC176x, a moze to tylko moj egzemplarz mial cos nie tak...?

    Problem:
    Kodek nie dzialal prawie wcale w trybie Master (jakies brzeczenie). W trybie Slave ( wtedy LPC byl masterem) zadzialalo. Zrobilem loopbacka - na wyjscie podawalem to co weszlo na wejscie - zadzialalo, ale slychac bylo tylko niskie i troche srednich tonow + trzaski i szumy. Po sprawdzeniu na oscyloskopie okazalo sie ze procek generuje zbyt maly zegar BCLK, LRCIN i LRCOUT (u mnie dokladnie 32 razy za male - wszystkie te zegary). Dodatkowo do kodeka doprowadzam zegar glowny z procesora - pin 4.29 podlaczylem pod MCK w kodeku po odpowiedniej konfiguracji oczywiscie.

    Rozwiazanie:
    W user manualu od LPC17xx jest blad, rozdzial 20 - tabela 413 - tabele: Transmit Clock Rate Register i Receive Clock Rate Register.
    Jest tam:
    Bity 0:7 - Y_divider,
    Bity 15:8 - X_divider

    i tutaj niespodzianka, wszystko zaczelo dzialac jak wartosci X_divider i Y_divider wpisalem odwrotnie, tj:
    Bity 0:7 - X_divider,
    Bity 15:8 - Y_divider
    A dokladniej wprowadzilem wlasnie powyzsza mala zmiane w bibliotece dostarczonej przez producenta, w pliku I2S.c, w funkcji I2S_FreqConfig(......), w miejscu gdzie sa zakonczone obliczenia wartosci X_divider'a i Y_divider'a, przy wpisywaniu ich do rejestrow I2STXRATE i I2SRXRATE.
    Dodatkowo nalezy pamietac o informacji z Erraty, ze PCLK_I2S nie moze byc wiekszy od 74MHz bo cos jest nie tak (XY divider don't work).

    Mam nadzieje ze tym postem oszczedze kiedys komus troche czasu.
    Pozdrawiam.
REKLAMA