Spela ljud från SD-kort med AVR och DAC

Berätta om dina pågående projekt.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Spela ljud från SD-kort med AVR och DAC

Inlägg av adent »

Har börjat med ett litet projekt, slutmålet är lite hemligt, eller nått.
Men den grundläggande funktionen ska bli att kunna spela ljud från SD-kort.
16 bitars Wav-filer i mono närmare bestämt.

Än så länge har jag lyckats koppla ihop en AVR ATmega168 (16K flash, 1K RAM och 20MHz kristall) med ett SD-kort och en 8-bitars parallel DAC.
Den klarar nu att spela 8 bitars Wav-filer i mono.

Jag fixar ljuduppspelningen med dubbelbuffring. Fyller en buffer från SD-kortet medan den andra används för spelning. Kod för hantering av SD-kort (SPI) och filsystemet körs i ett huvudprogram och uppspelningen av ljud sköts via ett timer-interrupt som kommer 44100 ggr/sek.
Dock är jag rädd för att hastigheten mot SD-kortet inte räcker till för att läsa mycket mer än jag gör nu. Men jag ska prova med en större AVR med 2K RAM istället, så jag kan ha
mycket större buffrar än tidigare (Bara filsystemet nödvändig stack snor ca 600 bytes)

Ett annat problem är att en seriell DAC kräver att jag klockar ut 16 bitar till den, en i taget, detta kommer behöva göras i interruptet och kommer då att sno mer tid ifrån huvudprogrammets läsning från SD-kort. Men det återstår att se hur dessa faktorer påverkar i verkligheten.

Återkommer med bilder och mer info. Tips på bra och billig kombination av 16 bits (gärna mono) DAC och headphone-förstärkare mottages tacksamt.
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av Norpan »

Går det inte att använda spi intefacet till att klocka ut till din dac? Isåfall kan du bli av med bitarna åtta åt gången för processorns del.
limpan4all
Inlägg: 8445
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av limpan4all »

Byt processor, den du valt är helt enkelt i klenaste laget för det du vill göra.
Tag en NXP LPC2368 så har du mer än vad du behöver och support för I2S mot DAC (med DMA stöd).
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av Micke_s »

Tror också processorn är i klenaste laget.
Gå ner i samplehastighet annars.

Ett annat sätt som möjligtvis kan fungera är att binda sdkortet out till dac:ens in.
Då behöver du bara styra cs för hoppa över data token och crc på varje paket. Kör du i högre hastighet än vad som krävs så borde du kunna få data token och crc att vara ljudlös.

http://elm-chan.org/docs/mmc/mmc_e.html
och kommando cmd18.

Edit: Alla delar av filen måste ligga sekvensiellt och du måste klocka så du hinner läsa 4byte i 44100 tempo = 176400 hz
176400 är helt möjlig med avr.

edit2: kan gå om dac:en har vettigt interface...
docksider
Inlägg: 95
Blev medlem: 19 december 2007, 00:04:52
Ort: Uppsala

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av docksider »

Annars kan du ju tillägna ett par portar på den och bygga en 16b DA med motstånd. Går ruskigt fort då ju
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av adent »

Här kommer en bild iaf, kretsen längst till vänster under sladdarna är AVR:en, den till höger är DAC:en och den nere till höger är en op-amp som inte används just nu.

Bild på uppkopplingen.

docksider: Det ska helst vara bra ljud, men visst funkar det!
limpan4all: Micke_s: Men AVR:erna är min gyllene hammare! ;) Näe, men det är ju roligare om det går med den, jag tror det ska gå.

Lite baserat på denna: http://elm-chan.org/fsw/ff/img/rwtest.png

Norpan: Den inbyggda SPI:n används ju till SD-kortet, så jag vet inte riktigt, kan ju switcha mellan men...


MVH: Mikael

[EDIT: fixade länken till bilden]

--------------------
Max 700 pixlar i bredd på bilder!
Jag gjorde om den trevliga bilden (med 1024 pixlar i bredd) till en tråkig länk...

//Jimmy
--------------------
Senast redigerad av adent 25 juni 2009, 16:31:24, redigerad totalt 1 gång.
Norpan
Inlägg: 2229
Blev medlem: 12 april 2008, 18:20:27
Ort: Småland

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av Norpan »

Det ser ut som man kan använda usart till spi på en mega88 iallafall.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av adent »

norpan: Jo, jag var inne på något sådant, ska prova det när jag får tag i seriell dac.
limpan4all
Inlägg: 8445
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av limpan4all »

Jo som hammare duger den ju....
Skämt åsido, jag använder också MEGA168 rätt mycket, men jag håller mig med skohornsprincipen.
OM det "kanske" går in med skohorn så tar jag en större processor redan från börja, det är inte värt jobbet att få in i den mindre minnesfootprinten.
Skillnaderna i pris mellan processorerna är ju bara runt 50:- och skillnaden i jobb att få till det kan ju röra sig om 20-200 timmar...
Senast redigerad av limpan4all 11 maj 2009, 14:49:42, redigerad totalt 1 gång.
docksider
Inlägg: 95
Blev medlem: 19 december 2007, 00:04:52
Ort: Uppsala

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av docksider »

men om det skall produceras 10 000 enheter så är 200 timmar inte jättemycket
Användarvisningsbild
Stinrew
Inlägg: 954
Blev medlem: 20 augusti 2006, 03:14:41
Ort: Motala
Kontakt:

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av Stinrew »

Men, ta och använd den nya ATmega328. Har ju dubbelt upp av alla minnena (32K-flash, 1K-EEPROM och 2K-SRAM). Lawicel tar 36+m. i förhållande till ATmega168 29+m. Det är ju exakt samma plattform och pinout/footprint.
limpan4all
Inlägg: 8445
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av limpan4all »

Skall den produceras i 10k kvantiteter så stämmer det absolut.
Fast jag gör en del saker som varit planerade för <50st per år.
Sen när allt är testat och godkänt och produktion kommit igång så har kunderna köpt mer än väntat.
Så det har legat snarare runt 100-250 per år då kan man ju fundera över två saker.
Konstruera om och testa om med en mindre/billigare CPU och tjäna kanske 35:- ytterligare per sålt exemplar (ca 5% mer).
Eller vara lycklig över den större försäljningen och le hela vägen till banken, samt lägga sin tid på nya produkter istället...
"Time to market" är så gott som alltid viktigare än låg produktionskostnad, och att åka på att byta CPU redan innan produkten kommit ut på marknaden för att man valt en för liten är förödande på alla sätt, inte minst internt (psykologiskt, "politiskt", goodwill, mm).

Men jag fick intrycket att det här var det snarare frågan om <10st och då gör det desto större skillnad...
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av Micke_s »

Du har ju Xmega om inte annat.
Edit: har en 12bitars dac också.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av adent »

Hmmm, kan nån tipsa om en bra 16 bitars mono/stereo-DAC (seriell eller parallell) med matchande hörlursförstärkare? Skulle jag uppskatta mycket, helst inte för dyr heller. Typ kvalitet som för en mp3-spelare ungefär.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Spela ljud från SD-kort med AVR och DAC

Inlägg av adent »

Planen nu är att använda en färdig mp3/wav/ogg-spelar-krets med inbyggd headphone-förstärkare. VS1011 eller 1002 eller vad de hette.
Blir nog klart mest mångsidigt och inte så dyrt. Bör gå att driva den med en AVR utan problem.
Skriv svar