Hallo, hat jemand Erfahrung mit dem Audio DAC (CS43L22) auf dem STM32F4 Discovery-Board? Es gibt dazu zwei Dateien unter STM32F4-Discovery_FW_V1.1.0\Utilities\STM32F4-Discovery stm32f4_discovery_audio_codec *.h und *.c Leider bekomme ich die "Lib" nicht richtig zum Laufen. Hat jemand vllt. ein Beispiel für mich? Die Bsp. von ST funktionieren irgendwie anders. Moritz
Gast
#2758029
STM32F4-Discovery_FW_V1.1.0\Project\Audio_playback_and_record Da findest du alles was du brauchst.
Hallo, ja das Beispiel kenne ich aber da werden die EVAL_AUDIO Funktionen nicht direkt verwendet. Ich poste einfach mal meinen ersten Versuch vllt. findet ja jemand den Fehler.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
Hallo noch einmal, muss die I2S Clock noch irgentwie eingestellt werden? Moritz
Gast
#2759257
>muss die I2S Clock noch irgentwie eingestellt werden?
Ja. Das wird hier gemacht:
STM32F4-Discovery_FW_V1.1.0\Project\Audio_playback_and_record\src\system
_stm32f4xx.c
Hallo, vielen Dank! Das hab ich übersehen. Funktioniert trotzdem noch nicht. Moritz
Hallo, jetzt funktioniert es! Ich poste einfach mal den Code. Moritz PS: Sorry das im Anhang ist beides das gleiche!
Ich bekomme bei deinem Beispiel keine Audioausgabe. Warum hat es denn bei dir zum Schluss funktioniert? Thomas
Gast
#2967943
Bei mir funktioniert das letzte obige Projekt: 3 Sekunden Musik, die sich ständig wiederholen. Ich habe noch nicht tief in den Code reingeschaut - aber ist das so ok?
Ich habe CoIde 1.62 und gcc 4.6 2012q4 benutzt. Hast du eventuell ältere Versionen?
Gast
#2967961
Ich habe verwendet: CooCox CoIDE Version: 1.5.0 Build id: 20120720-1757 GNU-Compiler: arm-none-eabi-gcc-4_6
Gast
#2967988
Program Size:
text data bss dec hex filename
1014808 68 2196 1017072 f84f0 AudioPlayer1.elf
BUILD SUCCESSFUL
Total time: 22 seconds
Könntest du mir den Compiler und Linkeraufruf auch noch posten? Vielleicht gibt es da ja noch ein Problem. Ich habe meine Ausgabe jetzt mit dem q2 mal angehängt.
Gast
#2968255
.. ist angehängt.
Vielen Dank. Das sieht alles sehr gleich aus. Die Optimierungsstufe hatte ich noch verändert. Das hat aber auch nichts gebracht.
Gast
#2968388
Anbei mal meine (bin Quicktest) erzeugten Files. Vielleicht helfen sie dir weiter.
Dein File läuft. Dann fällt die Hardware als Fehlerquelle aus.
Bin gerade auf diesen thread gestoßen da ich dasselbe Problem habe. Hardwarefehler kann ich ausschließen da das Audio-Demo der STM32 Firmware den Kopfhörer zum dudeln bringt. Nur mein eigener Code nicht. Bei einer kurzen drübersicht sind mir an meinem Code keine weiteren Fehler aufgefallen, aber ich werd es zuhause (hab die HW gerade nicht zur Hand) mal genauer unter die Lupe nehmen was bei mir anders ist. Aber schön das ich nicht der einzige bin. Dachte schon ich bin zu doof die mundgerechten API-Funktionen zu nutzen bzw vom Demo her zu portieren um was eigenes draus zu machen. Bei Fragen melde ich mich. Danke schonmal
Irgendwie schein ich zu doof zu sein ... Das kurze Progrämmchen von Moritz funktioniert ja, und spielt das Sample auch ab. Kein Problem. Wenn ich aber einen RAM-Buffer (den ich mit ner Wellenform initialisiere) abspiele, kommt nur noch Rauschen. Ich habe mir den Quellcode auch schon vom MP3-Player für das Discovery, und kann da auch keine wirklichen Fehler entdecken. Auch die Sourcen der Library geben nicht viel Auschluß darüber ob bzw was man bei EVAL_AUDIO_Play und deren Parameter beachten muß. Irgendwie steh ich aufm Schlauch .... Angehängt hab ich mal die main.c, der Rest ist wie bei AudioPlayer1.zip Edit : Ich bin mal von einem Stereo-Signal ausgegangen. Aber egal was bzw wie ich mache, immer nur Rauschen.
Niemand ne Idee ? Also das vorgegebene Wave-File zu ändern ist kein Thema. Aber Ausgabe aus dem RAM klappt immer noch nicht. Ich versteh einfach nicht warum das nicht funktioniert.
Gast
#3110153
>Aber Ausgabe aus dem RAM klappt immer noch nicht. >Ich versteh einfach nicht warum das >nicht funktioniert. EVAL_AUDIO_Play(); macht einen Fehler wenn weniger als 0xFFFF Samples gespielt werden sollen. Es werden dann mehr Samples irgendwo aus dem Speicher abgespielt (das Rauschen). Nimm mal den Anhang. Dann kannst du dir deinen scheusslichen Ton anhören;)
@holger Ey, sach nix gegen meinen (fast) perfekten 440Hz Kammer-Säger-Test-Ton. Sons gibbet Ärger :D Erstmal Danke. Da hätte ich ja lange probieren können :( Werds gleich mal testen. In dem Zusammenhang vllt nochmal eben ne kurze Frage. Mir ist aufgefallen das der am Ende des Wave-Files "springt". Ich hab z.b. eine Loop erstellt. Aber am Ende hat der sich immer "verschluckt", bzw die Loop war nicht sauber und hat "gesprungen". Könnte das vllt auch mit einer 64KByte Grenze zu tun haben ?
Gast
#3110282
>Könnte das vllt auch mit >einer 64KByte Grenze zu tun haben ? Ich denke auch da ist noch mehr faul. Habe diese Zeile Audio_MAL_Play((uint32_t)pBuffer, (uint32_t)(DMA_MAX(Size/4))); geändert in Audio_MAL_Play((uint32_t)pBuffer, (uint32_t)(DMA_MAX(Size))); und schon ist dein Ton nicht mehr ganz so scheusslich.
Gast
#3110308
So, noch Änderung für DMA_MAX_SZE. 0xFFFF lässt sich ja ganz schlecht durch zwei teilen;)
Gast
#3110332
Genial: Planloses verändern von Sourcen.
Gast
#3110341
>Genial: Planloses verändern von Sourcen.
An meinen Änderungen ist nichts planlos.
Genau hinsehen, Unsinn finden, ändern.
Ich bin auf der suche nach code wo ich die samples des Microphones auf dem CS43L22 direkt ausgeben kann ?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.