Ich möchte einen STM32F4 gerne für die Ausgabe eines Audiosignals verwenden (ein einzelner Kanal, also nichts aufwändiges). Jetzt sehe ich folgende Möglichkeiten: - der integrierte DAC hat nur eine Auflösung von 12 Bit, was doch eher lausig ist und deswegen wegfällt - zwei der internen DACs kombinieren um eine höhere Auflösung zu erreichen, dürfte wohl eher nicht funktionieren, da der Übergang vom ersten DAC zum zweiten, aufsummierenden DAC (4096facher Ausgangswert für die oberen Bits) vermutlich nicht sauber zu justieren ist - das Audiosignal in ein hochfrequentes PWM konvertieren und dieses über einen Tiefpass verstärken scheitert ebenfalls an der geringen Timerauflösung - es gibt Audio-DACs mit I2S-Interface und 24 Bit Auflösung (z.B. PCM1780), allerdings benötigen die zusätzlich ein Clock-Signal mit ganz dubiosen Eigenschaften (eine spezielle Frequenz, die ein Vielfaches der Samplefrequenz des Audiosignals ist UND gleichzeitig synchron zum Clock des I2S-Signals getaktet ist) - keine Ahnung, wie ich die hinbekommen sollte - "richtige" DACs mit SPI-Eingang sind horrend teuer - ein anderes Signal (z.B. SPDIF) ausleiten und das auf eine externe Box (aka Verstärker) geben, ist keine Lösung, da ich eben keinen separaten Verstärker haben möchte So, was nun? Gibt es noch irgend eine Möglichkeit, die ich übersehen habe?
I2S wäre schon am standardmäßigsten für Audio. Was für einen Controller verwendest du denn genau? Hat der eine I2S-Peripherie? Hier hat jemand ein Audiogerät aus einem STM32F405 gebaut: https://github.com/JonasNorling/guitarboard Selbst wenn kein I2S existiert kann man das vielleicht mit einem USART bauen. Kenne mit konkret mit STM32 nicht aus, aber habe das mal für einen 8-Bit Atmel ATmega32 gebaut. Der ominöse Takt nennt sich MCLK - Master Clock. Nicht alle DAC-Chips brauchen den. Er ist ein vielfaches vom Bitclock und der Samplerate Fs, üblicherweise Fs*256|384|512. Die Phase spielt keine Rolle. Die Chips verwenden den intern für ihren Modulator, falls nötig. Wahrscheinlich brauchst du keine bestimmte standardmäßige Sample Rate, wenn dich nur das analoge Audio interessiert. Bei meinem ATmega-Projekt brauchte ich den MCLK, dafür habe ich dann meinen eh existierenden externen Clock genommen, den USART mit passendem Teiler betrieben und die Samplerate ergab sich daraus. (War glaube ich 20MHz/384 = 52,083kHz.)
:
Bearbeitet durch User
Das I2S-Interface ist da schon die richige Wahl. Da du I2S als Hardware hast und vermutlich auch den Master spielst brauchst Du dich nur indirekt um die ganzen Signale zu kümmern. Das kommplizierte ist da eigentlich die Einstellung der Schnittstelle und dann die Daten per DMA double buffer zu senden. Dafür gibt es aber einige gute leicht zufindene Beispiele. Ich hatte mal für so was eine billiges board gekauft, das teil brauchte nicht mal die Masterclock. Finde nur gerade die Platine nicht.
Z.B. Max Z. schrieb: > So, was nun? Gibt es noch irgend eine Möglichkeit, die ich übersehen > habe? Ein STM32F4 ist nicht unbedingt dafür gemacht, grosse Datenmengen herumzuschieben, so wie Du es anstrebst (16-Bit mit 44.1kHz, geringer Jitter interpretiere ich in etwa aus Deiner Beschreibung). Natürlich ist es realisierbar (mit PWM Ausgabe sollte doch irgendwie realisierbar sein), aber macht meiner Meinung nach nicht gross Sinn. Ich würde seitens STM32F4 mit komprimierten Audiodaten hantieren wie z.B. MP3-Dateien und die per DMA an einen externen Chip schicken, welcher den Stream decodiert und analog oder digital (I2S) weiterreichen kann.
:
Bearbeitet durch User
Johnny B. schrieb: > Ein STM32F4 ist nicht unbedingt dafür gemacht, grosse Datenmengen > herumzuschieben, so wie Du es anstrebst Große Datenmengen fallen nicht an, tatsächlich erzeugt/konvertiert der STM32F446 nur einzelne Samples und schiebt die dann gleich wieder raus. Speicher bzw. die Datenmengen ist also nicht das Problem, nur der Weg, die Daten wieder in ein Analogsignal zu verwandeln.
Moin, Z.B. Max Z. schrieb: > - der integrierte DAC hat nur eine Auflösung von 12 Bit, was doch eher > lausig ist und deswegen wegfällt So lausig sind 12Bit auch nicht. Nimm den integrierten DAC. Gruss WK
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.