STM32 Takteinstellungen: SDMMC < USB?

OP #6122216
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?
OP #6122331
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.
Gast #6122349
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.
OP #6122374
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.
Gast #6122385
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.