Forum: Mikrocontroller und Digitale Elektronik Wie stm32f407 I²S Ausgang mit externem Quarz machen?


von Dirk (Gast)


Lesenswert?

Hallo,

ich will mit einem STM32F407 ein Signal ausgeben das recht jitter arm 
ist.

Dazu würde ich gerne einen externen Quarz 22,5792MHz anschliessen und 
den intern als Takt auf die PLL geben.
Bei irgendeinem der STM32 hatte ich mal gesehen das das gehen soll.
Nur in den Datenblättern von 407 finde ich das nicht, der Teil ist aber 
auch nicht wirklich gut beschrieben.

Hat jemand eine Ahnung ob das geht und wo man dazu bessere Infos findet?

von Dr. MCU (Gast)


Lesenswert?

"I2S (I2S2 and I2S3) clock can be derived from an external clock mapped 
on the
I2S_CKIN pin."

von Dirk (Gast)


Lesenswert?

Den Pin hatte ich gesucht.

Das in der Doku die PLL und der Taktgeber verteilt stehen macht das 
finden nicht gerade einfach. Wenn man aber die Info hat, macht das was 
die geschreiben haben auch wieder Sinn.

So nun stehe ich aber vor dem Problem das die Clock nur genau einen 
Eingangs PIN hat und er belegt ist. Den kann ich zwar noch auf einen 
anderen Pin verschieben, aber dieser ist wiederrum auch belegt und den 
gibt es nur einmal.
Somit kann ich mich gerade entscheiden zwischen sauberen Takt und 
Extenem RAM.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dirk schrieb:
> Somit kann ich mich gerade entscheiden zwischen sauberen Takt und
> Extenem RAM.

So schlimm ist die interne PLL ja nicht. Wenn man die mit einem höheren 
Takt antreibt (z.B. 2MHz, wie im Ref. Manual empfohlen), hält sich das 
Jittern in sehr engen Grenzen.
Aber PC9 (I2S_CKIN) hat eigentlich nicht so viele wichtige AF - was 
benutzt du denn daran? Falls es I²C ist, dann kann man notfalls das per 
Bitbanging tun.

von Dirk (Gast)


Lesenswert?

PC9 hat CLKin & DCMI D3.
DCMI D3 kann ich zwar auf PE1 ändern aber da liegt NBL1.

Den NBL1 kann ich vielleicht weg bekommen wenn ich ein 8Bit RAM dran 
baue.
Dafür suche ich gerade noch einen Plan.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dirk schrieb:
> Dafür suche ich gerade noch einen Plan.

Sicher ist die Ablage von Kameradaten zeitkritisch und da wäre ein 
breiter RAM die Wahl. Je nach Grösse der Daten und -quelle könnte man 
den normalerweise brachliegenden Core-Coupled RAM mit einbinden.
Probier doch einfach mal die PLL für I2S, wie o.a. ist die Clock daraus 
gar nicht schlecht. Evtl. kannst für spezielle Sampleraten einen 
angepassten Hauptquarz verwenden und am Clocktree rumschrauben. Also 
z.B. den 22,5792MHz als Masterclock benutzen.

von Dirk (Gast)


Lesenswert?

Den RAM Baustein nutze ich zur Zeit nicht, der ist nur als Reserve im 
Layout.
Den könnte ich somit zur Zeit weg lassen, aber ich halte mir lieber die 
Möglichkeit offen den doch zu nutzen.
Wenn überhaupt würde ich da nur Zeit unkritische Daten rein legen.
Also mir ist es somit fast egal ob der mit einem 8Bit Bus nun doppelt so 
lange braucht.

Das einzige dumme ist das ich ich keinen Plan finde um ein 8Bit RAM 
anzuschliessen.
Daten und Adressen sind ja klar, nur zu den Steuerleitungen finde ich 
kein Beispiel und das am besten gleich mit Code.
Hat da jemand einen Tipp?

von Dirk (Gast)


Lesenswert?

Achso die PLL habe ich inzwischen getestet und ich brauche den externen 
Quarz!
Der Quarz ist um Klassen stabiler.
War zwar jetzt nur ein fliegender Aufbau aber der Zeigt mir schon das es 
damit besser geht.

von Olaf (Gast)


Lesenswert?

> So schlimm ist die interne PLL ja nicht. Wenn man die mit einem höheren
> Takt antreibt (z.B. 2MHz, wie im Ref. Manual empfohlen), hält sich das
> Jittern in sehr engen Grenzen.

Hast du das mal gemessen?

> Achso die PLL habe ich inzwischen getestet und ich brauche den externen
> Quarz!

Das wuerde ich auch erwarten.

Olaf

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Olaf schrieb:
> Hast du das mal gemessen?

Nur qualitativ mit dem Oszi und mit Audio-DAC und -ADC. Da gibts keine 
Probleme mit Jitter. Der TE scheint aber was anderes vorzuhaben.

von Dirk (Gast)


Lesenswert?

Ich habe da schon bessere Methoden wie ein normales OSZI.

Aber darum geht es hier nicht und bitte auch keine Grundsatzdiskusion 
daraus machen.
Ich brauche den Quarz und bin nun auf der Suche nach einem Anschlußplan 
für ein 8Bit RAM. Da brauche ich hilfe!

von Gerd E. (robberknight)


Lesenswert?

Hast Du mal nach alternativen STM32-Modellen geschaut?

Z.B. die STM32F7 haben eine extra Audio-PLL die deutlich stabiler ist 
als die normale. Evtl. reicht die und Du kannst dann auf den extra Quarz 
verzichten.

Außerdem ist bei den F7ern der externe Memory-Controller flexibler als 
bei den F4. Das hilft evtl. bei dem Clock-Pin. Hab ich jetzt aber noch 
nicht konkret nachgeschaut.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dirk schrieb:
> Ich brauche den Quarz und bin nun auf der Suche nach einem Anschlußplan
> für ein 8Bit RAM. Da brauche ich hilfe!

Schau dir das mal an:
https://mikrocontroller.bplaced.net/wordpress/?page_id=428
Das ist zwar ein 16-Bit RAM, aber er belegt keine der von dir benötigten 
Pins, im Gegenteil, dadurch, das UB den Multiplexed Mode benutzt, sind 
noch mehr Pins frei. Checks mal auf Konflikte mit deinen AFs. Etwa mehr 
Hardware nötig.
Sach mal: Hast du da SDRAM oder SRAM?

: Bearbeitet durch User
von Dirk (Gast)


Lesenswert?

So ich hatte was anders zutun und wollte dieses Problem nun auch endlich 
lösen.

Ich habe SRAM (zur Zeit ein 512 * 16) und rein soll nun ein 512 *8.
Der jetzige Speicher liegt im normalen Adressbereich und da kann ich 
auch Variablen einfach rein legen. Per DMA kann ich da auch Daten lesen 
oder schreiben.
Somit brauche ich da keine lese oder Schreib Routinen.
Und so muss es auch auch wieder laufen!

Zuzätzliche ICs passen nicht mehr auf die Platine.
Die ist Voll (Bauteile und Leiterbahnen) und nur deswegen auf 6 oder 8 
Lagen umzusteigen wollte ich nicht, es muss bei 4 Lagen bleiben. Denke 
das es mit 8 Lagen und eine Bauteilgrösse kleiner trozdem nicht passen 
würde.

Hat denn noch nie jemand ein 512 *8 SRAM angeschlossen?

von Dirk (Gast)


Lesenswert?

So nun als Information zum Abschluss:

Man nehme STM32CubeMX und baue sich einfach mal ein 8Bit SRAM dran.
Dann kann man super sehen das die 2 Steuerleitungen HI&LO Byte frei 
sind.
Somit kann ich nun alles genau so machen wie gedacht.

Das ganze hat sogar den Vorteil das ich 9 Leitungen frei bekomme, 
allerdings mit dem Nachteil das der Zugriff doppelt so lange dauert.
Man kann halt nicht alles haben!

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.