Forum: Mikrocontroller und Digitale Elektronik STM32 Takteinstellungen: SDMMC < USB?


von Peter M. (pbm)


Lesenswert?

Ich verwende einen STM32F722 mit SDMMC und USB. Leider habe ich ein 
Problem bei der Takt-Einstellung der einzelnen Komponenten.

Der Systemtakt soll um die 200 MHz liegen, und USB benötigt genau 48 
MHz. Im CubeMX-Tool habe ich für den SDMMC-Takt die Auswahl zwischen 
Systemtakt (zu viel) und PLL48CLK. Letzteres ist aber immer gleich dem 
Takt für USB, also 48 MHz. Das ist für meine uSD-Karten leider zu viel.

Kann ich den SDMMC-Takt auf 40 MHz reduzieren, ohne Systemtakt und 
USB-Takt zu verändern?

von Bauform B. (bauformb)


Lesenswert?

Mein RM sagt: das SDMMC-Modul verträgt max. 48MHz, das ist auch der 
empfohlene Default. Die Karte sieht einen (viel) niedrigeren Takt, 
nämlich 48MHz/CLKDIV (im Register SDMMC_CLKCR).

von Peter M. (pbm)


Lesenswert?

Bauform B. schrieb:
> Mein RM sagt: das SDMMC-Modul verträgt max. 48MHz, das ist auch der
> empfohlene Default. Die Karte sieht einen (viel) niedrigeren Takt,
> nämlich 48MHz/CLKDIV (im Register SDMMC_CLKCR).

Und ich möchte SDMMC mit weniger als 48 MHz betreiben, weil sonst der 
f_mount fehlschlägt.

Oder ist der Divider programmierbar? -- Achso, natürlich, das ist DER 
Divider. Der ist bei mir auf BYPASS gesetzt, aber selbst ein Minimalwert 
von 2 ergibt einen zu niedrigen Takt von 24 MHz.

von Programmierer (Gast)


Lesenswert?

Peter M. schrieb:
> Das ist für meine uSD-Karten leider zu viel.

Wie kann das sein? Der High-Speed SD-Bus ist auf 50 MHz spezifiziert. 
Schon eher möglich ist dass das PCB-Layout die Frequenz nicht schafft.

Peter M. schrieb:
> Oder ist der Divider programmierbar?

Natürlich, du musst ihn sogar programmieren, um die Karte 
spezifikationsgemäß erst mit 400kHz anzusteuern. Danach kannst du die 
High-Speed Funktion in der Karte über CMD6 aktivieren, und dann das 
SDMMC-Interface über CLKDIV auf 48 MHz schalten.

Die alten STM32F407 haben einen Hardware-Bug, der das Abschalten des 
Prescalers (CLKDIV) verhindern, sodass man die 48 MHz nicht erreichen 
kann. Beim F7 ist das aber behoben.

von Peter M. (pbm)


Lesenswert?

Programmierer schrieb:
> Wie kann das sein? Der High-Speed SD-Bus ist auf 50 MHz spezifiziert.
> Schon eher möglich ist dass das PCB-Layout die Frequenz nicht schafft.

Oh, das ist natürlich auch möglich. Ich hatte aber den Eindruck, dass 
mache Karten höhere Taktfrequenzen vertragen als andere.

> Natürlich, du musst ihn sogar programmieren, [...]

Mir ging es hier um den Takt während des regulären Betriebs.

von Programmierer (Gast)


Lesenswert?

Peter M. schrieb:
> Ich hatte aber den Eindruck, dass
> mache Karten höhere Taktfrequenzen vertragen als andere.

Kann eigentlich nicht. Entweder die Karte kann nur 25 MHz, oder bis 50 
MHz (High-Speed). Das kannst du auch abfragen (CMD6). Aber alle 
Nicht-Antiken Karten können auch UHS-I, und damit sowieso auch 
High-Speed (50 MHz).

Peter M. schrieb:
> Mir ging es hier um den Takt während des regulären Betriebs.

Ja, mir auch. Du musst den High-Speed Modus in der Karte erst 
aktivieren, bevor du den Takt auf über 25 MHz erhöhen kannst.

von Peter M. (pbm)


Lesenswert?

Programmierer schrieb:
> Ja, mir auch. Du musst den High-Speed Modus in der Karte erst
> aktivieren, bevor du den Takt auf über 25 MHz erhöhen kannst.

Ich gehe stark davon aus, dass CubeMX in Verbindung mit der HAL das 
automatisch machen.

von Programmierer (Gast)


Lesenswert?

Peter M. schrieb:
> Ich gehe stark davon aus, dass CubeMX in Verbindung mit der HAL das
> automatisch machen.

Dann gehe ich davon aus, dass dein Programm funktioniert und die Frage 
überflüssig ist :)

von Peter M. (pbm)


Lesenswert?

Programmierer schrieb:
> Dann gehe ich davon aus, dass dein Programm funktioniert und die Frage
> überflüssig ist :)

Das ist jetzt ein wenig albern, zumal meine urspüngliche Frage ganz 
anders lautet.

Aber ich nehme mit, dass ich meine Schaltung nochmal überarbeiten muss.

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.