Scelta DAC

Ciao,

devo usare un DAC a 16 bit 2 ch per buttar fuori un segnale audio letto da una SD card. Non ho pretese audiofile, l'importante è che si senta decentemente. Seguirà un buffer a op-amp per duplicare il segnale: uno andrà a piccolo ampli audio e l'altro a un'uscita cuffie (a questo proposito c'è un integratino robusto adatto allo scopo?).

Ho fatto una prova con un AD5547 (parallelo) e il risultato è accettabile. Ora vorrei usarne uno seriale (SPI) per ridurre l'ingombro.

Cercando in giro ne ho trovati diversi alcuni per usi generici (come del resto l'AD5547) altri per applicazioni audio. Questi ultimi cosa hanno di particolare? Mi perdo qualcosa di importante a usarne di generici?

Ho visto ad esempio il DAC8552 della TI che mi sembra interessante. Consigli sono bene accetti :)

Marco / iw2nzm

Reply to
Marco Trapanese
Loading thread data ...

I DAC audio sono effettivamente diversi. Hanno un clock in ingresso che deve essere tipicamente 8-16 volte la sample rate. Eseguono delle interpolazioni tra due sample (8 od anche 16) e "smussano" perfettamente i gradini. Infatti, se provi a guardare dal CD (e forse anche dalla scheda audio del PC) che forma d'onda salta fuori con un suono a 20 KHz, vedrai una sinusoide perfetta e non gradini. A 44100 sample dovresti vedere con un DA convenzionale solo due picchi: uno positivo ed uno negativo. Li ho usati per applicazioni audio e scovai un Burr-Brown molto valido, ma non ricordo la sigla!!! Comunque, prova a smontare qualche vecchio lettore CD da computer; in genere li utilizzano per l'uscita audio. Alcuni hanno solo 8 pin e sono stereo.

Piccio.

Reply to
Piccio

Piccio ha scritto:

Capito.

Ho trovato l'AD1866 che sembra molto carino. E' interessante perché ha due ingressi data (per l'SPI) così si possono aggiornare i due DAC con un'unica trasmissione (poi bisogna essere bravi con il micro a mandare fuori i due segnali senza perdere tempo visto che non si può usare l'SPI hardware). In uscita ha anche la vref a metà scala per accoppiare in DC gli stadi successivi.

In uscita ci metterò un op-amp con un leggero passa basso come consigliato anche da datasheet e poi dovrò mandare lo stesso segnale sia in cuffia che a un piccolo amplificatore (sulla stessa scheda).

Per le cuffie che tipo di ampli posso usare? L'importante è che sia robusto (i jack mettono sempre in corto l'uscita...) e che non necessiti di tanti componenti esterni....

Ciao e buona domenica! Marco / iw2nzm

Reply to
Marco Trapanese

Il 07 Giu 2008, 18:57, Marco Trapanese ha scritto:

Nel mio player MP3 autocostruito ho adoperato questo:

formatting link
E' un audio dac molto flessibile che integra uscita cuffie amplificata più uscita di linea L/R da amplificare.

Il datastream audio, opportunamente formattato, giustificato e arbitrato tramite IRQ, viene fornito da:

formatting link
Il mio player preleva i dati da due sorgenti selezionabili da menu (^_^), cioè una MMC/SD card rimovibile o una memoria dataflash "interna" da 64MB, mediante interfaccia SPI. Il chip dispone di un core capace di scompattare e decodificare il flusso MP3, produrre lo stream audio a bitrate, frequenza e risoluzione programmabili, e della relativa periferica a "3 fili", su cui viaggiano l'output seriale dei dati sonori, il clock e il canale audio interessato, come da standard. Il tutto è clockato a 16MHz.

Ho reperito entrambi i componenti su digikey.com.

Saluti. :)

-------------------------------- Inviato via

formatting link

Reply to
Matricola

Matricola ha scritto:

Interessante!

Conosci qualche AN del TLV320DAC23? Per avere un'idea al volo dei componenti di contorno e dei filtri in uscita consigliati.

Non ho mai capito le modalità "right / left justified": in pratica lo stream audio viene inviato a velocità doppia (ovvero in 1/fs si trasmettono entrambi i canali). Ma così facendo il micro è sempre impegnato!

Forse il DSP mode permette la scrittura 'burst' ad ogni interrupt.

Visto che l'hai usato ti faccio un paio di domande alle quali non ho trovato risposta sul datasheet:

- la trasmissione dei dati audio è la solita in complemento a 2?

- Il clock delle due seriali sincrone (SCLK e BCLK) non deve essere sincrono con il clock di sistema (CLKOUT), vero?

Io uso un ATmega644P @ 20 MHz e lo stream audio letto dalla SD è il classico PCM a 16 bit stereo (wave).

Infatti su Farnell non sono disponibili :( Mi sa che devo provare anche io su digikey o sentire qualche distributore TI.

Grazie! Marco / iw2nzm

Reply to
Marco Trapanese

Il 09 Giu 2008, 12:31, Marco Trapanese ha scritto: [...]

Dovrebbe essere disponibile dalla pagina che ti ho linkato prima. Una AN di "typical application". Se non ricordo male c'è solo un pin di filtro, al quale collegare un paio di condensatori polarizzati, che scaricano sulla GND analogica.

impegnato! Il flusso è seriale, e si inviano sempre entrambi i canali. La giustificazione interessa soltanto i fronti di BCLK in corrispondenza dei quali viene pushato il primo bit, l'ordine dei canali (se viene trasmesso prima il datastream del canale destro o sinistro), e se viene inviato prima il MSB o prima l'LSB.

Ehm... non saprei risponderti. :P Il micro della atmel predispone ed invia il buffer di uscita in modo del tutto trasparente. Va solo settato all'inizio e fa tutto da sè. Quando il registro di output è prossimo allo svuotamento, viene generato un irq, in corrispondenza del quale si lancia la routine che legge dati dalla sorgente.

SCLK non riguarda il flusso audio. BCLK è il clock del datastream audio. SCLK E' il pin di clock per l'interfaccia di controllo, che puoi gestire via SPI o I2C, a seconda del gusto. :) L'interfaccia di controllo ti permette di inviare le impostazioni al DAC, come il volume, il mute, sampling rate, giustificazione, ecc. ecc. ed è ben distinta dall'interfaccia audio.

Piuttosto BCLK deve essere sincronizzato con le attività del micro. L'importante è fornire un bitrate consono alla configurazione del DAC, in modo da non interrompere con fruscii, fischi e gracchi la continuità della riproduzione audio.

[...]

Come già detto, non sono molto a conoscenza delle minuzie del protocollo. :) A naso, direi che è un flusso grezzo (saprai sicuramente come estrapolarlo da un file WAV), "sparabile" direttamente alla porta di audio input del DAC, con il micro che si dovrà occupare di gestire il pin relativo al canale audio L/R (da invertire ogni 16 bit), al clock dello stream audio e all'invio del datastream contenente i dati del suono, in tronconi di 16 bit per volta a canale.

Non dovrebbe essere troppo complicato. Magari usando un timer irq riesci a farlo tranquillamente con l'ottimo AVR che stai usando.

-------------------------------- Inviato via

formatting link

Reply to
Matricola

Il 09 Giu 2008, 15:21, snipped-for-privacy@llospam.it (Matricola) ha scritto: [...]

Ho riletto meglio e preciso una cosa: il DAC può funzionare come master e come slave. Nel tuo caso (come nel mio) viene usato come slave. Il master dell'applicazione sarà il micro, che si preoccuperà di iniettare i clock nelle interfacce di controllo e audio. Il pin CLKOUT non fa altro che propagare il clock del DAC, quando questo opera in modalità master.

Saluti. ;)

-------------------------------- Inviato via

formatting link

Reply to
Matricola

Il 09 Giu 2008, 12:31, Marco Trapanese ha scritto: [...]

formatting link
E' il documento che accompagna la evaluation board del dac. Guarda intorno a pagina 70. Ci sono gli schematics della scheda. ;)

Mi scuso per i post a puntate, ma oggi sono più distratto del solito. :)

Ciao.

-------------------------------- Inviato via

formatting link

Reply to
Matricola

Matricola ha scritto:

Su questo non ci piove (a differenza di quanto avviene qua fuori). Io mi riferivo alla modalità di trasmissione che stando a quanto ho capito dal datasheet è continua e dura esattamente 1/fs, impegnando di fatto il bus seriale di continuo.

Ah beh, facile così :)

Si si, ne sono cosciente! Ma molti DAC audio che ho visto vogliono questi due clock sincroni con quello principale: in pratica sono derivati da un unico clock. E la cosa è piuttosto seccante, anzichenò. Però questo non dice nulla a riguardo...

Beh, se io aggiorno l'uscita del DAC ogni 1/44100 secondi non avrò fruscii o gracchii... ma per trasmettere una manciata di byte non voglio certo metterci 22 us!!!

Questo non è affatto un problema e con il mio DAC parallelo ho fatto la stessa identica cosa. Però non so... non mi convince molto, mi sembra più predisposto per l'uso con un DSP che con un normale uC.

Ora valuto se usare questo o l'AD1866 che è molto carino (peccato solo per l'uscita cuffie in effetti). Ammesso che la Analog si degni di farmi sapere dove posso acquistare la versione SMD!

Ciao! Marco / iw2nzm

Reply to
Marco Trapanese

Matricola ha scritto:

Girando girando l'avevo trovata anche io... ma ci sono troppi clock per i miei gusti :)

Scherzi a parte ora vedo cosa scegliere!

Grazie! Marco / iw2nzm

Reply to
Marco Trapanese

Il 09 Giu 2008, 18:28, Marco Trapanese ha scritto:

[...]

Ed ho dimenticato di dirti che, usandolo come slave, devi fornire anche il clock di sistema dal tuo micro. :P In realtà il clock da generare è solo uno, da "iniettare" su due diversi pin del dac, in quanto quello del bus di controllo (sia che tu scelga SPI o I2C) lo avresti contemplato comunque. :).

1) clock di sistema, correlato al sampling rate (sezione 3.3.2.2 del datasheet); partendo da un clock di sistema di 16MHz, io ho optato per 12.288 e 11.2896, per adattare il dac ad una ampia gamma di sampling rates dei file mp3 elaborati di volta in volta, solitamente 44.1kHz, ma non sempre. 2) clock dell'audio stream PCM - in pratica lo stesso del precedente, per avere la garanzia di non andare out of sync.

Ti suggerisco di provare ad usarlo, non te ne pentirai. :)

Saluti.

-------------------------------- Inviato via

formatting link

Reply to
Matricola

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.