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?
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).
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
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.
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
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.
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.
Gast
#6122433
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 :)
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.