Come selezionare e utilizzare un codec audio e un microcontroller per i file di riscontro audio integrati
Contributo di Editori nordamericani di DigiKey
2020-12-02
C'è una crescente necessità tra i sistemi embedded di fornire audio ad alta fedeltà al posto dei cicalini, compresi gli allarmi e gli avvisi per l'utente. Mentre i segnali acustici come i bip sono stati efficaci in passato, oggi gli utenti si aspettano suoni più sofisticati, che possono essere prodotti solo attraverso la riproduzione di audio da formati di file come MP3. Il problema è che la riproduzione audio può apparire intimidatoria e aggiungere costi e complessità a un sistema. Il primo istinto è quello di trovare un microcontroller in grado di riprodurre il formato MP3, ma questo spesso aggiunge costi alla distinta base e una notevole complessità al software embedded.
Una soluzione particolarmente valida per bilanciare il costo e la complessità del software è l'utilizzo di un codec audio. I codec audio non solo accettano un flusso di dati audio da un microcontroller, ma spesso hanno anche caratteristiche che permettono allo sviluppatore di sintonizzare attentamente il sistema di riproduzione audio per migliorare la qualità del suono riprodotto dal sistema.
In questo articolo si parlerà del ruolo dei codec audio, delle principali caratteristiche che gli sviluppatori dovrebbero considerare nella selezione e di come applicarli efficacemente. Le soluzioni di AKM Semiconductor, Texas Instruments e Maxim Integrated saranno utilizzate come esempi, sebbene siano disponibili anche altre soluzioni. Si concluderà con alcuni consigli su come accelerare lo sviluppo di applicazioni di riproduzione audio utilizzando un codec, riducendo al contempo il costo del sistema.
Cosa sono i codec audio?
Un codec audio è un componente hardware in grado di codificare o decodificare un flusso di dati digitali contenenti informazioni audio1. Un codec audio è utile perché consente l'elaborazione audio esternamente dalla scheda del microcontroller. Questo può ridurre significativamente la complessità del software e permette anche di utilizzare un microcontroller meno costoso e meno capace per un'applicazione.
Un tipico codec audio conterrà diversi blocchi funzionali:
- Un'interfaccia I2S per trasmettere o ricevere dati audio digitali codificati
- Un'interfaccia I2C per configurare e leggere i registri di controllo del codec audio
- Un ingresso microfono collegato a un convertitore analogico/digitale (ADC)
- Almeno un canale di uscita audio come l'uscita di un altoparlante, ma la maggior parte include anche una uscita di linea e può includere più uscite altoparlante per la riproduzione stereo
- Un blocco numerico contenente filtri passa-alto, passa-basso, notch ed equalizzatore per sintonizzare le riproduzioni e le registrazioni audio
Un esempio di codec audio abbastanza popolare per il suo basso costo e le sue capacità audio è il codec audio a 24 bit AK4637EN di AKM Semiconductor (Figura 1). AK4637EN ha tutte queste caratteristiche, oltre a un ingresso di generazione dei segnali acustici utilizzando un segnale con modulazione della larghezza di impulso (PWM) alla frequenza desiderata.
Figura 1: AK4637EN è un codec audio con un'uscita altoparlante mono con capacità di riproduzione e registrazione audio. Contiene anche un blocco audio interno che può essere utilizzato per filtrare l'audio in entrata e in uscita e migliorarne la fedeltà. (Immagine per gentile concessione di AKM Semiconductor)
Gli sviluppatori noteranno che il principale fattore di differenziazione per un codec audio sarà l'emissione audio mono o stereo, così come le capacità del blocco numerico. Ad esempio, AK4637EN offre un filtro passa-alto, un filtro passa-basso, un equalizzatore a quattro bande, una funzione di autolivellamento dei canali e un equalizzatore a banda singola. Quest'ultimo può essere utilizzato come filtro notch. Il modo in cui uno sviluppatore imposta questi filtri digitali può influenzare drasticamente il suono di un sistema.
Il codec audio a volte può intimidire uno sviluppatore inesperto in fatto di riproduzione audio. Ad esempio, mentre AK4637EN è un semplice codec audio, un rapido esame della scheda tecnica mostra che ha 64 registri configurabili. Inizialmente potrebbero sembrare molti, ma la maggior parte di questi registri è utilizzata per impostare i coefficienti per i vari filtri digitali disponibili. Solo alcuni devono essere usati per far sì che il sistema emetta l'audio in modo corretto, rendendo lo sviluppo del driver per un codec audio molto più semplice di quanto un principiante possa immaginare.
Come selezionare un codec audio
Uno dei fattori principali per la selezione di qualsiasi elemento nello sviluppo di un prodotto è il costo e questo vale anche per i codec audio. Tuttavia, è importante tener presente che c'è uno stretto rapporto tra pezzo e prestazioni e quando si tratta di audio il team deve valutare attentamente i requisiti di progettazione rispetto ai parametri chiave della soluzione.
La prima considerazione è l'uscita richiesta dal codec audio. Esistono parecchie scelte. Ad esempio, AK4637EN ha un'uscita di linea e un'uscita altoparlante mono. Altri codec, come il codec audio stereo TLV320AIC3110IRHBR di Texas Instruments, possono pilotare due altoparlanti a 1,29 W (Figura 2).
Figura 2: TLV320AIC3110IRHBR di TI è un codec audio con uscita stereo e amplificazione oltre a un ingresso microfono. Il codec può pilotare 1,29 W da amplificatori interni e dispone di blocchi audio numerici programmabili. (Immagine per gentile concessione di Texas Instruments)
Altri codec audio come MAX9867 di Maxim Integrated sono progettati per pilotare solo un paio di cuffie (Figura 3). MAX9867 ha le tipiche interfacce digitali I2S e I2C, ma contiene anche ingressi microfono stereo e due ingressi di linea selezionabili digitalmente.
Figura 3: Il codec audio integrato MAX9867 di Maxim può pilotare cuffie stereo e selezionare tra ingressi digitali, microfono e linea. (Immagine per gentile concessione di Maxim Integrated)
Scegliere tra queste tre soluzioni in base al tipo di uscita (o anche l'ingresso) è una decisione critica da prendere in anticipo.
Gli sviluppatori devono anche considerare altri fattori. Il codec audio piloterà direttamente le cuffie, un altoparlante o un paio di altoparlanti e quale sarà la potenza di uscita? Se il sistema piloterà un altoparlante da 5 W, non sono molti i codec per sistemi embedded adeguati allo scopo. Invece, uno sviluppatore potrebbe voler selezionare la linea di uscita e utilizzare un amplificatore separato in classe D per pilotare direttamente l'altoparlante. In questo modo risparmierebbe un po' sui costi e si garantirebbe al tempo stesso più flessibilità di progettazione.
Due considerazioni finali sono le capacità di instradamento interno e di filtraggio digitale. Questo fa davvero la differenza in termini di costo per un codec audio. Ad esempio, TLV320AIC311IRHBR ha capacità di eliminare il crepitio e di avvio graduale per ridurre al minimo il crepitio degli altoparlanti e consentire una transizione fluida nella riproduzione audio. Dispone inoltre di un mixer interno per ogni canale di uscita e di un controllo digitale del volume.
Spetta allo sviluppatore bilanciare attentamente le esigenze dal codec audio con la distinta base e la quantità di spazio su scheda che sarà occupata dai circuiti.
Il sistema di riproduzione audio
Quando si lavora con un codec audio, è importante rendersi conto che oltre al codec audio vi sono parecchi blocchi diversi necessari per una buona riproduzione audio. I blocchi esatti varieranno leggermente in base all'applicazione e al metodo deciso per la riproduzione, ma uno schema generalizzato è mostrato in Figura 4.
Figura 4: Lo schema a blocchi di collegamento generalizzato per un sistema di riproduzione audio in una tipica applicazione embedded mostra la necessità di storage per i file audio, sotto forma di microcontroller o di memoria esterna. (Immagine per gentile concessione di Beningo Embedded Group)
Diversi punti in questo schema meritano di essere discussi. In primo luogo, dev'esserci un metodo utilizzato per memorizzare i file di riproduzione audio. Le opzioni sono due: memorizzare i file internamente nella flash del microcontroller o esternamente nella memoria flash. La scelta dipenderà da quanto sono grandi i file audio e da quanto è grande la memoria flash interna del microcontroller.
Gli sviluppatori devono anche considerare quale sarà il formato di riproduzione audio. Il più comune è MP3. In questo caso, il microcontroller selezionato deve avere uno stack software che supporti la decodifica MP3. In questo modo è possibile aprire il file MP3 e poi trasferirlo usando un controller di accesso alla memoria dinamica (DMA) tramite l'interfaccia I2S. Anche la porta I2S può essere configurata per le modalità master/slave e per diverse altre modalità, quindi è necessario esaminare attentamente questo aspetto per garantire che i dati vengano trasferiti al codec alla velocità corretta.
Come già detto in precedenza, un amplificatore audio esterno può essere o non essere necessario, a seconda dell'applicazione. Un tipico codec emette circa da 1 a 1,5 W, utile per pilotare un piccolo altoparlante. Per pilotare un altoparlante da 3 W o superiore, sarà necessario utilizzare un amplificatore esterno. Anche in questo caso, i più utilizzati sono quelli in classe D. L'amplificatore non deve necessariamente avere un guadagno variabile. Il codec audio può regolare il controllo del volume in modo digitale per fornire un ampio intervallo della potenza di uscita.
Un aspetto che viene spesso trascurato è la capacità a effetto di massa. Quando l'audio è in riproduzione, può assorbire pesantemente dai rail di alimentazione. Se la capacità sulla scheda non è sufficiente, la qualità dell'uscita può essere compromessa e può includere diversi altri rumori indesiderati. Questo può essere rilevato monitorando attentamente i rail di alimentazione durante i test. Durante lo sviluppo di una scheda CS, non è una cattiva idea lasciare alcuni footprint extra sulla scheda per permettere di provare diversi valori di capacità al fine di sintonizzare il circuito di uscita.
Consigli per la selezione e l'utilizzo di un codec audio
I codec audio possono semplificare notevolmente il software embedded e fornire un'applicazione con un'ottima qualità audio. I codec audio possono essere complicati se lo sviluppatore non ci ha mai lavorato. Per sfruttare appieno un codec audio, i team dovrebbero tenere a mente alcuni consigli, ad esempio:
- Utilizzare la funzione DMA (controller ad accesso diretto di memoria) all'interno di un microcontroller per alimentare il codec audio con un intervento minimo della CPU. Questo aiuterà a garantire che il codec non sia a corto di dati.
- Quando l'audio non viene riprodotto, utilizzare la funzione di silenziamento dei codec per evitare che il rumore di uscita a basso livello raggiunga l'altoparlante.
- Quando si disabilita o si abilita la riproduzione, utilizzare la funzione soft-mute del codec audio per evitare il crepitio dell'altoparlante e altri rumori indesiderati.
- Utilizzare un'applicazione terminale per la generazione dei registri del codec dopo aver inizializzato il codec. Questo può essere particolarmente utile quando si tenta di eseguire il debug o di sintonizzare il circuito di uscita dell'altoparlante e l'involucro.
- Sfruttare i meccanismi interni di filtro digitale inclusi in un codec. I filtri digitali permettono allo sviluppatore di equalizzare l'uscita, filtrare le alte e basse frequenze indesiderate e massimizzare la qualità del sistema audio.
- Non dimenticare che la sintonizzazione sarà utile solo quando il circuito stampato e l'altoparlante sono installati nell'involucro, poiché l'involucro e il montaggio fanno un'enorme differenza.
Per iniziare, gli sviluppatori possono sperimentare il kit di valutazione MAX9867EVKIT+ per MAX9867 di Maxim Integrated (Figura 5).
Figura 5: Il kit di valutazione MAX9867EVKIT+ per MAX9867 si collega a un PC tramite un cavo USB e dispone di ingressi RCA, uscite per cuffie e moduli di trasmissione e ricezione in fibra ottica. (Immagine per gentile concessione di Maxim Integrated)
Il kit comprende la scheda e il software associato e viene configurato per inviare e ricevere dati audio utilizzando l'interfaccia digitale Sony/Philips (S/PDIF), sebbene possa essere impostato per l'utilizzo di I2S. Ha due prese di ingresso RCA, due prese per cuffie con uscita analogica da 3,5 mm e moduli di ricezione e trasmissione in fibra ottica. Il software è compatibile con Windows e quando è collegato a un PC tramite un cavo USB presenta un'interfaccia grafica utente (GUI) attraverso la quale lo sviluppatore può sperimentare le impostazioni di MAX9867 (Figura 6).
Figura 6: Utilizzando l'interfaccia grafica basata su Windows, gli utenti possono sperimentare una vasta gamma di impostazioni in MAX9867, dall'orologio e audio digitale (scheda selezionata) fino ai registri 1 e 2 (a destra). (Immagine per gentile concessione di Maxim Integrated)
Conclusione
Gli utenti di sistemi embedded sono abituati ad ascoltare audio di qualità, al punto che ora si aspettano suoni sofisticati al posto dei tradizionali cicalini e segnali acustici per allarmi, avvisi e altri riscontri audio. Questo impone ai team di sviluppo l'onere di implementare le capacità di riproduzione MP3 nei loro sistemi. Se può inizialmente sembrare un'impresa complessa, utilizzando il codec audio giusto accanto a un microcontroller e seguendo alcune best practice di progettazione, gli sviluppatori possono bilanciare il costo e la complessità associati alle applicazioni audio.
Riferimenti
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

