Forum: Mikrocontroller und Digitale Elektronik I2S zwischen STM32F103RET6 und PCM3168A möglich?


von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte den AD/DA-Wandler PCM3168A in Verbindung mit einem 
STM32F103RET6 Mikrocontroller nutzen bzw. eine I2S-Datenverbindung 
zwischen beiden ICs aufbauen. Beide ICs unterstützen zwar I2S, jedoch 
bin ich nun über ein kleines Detail gestolpert, bei dem ich gerade nicht 
einordnen kann, ob die Kommunikation dann überhaupt funktionieren wird.

Und zwar liefert der PCM 24 Bit Datenpakete bzw. 6 Byte pro 
Abtastperiode (linker und rechter Kanal), siehe pcm_fig47.png 
(Screenshot aus dem Datenblatt).
Der Mikrocontroller hingegen arbeitet laut Fig. 265 des Reference 
Manuals jedoch mit entweder 16 oder 32 Bit Datenpaketen pro Kanal 
(stm32_fig265.png).

Sieht man sich das I2S configuration register des Mikrocontrollers auf 
den Seiten 720 und 721 an (stm32_i2scontrolreg.png) steht dort zu den 
Bits 1 und 2 (DATALEN), dass man die Datenlänge auch auf 24 Bit 
einstellen kann. Das ist schonmal gut. Bit 0 hingegen (CHLEN) lässt die 
"number of bits per audio channel" jedoch nur auf 16 oder 32 Bit 
einstellen. Nun bin ich mir unsicher, ob die beiden Bausteine 
miteinander kommunizieren können... Denke ich zu umständlich?

Ich würde mich freuen bzw. wäre sehr dankbar, wenn das jemand aufklären 
könnte.
Vielen Dank für eure Hilfe!

von void (Gast)


Lesenswert?

Klaus schrieb:
> Und zwar liefert der PCM 24 Bit Datenpakete bzw. 6 Byte pro
> Abtastperiode (linker und rechter Kanal), siehe pcm_fig47.png
[...]
>
> Datenlänge auch auf 24 Bit einstellen kann. Das ist schonmal gut.
> hingegen (CHLEN) lässt die "number of bits per audio channel"
> jedoch nur auf [..] 32 Bit
[...]
> Denke ich zu umständlich?

Nur ein bisschen. ;-)
Schaue dir Fig47 nochmal genau an. I2S überträgt pro Kanal immer erst 
Nutzdaten und dann ein klein wenig Dummy-Daten (gestrichelte Linie 
zwischen den Kanälen zeigt, da ist was weggelassen).
In deinem Fall besteht ein I2S Kanal aus 24Bit Audio-Daten (Nutzdaten) 
und 8Bit Dummy-Daten. Insgesamt also 32Bit für einen I2S Kanal. Da immer 
abwechselnd 2 Kanäle (CH1 + CH2) auf einer I2S Datenleitung (DOUT1) 
übertragen werden ist dein I2S Frame also 2x32bit mit 2x24bit Nutzdaten.

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.