Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery Audio DAC CS43L22


von Thomas W. (ratos)


Lesenswert?

Hallo,

ich versuche zurzeit erfolglos den CS43L22 auf dem 
STM32F4Discovery-Board dazu zu bringen, ein Sinussignal vom DAC des 
STM32F4 mit einer Frequenz von 250Hz und 0 bis 2,5V auf der 
Headphonebuchse verstärkt auszugeben.
Der CS43L22 wird per I2C korrekt initialisiert und danach wird das 
Signal gesendet, das auch am Pin PA4 ausgegeben wird. Am Kopfhörer ist 
jedoch nichts zu hören.
Das Waveplayer-Projekt von ST habe ich bereits erfolgreich getestet.

Hat jemand eine Idee, warum der Analog Passthrough nicht funktionieren 
könnte?
Könnte der analoge Eingang durch das versehentlich Anlegen von 2,95V 
beschädigt sein?
Braucht der CS43L22 trotz der anderen Ansteuerung MCLK?
Muss die Sinuswelle auch im negativen Bereich sein?

Ich hoffe, jemand kann mir behilflich sein.

Thomas

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Haste Register
7.7 Passthrough x Select: PassA (Address 08h), PassB (Address 09h)
Seite 42 im Manual vom CS43L22 richtig gesetzt ?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Braucht der CS43L22 trotz der anderen Ansteuerung MCLK?

Genau das.

Die Taktleitung ist nämlich auch für die Erzeugung der Hilfsspannungen 
der Verstärker notwendig (charge pump).

Siehe Datenblatt Kapitel 4.8 und 4.9 (Initialisierung):

"Once MCLK is valid, the quiescent voltage, VQ, and the internal voltage 
reference, FILT+, will begin powering up to normal operation. The charge 
pump slowly powers up and charges the capacitors. Power is then
applied to the headphone amplifiers and switched-capacitor filters, and 
the analog/digital outputs enter a muted state."

Bitte nach Behebung laufendes Beispiel hier posten :-)

Chris D.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

reicht dann das abspielen vom Audio-Playback-Sample
und DAC parallel und passend gesetztes Register im Codec ?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Jepp. Hauptsache: Takt

Man kann auch einfach ne Nulllinie über die I2S ausgeben ;-)

Chris D.

von Thomas W. (ratos)


Lesenswert?

Danke für die Antworten ;)
Jetzt läuft MCLK (PC7) mit 2 MHz (nachgemessen), aber es tut sich immer 
noch nichts. Im folgenden beschreibe ich mal grob meinen Programmablauf:

Reset (PD4) Low
Reset High
Register 2: Wert 1
0 153
71 128
50 128
50 0
0 0
MCLK start
4 175
5 129
6 0
32 1
33 1
8 1
9 1
14 192
20 1
21 1
2 158
10 0
39 0
31 15
26 10
27 10
Sinus start

Nur MCLK wird momentan für I2S verwendet, d.h. die anderen I2S-Pins 
können sich in einem zufälligen Zustand befinden.

Ich hoffe, jemand findet noch einen Fehler oder etwas Fehlendes.

Thomas

von Dennis Heynlein (Gast)


Lesenswert?

versuchst du dac1 und i2s3-tx über einen Dma  zu versorgen ?

von Thomas W. (ratos)


Lesenswert?

Ja, über DMA1, aber der DAC ist auf Stream 5 und ich benutze zur 
MCLK-Erzeugung I2S3-RX auf Stream 0. Die Signale werden auch erzeugt; 
das habe ich nachgemessen.

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
Noch kein Account? Hier anmelden.