Welche Optionen für 16-Bit-Audio-Sampling für Low-Cost-Mikrocontroller

Wir haben eine Plattform, die auf dem LPC1313 basiert – 72 MHz M3. Dieser und viele andere Mikrocontroller mit ähnlichen Spezifikationen scheinen auf 10- oder 12-Bit-A2D beschränkt zu sein.

Wenn ich 16-Bit-Audio (16 kHz) auf einem Kanal sampeln möchte, welche Designoptionen stehen mir zur Verfügung?

Was die anderen Jungs gesagt haben, ist alles wahr. Ich möchte hinzufügen, dass ein 16-Bit-„AUDIO“-ADC oder -DAC heutzutage tatsächlich schwer zu finden ist. Fast alle von ihnen sind 24-Bit. Es ist in Ordnung, die zusätzlichen Bits einfach wegzuwerfen, wenn Sie sie nicht benötigen oder nicht verwenden können. Und Sie zahlen nicht wirklich zusätzliches Geld für diese ungenutzten Bits.

Antworten (3)

Auf der Ebene des Systemdesigns gibt es vier grundlegende Möglichkeiten, Audio zu machen:

Die erste besteht darin, die integrierten ADCs und/oder DACs zu verwenden, die in Ihrem Mikrocontroller enthalten sind. Auf Ihrem LPC1313 haben Sie keinen DAC; Sie müssten auf einen LPC17xx aufrüsten, um dies zu erhalten. Sie können auch einen anderen Controller wählen (verschrotten Sie den LPC1313), der über die erforderliche Onboard-Peripherie verfügt. Dies ist eine gute Wahl, wenn die Audioqualität für Ihr Projekt keine große Rolle spielt, der Platz eine große Einschränkung darstellt und Ihr Prozessor über die erforderlichen Peripheriegeräte verfügt. Dies ist keine gute Wahl, wenn die Audioqualität extrem wichtig ist, wenn Sie Mikrocontroller nicht ändern können. Ich bin mir nicht sicher, was Ihre Zielanwendung ist, aber wenn Sie etwas anderes tun als Musik zu reproduzieren, sollte der 12-Bit-ADC auf dem LPC1313 in Ordnung sein.

Die zweite wäre, einen Mikroprozessor mit den erforderlichen Peripheriegeräten als Slave-Prozessor zu verwenden und mit dem Master über SPI oder ein anderes Protokoll zu kommunizieren. Dies ist eine gute Idee, wenn Sie Ihr Audio etwas vorverarbeiten müssen und Ihr Host nicht über die Bandbreite dafür verfügt: Selbst billige DSPs können effizient und transparent grundlegende Filter durchführen, bevor Ihr Host die Daten sieht. Dies ist keine gute Idee, wenn Sie wenig Platz oder Kosten haben, da Sie wahrscheinlich viel Silizium und Platz auf der Platine für ungenutzte Komponenten auf dem Slave-Chip verschwenden. Teile wie die ADAU17xx-Reihe von Analog Devices verwischen die Unterscheidung zwischen DSPs und Codecs; ein ADAU1781 wäre eine gute Wahl für einen Audio-Frontend-Controller.

Die dritte Methode besteht darin, Ihre eigenen aus diskreten ADCs, DACs und Operationsverstärkern zu bauen. Dies gibt Ihnen die beste Kontrolle über die Ergebnisse, und wenn Sie das Geld ausgeben möchten, können Sie ein „perfektes“ System bauen, aber es wird schwierig und teuer. Möglicherweise finden Sie einen ADC, der speziell für Audio entwickelt wurde, TI hat 18 speziell für diesen Zweck .

Die vierte und meiner Meinung nach beste Lösung ist die Verwendung eines dedizierten Audio-Encoders/Decoders. Diese Art von Chip ist als "Codec" bekannt. Der Chip integriert ADCs und DACs, die ideal für Stereo-Audio geeignet sind, in einem einzigen Paket, und Sie können es über eine serielle Verbindung von Ihrem Mikrocontroller aus ansprechen. Abhängig von Ihrer Ausgangsleistung benötigen Sie möglicherweise einen Verstärker oder auch keinen. Beispiele wären Teile wie der NXP UDA1344 oder der TI AIC3104. Diese sind fast immer eine gute Wahl, da sie einfach zu entwerfen sind, Platz auf der Platine gegenüber diskreten Komponenten sparen und eine sehr hohe Qualität bieten. In den meisten Audiogeräten, die Sie verwenden, befindet sich wahrscheinlich ein Codec-Chip. Sie können teuer sein (allerdings nicht im Vergleich zu einem System gleicher Qualität) und ohne einen dedizierten Host-Prozessor nicht viel leisten, aber sie sind die Standardwahl.

Vielen Dank für die tolle Antwort. Ich habe ein weiteres Follow-up zum Versand von Daten über Serien vom Codec. Letztendlich möchte ich 16kHz, 16bit PCM. Ich habe gehört, dass ich, um dies gut zu machen und Rauschen zu vermeiden, den Codec dazu bringen muss, mit einer höheren Rate abzutasten (vgl. Nyquist), an den uC zu senden und die Werte dort herunterzurechnen und zu mitteln (zu (Anti-Alias ).Dies fügt dem Mikrocontroller eine Belastung hinzu, um mit der höheren Abtastrate (> 2 x 16 kHz) fertig zu werden.Wird der Codec dieses Anti-Aliasing nicht für mich durchführen, wenn ich ihn nach 16 kHz, 16 Bit frage.

Ein separater ADC-Chip ermöglicht es Ihnen, den Konverter an jede CPU anzupassen, die Sie für das Design benötigen. Digi-Key hat Tausende zur Auswahl.

Übrigens ist bei Digital-Analog-Wandlern erwähnenswert, dass ein 16-Bit-Wandler (ADC oder DAC) theoretisch unabhängig vom Signalinhalt einen Signal-Rausch-Abstand von ~90 dB haben sollte (mit mehr als einem LSB von Rauschen, man kann auch einen 15-Bit- oder kleineren Konverter haben), viele Konverterchips, die für Dinge wie PC-Audio entwickelt wurden, haben Eigenschaften, die mit dem erzeugten Signal variieren. Wenn die Verstärkung beispielsweise auf einen Vollausschlag von einem Volt eingestellt ist, können sie möglicherweise ein 1-mV-Signal mit nur 0,05 mV Rauschen oder einer anderen Abweichung vom "Ideal" reproduzieren, aber wenn ein Ein-Volt-Signal reproduziert wird, können mehr als vorhanden sein 5 mV Rauschen oder Abweichung. Beim Sampling oder Generieren von Audio, um es jemandem zuzuhören, ist ein solches Verhalten wahrscheinlich in Ordnung. Problematisch kann es aber werden,

Ihre ganze Antwort dreht sich um DACs, während seine ganze Frage um ADCs geht. Übersehe ich etwas?
Verzeihung. Für beide gelten genau die gleichen Faktoren; Ich werde meine Antwort bearbeiten, um dies widerzuspiegeln.