Cum se selectează și se utilizează un codec audio și un microcontroler pentru fișierele de feedback audio încorporate

By Jacob Beningo

Contributed By DigiKey's North American Editors

Există o nevoie tot mai mare în rândul sistemelor încorporate de a oferi un sunet de înaltă fidelitate în locul soneriilor pentru feedback-ul utilizatorilor, inclusiv pentru alarme și alerte. Chiar dacă bipurile și trilurile au fost eficiente în trecut, acum utilizatorii se așteaptă la sunete avansate care pot fi produse doar prin redare audio din formate de fișiere precum MP3-urile. Problema este că redarea audio poate părea intimidantă și poate adăuga costuri suplimentare și complexitate unui sistem. Prima reacție ar fi găsirea unui microcontroler care să poată reda MP3-uri, dar acesta mai adaugă niște cheltuieli în plus la lista de materiale (BOM) și o complexitate considerabilă software-ului încorporat.

O soluție deosebit de bună în ceea ce privește echilibrarea costurilor suplimentare și a complexității software-ului este utilizarea unui codec audio. Nu numai că aceste codecuri audio acceptă un flux de date audio de la un microcontroler, ci au, adesea, și mai multe funcții care îi permit dezvoltatorului să regleze cu atenție sistemul de redare audio pentru a îmbunătăți calitatea sunetului redat de sistem.

În acest articol se va discuta despre rolul codecurilor audio, despre principalele caracteristici pe care dezvoltatorii trebuie să le ia în considerare atunci când fac o alegere și despre cum să le aplice în mod eficient. În continuare vor fi prezentate și utilizate ca exemple soluțiile oferite de AKM Semiconductor, Texas Instruments și Maxim Integrated, chiar dacă pe piață mai sunt disponibile și altele. Articolul se va încheia cu sfaturi și trucuri despre modul în care poate fi accelerată dezvoltarea aplicațiilor de redare audio cu ajutorul unui codec, reducând, în același timp, costurile sistemului.

Ce sunt codecurile audio?

Un codec audio este o componentă hardware capabilă să codifice sau să decodifice un flux de date digitale care conține informații audio1. Un codec audio este util deoarece permite externalizarea procesării audio de la microcontroler. Acest lucru poate reduce semnificativ complexitatea software-ului și, de asemenea, poate permite utilizarea unui microcontroler mai ieftin și mai simplu pentru o aplicație.

Un codec audio tipic va conține mai multe blocuri funcționale:

  • O interfață I2S pentru transmiterea sau primirea datelor audio digitale codificate
  • O interfață I2C pentru configurarea și citirea registrelor de control ale codecului audio
  • O intrare pentru microfon care se conectează la un convertor analog-digital (ADC)
  • Cel puțin un canal de ieșire audio, cum ar fi o ieșire pentru difuzoare, însă majoritatea includ și o ieșire de linie și pot include mai multe ieșiri pentru difuzoare pentru redarea stereo
  • Un bloc digital care conține filtre pentru frecvențele înalte, pentru frecvențele joase, filtre de respingere a benzii și egalizatoare pentru reglarea redărilor și înregistrărilor audio

Un exemplu de codec audio destul de popular datorită prețului său mic și capacităților sale audio este codecul audio AK4637EN pe 24 de biți de la AKM Semiconductor (Figura 1). AK4637EN are toate aceste caracteristici, în plus față de o intrare pentru generatorul de bipuri care se poate utiliza pentru generarea unui bip cu ajutorul unui semnal de modulare a lățimii pulsului (PWM) la frecvența dorită.

Diagrama codecului audio AK4637EN de la AKM Semiconductor cu ieșire pentru difuzor mono (faceți clic pentru a mări imaginea)Figura 1: AK4637EN este un codec audio cu o ieșire pentru difuzor mono, cu capacități de redare și înregistrare audio. De asemenea, conține un bloc audio intern care poate fi utilizat pentru filtrarea sunetului de intrare și de ieșire în scopul îmbunătățirii fidelității audio. (Sursă imagine: AKM Semiconductor)

Dezvoltatorii vor descoperi că principalul factor diferențiator pentru un codec audio va fi dacă acesta transferă sunetul audio mono sau stereo, precum și capacitățile legate de blocurile digitale. De exemplu, AK4637EN oferă un filtru pentru frecvențele înalte, un filtru pentru frecvențele joase, un egalizator cu patru benzi, o funcție de canal de nivelare automată și un egalizator cu o singură bandă. Acesta din urmă poate fi folosit ca filtru de respingere a benzii. Modul în care un dezvoltator configurează aceste filtre digitale poate afecta dramatic sunetele generate de un sistem.

Uneori, codecul audio poate intimida un dezvoltator novice în domeniul redării audio. De exemplu, în timp ce AK4637EN este un codec audio simplu, o examinare rapidă a fișei sale tehnice arată că are 64 de registre configurabile. Acest număr ar putea părea mare la început, dar majoritatea acestor registre sunt folosite pentru a seta coeficienții de filtrare pentru diferitele filtre digitale disponibile. Nu trebuie folosite decât câteva pentru ca sistemul să transmită sunetul în mod corect, ceea face dezvoltarea driverului unui codec audio mult mai simplă decât și-ar putea imagina un începător.

Cum se selectează un codec audio

Unul dintre factorii cheie în selectarea oricărei caracteristici legate de dezvoltarea produsului este costul, iar acest lucru se aplică și în cazul codecurilor audio. Totuși, este important să rețineți că dezvoltatorii primesc ceea ce plătesc, astfel încât, atunci când vine vorba despre sunet, o echipă trebuie să compare cu atenție cerințele de proiectare și parametrii soluției cheie.

Primul considerent este ieșirea necesară din codecul audio. Există mai multe opțiuni diferite. De exemplu, AK4637EN are o ieșire de linie și o ieșire pentru difuzor mono. Există și alte codecuri, cum ar fi codecul audio stereo TLV320AIC3110IRHBR de la Texas Instruments care poate acționa două difuzoare la 1,29 wați (Figura 2).

Diagrama TI TLV320AIC3110IRHBR este un codec audio cu ieșire stereo și amplificare (faceți clic pentru a mări imaginea)Figura 2: TI TLV320AIC3110IRHBR este un codec audio cu ieșire stereo și amplificare în afară de o intrare pentru microfon. Codecul poate acționa 1,29 wați de la amplificatoare interne și are blocuri audio digitale programabile. (Sursă imagine: Texas Instruments)

Alte codecuri audio, cum ar fi MAX9867 de la Maxim Integrated, sunt concepute pentru a acționa doar o pereche de căști (Figura 3). MAX9867 are interfețele digitale I2S și I2C tipice, dar conține, de asemenea, intrări pentru microfoane stereo și două intrări de linie care pot fi selectate digital.

Diagrama codecului audio MAX9867 de la Maxim IntegratedFigura 3: Codecul audio MAX9867 de la Maxim Integrated poate acționa căști stereo și selecta între intrări digitale, pentru microfon și de linie. (Sursă imagine: Maxim Integrated)

Alegerea uneia dintre aceste trei soluții cu privire la tipul de ieșire (sau chiar de intrare) este o decizie timpurie critică.

De asemenea, dezvoltatorii trebuie să se gândească pentru ce vor fi utilizate codecurile. Codecul audio va acționa în mod direct căști, un difuzor sau o pereche de difuzoare și care va fi valoarea nominală de ieșire? Dacă sistemul va acționa un difuzor de 5 wați, nu există prea multe codecuri pentru sistemele încorporate care să facă acest lucru. În schimb, este posibil ca un dezvoltator să dorească să selecteze linia de ieșire și să utilizeze un amplificator de clasă D separat pentru a acționa în mod direct difuzorul. Această alegere permite realizarea de economii la nivelul costurilor, oferind în același timp flexibilitate în proiectare.

Două considerente finale sunt capacitățile de rutare internă și filtrare digitală. Aici se determină diferențierea reală și diferențele de cost pentru un codec audio. De exemplu, TLV320AIC311IRHBR are capabilități de anulare a sunetelor de tipul pocniturilor și de pornire ușoară pentru a minimiza sunetele de tipul pocniturilor din difuzoare și pentru a permite o tranziție lină către redarea audio. De asemenea, are un mixer intern pentru fiecare canal de ieșire și control digital al volumului.

Dezvoltatorul este cel care trebuie să stabilească cu atenție un echilibru între așteptările pe care le are de la codecul audio și lista de materiale și spațiul de pe placă consumat de circuit.

Sistemul de redare audio

Când lucrați cu un codec audio, este important să vă dați seama că sunt necesare mai multe blocuri diferite în afara codecului audio pentru a obține cu succes redarea audio. Blocurile exacte vor varia ușor în funcție de aplicație și de metoda decisă pentru redare, dar o diagramă generalizată este prezentată în Figura 4.

Diagrama bloc de conexiune generalizată pentru un sistem de redare audioFigura 4: O diagramă bloc de conexiune generalizată pentru un sistem de redare audio într-o aplicație tipică încorporată arată că trebuie să existe spațiu de stocare pentru fișierele audio, care poate fi pe microcontroler sau pe memorie externă. (Sursă imagine: Beningo Embedded Group)

În această diagramă există mai multe subiecte care merită discutate. În primul rând, trebuie să existe o metodă utilizată pentru stocarea fișierelor de redare audio. Există două opțiuni pentru aceasta; stocarea internă a fișierelor în memoria flash a microcontrolerului sau stocarea lor externă în memoria flash. Alegerea va depinde de cât de mari sunt fișierele audio și de cât de mare este memoria flash internă a microcontrolerului.

De asemenea, dezvoltatorii trebuie să ia în considerare care va fi formatul de redare audio. Cel mai comun este un MP3. În acest caz, microcontrolerul selectat trebuie să aibă o stivă de software care acceptă decodarea MP3. Aceasta permite ca fișierul MP3 să fie deschis și apoi transmis prin metoda „push” cu un controler de acces dinamic la memorie (DMA) afară prin interfața I2S. Chiar și portul I2S poate fi configurat pentru master/slave și alte câteva moduri, deci acest lucru trebuie examinat cu atenție pentru a se asigura faptul că datele sunt transferate la codec la rata corectă.

După cum s-a menționat deja, un amplificator audio extern poate fi necesar sau nu, în funcție de aplicație. Un codec tipic produce aproximativ 1 până la 1,5 wați, ceea ce este un lucru util pentru acționarea unui difuzor mic. Pentru a acționa un difuzor de 3 wați sau mai mare, va fi necesar să utilizați un amplificator extern. Din nou, cele mai utilizate sunt cele din clasa-D. Nici amplificatorul nu trebuie neapărat să aibă amplificare variabilă. Codecul audio poate regla digital controlul volumului pentru a oferi o varietate mare de puteri de ieșire.

Un domeniu adesea trecut cu vederea este capacitanța totală. Când este redat sunetul, acesta poate afecta puternic șinele de alimentare. Dacă nu există suficientă capacitanță pe placă, calitatea ieșirii poate fi afectată dramatic și poate prelua un sunet ciudat, împreună cu alte câteva zgomote nedorite. Acest lucru poate fi detectat prin monitorizarea atentă a șinelor de alimentare în timpul testării. Nu este o idee rea ca în timpul dezvoltării plăcii PC să se lase amprente suplimentare pe placă pentru a permite încercarea diferitelor valori ale capacitanței cu scopul de a regla circuitele de ieșire.

Sfaturi și trucuri pentru selectarea și utilizarea unui codec audio

Codecurile audio pot simplifica dramatic software-ul încorporat și pot oferi o aplicație cu o calitate audio excelentă. Utilizarea codecurilor audio se poate dovedi complicată dacă respectivul dezvoltator nu a mai lucrat cu acestea până în acel moment. Pentru a utiliza cu succes un codec audio, există mai multe „sfaturi și trucuri” pe care ar trebui să le aibă în vedere echipele, cum ar fi:

  • Utilizați funcția controlerului de acces direct la memorie (DMA) într-un microcontroler pentru alimentarea codecului audio cu o intervenție minimă a procesorului. Acest lucru vă va ajuta să vă asigurați că respectivul codec nu rămâne fără date.
  • Când sunetul nu este redat, utilizați funcția codecurilor de dezactivare a sunetului pentru a preveni redarea zgomotului de ieșire de nivel scăzut prin difuzor.
  • Când dezactivați sau activați redarea, utilizați funcția unui codec audio de dezactivare soft a sunetului pentru a preveni apariția sunetelor de tipul pocniturilor în difuzoare și a altor zgomote nedorite.
  • Utilizați o aplicație tip terminal pentru a transmite registrele codecului după inițializarea acestuia. Acest lucru poate fi util mai ales atunci când încercați să depanați eventualele probleme sau să reglați circuitul de ieșire a difuzoarelor și carcasa.
  • Utilizați mecanismele de filtrare digitală interne incluse într-un codec. Filtrele digitale îi permit dezvoltatorului să egalizeze ieșirea, să filtreze frecvențele nedorite înalte și joase și să maximizeze calitatea sistemului de sunet.
  • Nu uitați că reglarea sunetului va fi un efort util numai atunci când placa de circuit și difuzorul sunt instalate în carcasă, deoarece carcasa și montajul sunt foarte importante.

Pentru a începe, dezvoltatorii pot experimenta cu kitul de evaluare MAX9867EVKIT+ pentru MAX9867 de la Maxim Integrated (Figura 5).

Imagine a kitului de evaluare Maxim MAX9867EVKIT+ pentru MAX9867Figura 5: Kitul de evaluare MAX9867EVKIT+ pentru MAX9867 se conectează la un PC printr-un cablu USB și prezintă intrări RCA, ieșiri pentru căști și module de transmisie și recepție în fibra optică. (Sursă imagine: Maxim Integrated)

Kitul include placa și software-ul asociat și este configurat să trimită și să recepționeze date audio utilizând interfața digitală Sony/Philips (S/PDIF), deși poate fi setat să utilizeze și I2S. Are două mufe de intrare RCA, două mufe de căști de ieșire analogică de 3,5 milimetri (mm) și module de recepție și transmisie în fibră optică. Software-ul este compatibil cu sistemul de operare Windows și, atunci când este conectat la un computer printr-un cablu USB, acesta se deschide într-o interfață grafică de utilizator (GUI) prin care dezvoltatorul poate experimenta cu setările MAX9867 (Figura 6).

Imagine a GUI bazată pe Windows (faceți clic pentru a mări imaginea)Figura 6: Folosind GUI bazată pe Windows, utilizatorii pot experimenta cu o gamă largă de setări ale MAX9867, începând cu ceasul și sunetul digital (fila selectată), până la registrele 1 și registrele 2 (dreapta). (Sursă imagine: Maxim Integrated)

Concluzie

Utilizatorii de sisteme încorporate s-au obișnuit atât de mult cu sunetul de calitate încât acum îl așteaptă în locul soneriilor și bipurilor pentru alarme, alertelor și al altor feedback-uri audio ale utilizatorilor. Aceasta pune presiune asupra echipelor de dezvoltare, care trebuie să implementeze capabilități de redare MP3 în sistemele lor. La început, acest lucru poate să pară un efort complex. Cu toate acestea, utilizând codecul audio potrivit alături de un microcontroler și respectând câteva bune practici de proiectare, dezvoltatorii pot echilibra costurile și complexitatea asociate aplicațiilor audio.

Referințe

  1. https://en.wikipedia.org/wiki/Audio_codec
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors