Forum: Mikrocontroller und Digitale Elektronik STM32 und I2S - SPI oder SAI


von Harft Ros (Gast)


Lesenswert?

Guten Mittag!

Ich würde gerne eine kleine Schaltung mitsamt Audio CODEC aufbauen.
Dieser besitzt ein I2S Interface. Da ich einen STM32 benutzen wollte, 
habe ich die Anschlussmöglichkeiten recherchiert.
Scheinbar kann ich die Schnittstelle bei machen STM32 mit der SPI oder 
SAI aufbauen.
Was wären die jeweiligen Vor- und Nachteile beider Systeme? Irgendwie 
lässt sich im Internet wenig bis gar nichts dazu finden.

Besten Dank!

von W.S. (Gast)


Lesenswert?

Harft Ros schrieb:
> Da ich einen STM32 benutzen wollte...

Dann lies zuvörderst das Manual etwas genauer. Die SAI-Cores sind im 
Allgemeinen etwas aufgemotzte I2S mit zusätzlichen Fifos. So etwas 
entspannt die Benutzung.

Die "gewöhnlichen" I2S-Cores bei den STM32 sind zumeist etwas erweiterte 
SPI-Cores und leider nur 16 bittig. Das macht Probleme, da du ja pro 
Sample (2x 32 Bit) vier Zugriffe benötigst. Das würde bei 192 ksps ne 
zierliche Interrupt-Rate von etwa 800 kHz ausmachen - ist also ohne DMA 
wie die Krätze. Die SAI-Cores sind m.W. zumeist 32 bittig und dank Fifo 
kann man es so einrichten, daß man tatsächlich nur Interruptrate = 
Samplerate hat. Was dabei an Takten für die Bearbeitung pro Sample 
bleibt, darfst du selber je nach deinem Ziel ausrechnen. Falls du mit 16 
Bit Samples zurechtkommst und einen M4F benutzt, kannst du ggf. dir 
dadurch Luft verschaffen, daß du die DSP-Befehle benutzt, bei denen du 2 
Samples pro Takt bearbeiten kannst. Aber das ist Festkomma und muß 
folglich passend skaliert sein.

Mein Rat: lies dir auch mal die Manuals von anderen Herstellern durch. 
Da findet sich gerade bei I2S bzw. SAI etwas besseres als bei STM32. 
Hier gab's doch neulich nen Thread über einen dafür passenden Chip von 
NXP oder Freescale mit 400 MHz Takt oder so ähnlich. Ach such einfach 
selbst danach.

W.S.

von Bimbo. (Gast)


Lesenswert?

Ich habe den SAI verwendet, der ist auch ausschließlich dafü gedacht. 
Damit habe ich - mit wenigen Zeilen Code (ohne HAL versteht sich)  einen 
CS4344 (oder so) angesprochen. Hat wunderbar funktioniert.

SAI ist halt direktere Programmierung, als eine SPI zu einer i2s 
umzuwurschteln.

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.