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?
"I2S (I2S2 and I2S3) clock can be derived from an external clock mapped on the I2S_CKIN pin."
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.
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.
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.
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.
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?
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.
> 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
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.
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!
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.