Waveplayer -- 48kHz/16bit/stereo wave-spelare på en Xmega

Berätta om dina pågående projekt.
lerneaen_hydra
Inlägg: 24
Blev medlem: 20 juli 2008, 22:09:10
Ort: Göteborg

Waveplayer -- 48kHz/16bit/stereo wave-spelare på en Xmega

Inlägg av lerneaen_hydra »

Byggt en liten musikspelare som läser wave-filer from mikro-SD kort och spelar upp på en DAC, egentligen ganska mycket yet-another-AVR-player, men jag har inte sett andra som gjort det vid 44.1/48kHz, 16-bit, och två kanaler.
waveplayer.jpg
waveplayer_v1.sch.pdf
Sitter en xmega32E5 (ganska basic 32-pinnars xmega) som läser från SD-kortet med Roland Riegels bibliotek (http://www.roland-riegel.de/sd-reader/), som sedan buffrar rådatan i ett FIFO. Utmatningen till DAC'n är ganska mycket av ett ful-hack -- I2S data genereras med en UART modul som är satt i synkront läge som ger data och klocka, medan left/right klockan skapas av en timer som togglar en utgång vid overflow (efter 16 klockar) och som klockas från event-systemet och bit-klockan (därav att PC1 matar PC2 i schemat). Data petas in i UART-modulen mha. en intern DMA-kontroller, vilket gör att allt från ett block av data till I2S data ut sker helt utan att lasta CPUn (bortsett från att DMAn kan blocka CPUns minnesaccess när den är aktiv). Master-klockan till DAC'n är halva xmega'ns interna klocka, vilket gör att man får dynamiskt byta klockfrekvens på mikrokontrollern när man byter samplerate :p.

I övrigt ganska standard, sitter lite ingångs ESD skydd för några generella ingångar som kan trigga olika händelser (play/pause/stop etc), en analogingång som styr en digital volymkontroll i DAC'n, ett low-power läge som stänger av analogmatningsspänningnen för att dra ner energiförbrukningen i standby (~1.7mA), och ett antialiasing filter på utgången.

Finns utförlig dokumentation och sånt att få tag på här; http://www.rabidmantis.se/waveplayer/ om det är nån som tycker det verkar roligt att bygga.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.