Bawię się przetwornikiem TDA1543 na razie testuję jego działanie. Mam mianowicie taki problem iż nie wiem czemu, ale przy wysyłaniu danych od 0 do 255 (8 bitowych) w pewnym momencie ucina mi sygnał i tak jakby się nie mógł zmieścić w zakresie Vpp i zostaje przeniesiony bezsensownie. Można jakoś zwiększyć zakres w jakim napięcie wyjściowe wychodzi z przetwornika ?
I nie wiem czy to jest wina złego doboru elementów czy programu?? SCK i MOSI naturalnie idą do SPI a DAC_WS jako pin output do procesora. Całość taktuje 20MHz kwarcem.
Skoro piszesz, że pin WS to wyjście z tego scalaka - to powiedz mi w jaki sposób przełączasz wysyłanie danych do lewego i prawego kanału ? Zaglądałeś w ogóle do noty PDF TDA1543? ... czy może mówisz o całkiem innym scalaku ?
Poza tym że jednak traktujesz w kodzie WS jako wejście - więc dobrze pewnie to twoja literówka
Nie mniej jednak zajrzyj do noty PDF i zobacz DOKŁADNIE jak albo precyzyjniej, KIEDY należy przełączać sygnałem WS dane pomiędzy kanałem lewym i prawym ... bo na pewno robisz to teraz źle
Skoro piszesz, że pin WS to wyjście z tego scalaka - to powiedz mi w jaki sposób przełączasz wysyłanie danych do lewego i prawego kanału ? Zaglądałeś w ogóle do noty PDF TDA1543? ... czy może mówisz o całkiem innym scalaku ?
Poza tym że jednak traktujesz w kodzie WS jako wejście - więc dobrze pewnie to twoja literówka
Nie mniej jednak zajrzyj do noty PDF i zobacz DOKŁADNIE jak albo precyzyjniej, KIEDY należy przełączać sygnałem WS dane pomiędzy kanałem lewym i prawym ... bo na pewno robisz to teraz źle
Przesunąłem bajt w prawo o 1 miejsce i zaczęło grać z wielkimi szumami, ale słychać melodię lekko i myślę że to jest spowodowane asynchronicznym wysyłaniem danych przez UART'a więc zacząłem pisać obsługę odczytu karty SD ale utknąłem :/. 5ms trwa odczyt 512 bajtów z karty SD, tworzy to sporą dziurę w podawaniu sampli. Jest jakaś możliwość szybkiego czytania z kart pamięci ??. Fifo bym zrobił ale jest problem że mam wszystko na SPI, kartę SD jak i TDA więc odrywając się na chwilę od odczytywania karty by wysłać sample do TDA wiąże się z rozsypaniem transmisji z kartą SD.
Będę musiał chyba wyjść z TDA programowo na porty ...
ale po SPI sprzętowym nie zrobisz panie kochany transmisji danych I2S i tu masz ZONK'a .... bo przełączanie sygnału WS musi następować na jeden bit przed końcem bajtu z tego co pamiętam .... więc jak chcesz to zrobić przy sprzętowym SPI ? hmmm ?
ale po SPI sprzętowym nie zrobisz panie kochany transmisji danych I2S i tu masz ZONK'a .... bo przełączanie sygnału WS musi następować na jeden bit przed końcem bajtu z tego co pamiętam .... więc jak chcesz to zrobić przy sprzętowym SPI ? hmmm ?
Robię przesunięcie bitowe i zapamiętuje ten bit i cała transmisja jest przesunięta o 1 bit. Clock do TDA odcinam tranzystorem z pozytywnym skutkiem (takie emulowane "chip select")
Robię przesunięcie bitowe i zapamiętuje ten bit i cała transmisja jest przesunięta o 1 bit
Nie widzę za bardzo jak to robisz - ale czy nie tracisz w tym momencie cennego czasu ?
Panie Mirku jak wszystko będzie działać będę zapisywał od razu przygotowane dane (przesunięte) na karcie SD, zapis i odczyt mam zrobiony taki łopatologiczny beż żadnych FS na karcie, czas odczytu 512 bajtów (wrzucenia ich do tablicy zmiennych) to 5 ms ... trochę za długo. 5 ms to 220 sampli ominiętych dla odczytania 512 sampli więc robi się w sumie spora dziura.
ok .. tzn nie rozumiem i tak twojego sposobu no ale to nieistotne - może masz jakiś fajny patent. Ja podszedłem do tego inaczej ... I2S generuję czysto programowo w przerwaniu timera z częstotliwością samplowania dźwięku. Daje mi to możliwość zapisu na karcie przy najnormalniejszym zastosowaniu systemu plików FAT z częstotliwościami samplowania do hmmm powiedzmy 10 kHz a tak bez ograniczeń to do ok 8 kHz ...
ok .. tzn nie rozumiem i tak twojego sposobu no ale to nieistotne - może masz jakiś fajny patent. Ja podszedłem do tego inaczej ... I2S generuję czysto programowo w przerwaniu timera z częstotliwością samplowania dźwięku. Daje mi to możliwość zapisu na karcie przy najnormalniejszym zastosowaniu systemu plików FAT z częstotliwościami samplowania do hmmm powiedzmy 10 kHz a tak bez ograniczeń to do ok 8 kHz ...
Specjalny program do wkładania wavów na procka napiszę sobie który będzie wszystko obsługiwał. Tyle że jest jeden problem... przez który będę musiał zrobić obsługę I2S programowo na innych pinach, bo nie mogę na chwilę zrobić przerwania które skorzysta z interfejsu SPI podczas odczytu danych co mi psuje całą komunikację. Chyba że ktoś wie w którym miejscu mogę sobie pozwolić na przerwanie ?? bo w żadnej nocie katalogowej kart sd nie znalazłem takiej informacji ...
Tak to teraz wygląda z drobnymi przeróbkami ze strony wyjścia (AOL i Vref itp.) bo muszę jeszcze płytkę z NE5532 dorobić ale mam ją na prototypowej: I mam albo rybki albo akwarium albo wrzucanie sampli do TDA albo czytanie karty SD
---------------------Dodano po iluś tam minutach, godzinach ettecera ------------------------ Zoptymalizowałem kod i zszedlem do 2.5ms max z 5ms co najmniej, ale to i tak za długo ... SPI działa na full speedzie podczas odczytywania :< a i tak to nic nie daje
Tak wygląda dziura ściągania 512 bajtów z karty SD
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników