eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDziałająca biblioteka C do VS1003?Działająca biblioteka C do VS1003?
  • Data: 2020-06-11 11:44:58
    Temat: Działająca biblioteka C do VS1003?
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Próbuję właśnie uruchomić urządzenie posiadające sprzętowy dekoder MP3
    VS1003. Urządzenie wykonałem w dwóch wariantach: z układem
    PIC32MX795F512L oraz szesnastobitowym układem PIC24 (zacząłem od tego
    drugiego, ale w międzyczasie postanowiłem przenieść projekt na układ 32
    bitowy). Ma to znaczenie o tyle, że w obydwu wersjach kod zachowuje się
    tak samo, czyli raczej można wykluczyć problem wynikający ze specyfiki
    sprzętowej, np. pin zajęty przez jakieś układ peryferyjny.

    Płytki zostały zaprojektowane w oparciu schematy z PDF-ów producenta. W
    obydwu wersjach schemat jest identyczny, a ukłąd ścieżek prawie
    identyczny. Przyglądałem się wielokrotnie i błędów w połączeniach nie
    dostrzegam.

    Od strony programowej próbowałem posłużyć się tym kodem z STM32
    znalezionym na GitHubie, portując go na PIC24/PIC32.

    https://github.com/digao6975/stm32-player/tree/maste
    r/src

    Dekoder częściowo działa. W pętli głównej czytam do bufora po kawałku
    plik MP3, a potem wysyłam te dane do układu. Przed wysłaniem każdego
    kolejnego bajtu czekam w pętli na ustawienie linii DREQ (tymczasowa
    prowizorka, lepiej byłoby to zrobić na przerwaniach). Po dotarciu do
    końca pliku zaczynam go czytać od nowa.

    Dźwięk jest odtwarzany, ale najlepsze co uzyskałem to "ćwierkający"
    efekt. Co ciekawe najlepsze efekty uzyskałem przy małym buforze na
    fragmenty danych z pliku (zaledwie 16 bitów). Gdy ustawię więcej,
    "ćwierkanie" staje się szybsze przechodzi w szum albo wręcz nastaje
    cisza. Efekty nie są też w 100% powtarzalne, nie zawsze odtwarzanie chce
    się rozpocząć.

    Co najdziwniejsze, przy większych rozmiarach bufora program szybciej
    dociera do końca pliku, jakby linia DREQ nic nie dawała - jej
    konfigurację po stronie MPU sprawdzałem wiele razy i wszystko wydaje się
    być ok.

    W tej chwili skończyły mi się pomysły i jeśli nic innego nie przyjdzie
    mi do głowy, przeportuję popularną bibliotekę z Arduino, napisaną w C++.
    Nie chciałbym jednak wyważać otwartych drzwi, jeśli istnieje jakaś dobra
    biblioteka w C, którą można łatwo przenosić między rodzinami
    mikrokontrolerów, albo która ma wersję dla PIC32.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: