kroq
Guest
Mon Aug 06, 2012 12:52 pm
Witam,
Mam problem przy zapisie dźwięku z kodeka ADAU1961 do bufora.
Używam mikroprocesora STM32F417 i dedykowanych dla niego bibliotek
STM32F4xx_DSP_StdPeriph_Lib do konfiguracji peryferiów. Rejestry kodeka
konfiguruję za pomocą linii I2C, natomiast próbki dźwięku przesyłane są do
mikroprocesora przez linię I2S. Chciałbym otrzymać dźwięk o następujących
parametrach: częstotliwość próbkowania = 48kHz, 16 bitów na próbkę, 2 kanały. Po
skonfigurowaniu linii I2S oraz kodeka niestety otrzymuję szumy.
Kodek pracuje w trybie master i ma podpięty zewnętrzny zegar 12.288MHz.
Czy ktoś posiada doświadczenie w konfiguracji linii I2S i kodeka ADAU1961 i
mógłby mi pomóc w otrzymaniu poprawnego dźwieku.
Za wszelkie uwagi i sugestie wielkie dzięki.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
Michał Lankosz
Guest
Tue Aug 14, 2012 8:22 pm
W dniu 2012-08-06 12:52, kroq pisze:
Quote:
Witam,
Mam problem przy zapisie dźwięku z kodeka ADAU1961 do bufora.
Używam mikroprocesora STM32F417 i dedykowanych dla niego bibliotek
STM32F4xx_DSP_StdPeriph_Lib do konfiguracji peryferiów. Rejestry kodeka
konfiguruję za pomocą linii I2C, natomiast próbki dźwięku przesyłane są do
mikroprocesora przez linię I2S. Chciałbym otrzymać dźwięk o następujących
parametrach: częstotliwość próbkowania = 48kHz, 16 bitów na próbkę, 2 kanały. Po
skonfigurowaniu linii I2S oraz kodeka niestety otrzymuję szumy.
Kodek pracuje w trybie master i ma podpięty zewnętrzny zegar 12.288MHz.
Czy ktoś posiada doświadczenie w konfiguracji linii I2S i kodeka ADAU1961 i
mógłby mi pomóc w otrzymaniu poprawnego dźwieku.
Za wszelkie uwagi i sugestie wielkie dzięki.
Wszystkie STM32 mają ten sam błąd interfejsu I2S pracującego w trybie
slave. Według mnie olewa on sygnał na linii WS (LRCK), przez co nie
synchronizuje się do ramki audio. Jest to opisane w erracie. Tak samo
jeśli zagubi się cykl SCLK interfejs rozsynchronizowuje się.
Nie wiem dlaczego ST ciągnie ten błąd? Już w 2008 roku musiałem
przeprojektować układ właśnie z tego powodu, a też się naużerałem z tym
bo pierwszy raz bawiłem się I2S. Zgłaszałem to do przedstawiciela,
rozmawiałem, ale nic z tego nie wynikło a jedynie po roku czy dwóch
trafiło do errat.
Moja rada, ustaw interfejs w tryb master i podepnij 12.288MHz do uC. Ale
najpierw sprawdź oscyloskopem linie SDATA i LRCK, czy dane są prawidłowo
ułożone i spróbuj metody opisanej w erracie.
Michał