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.
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.
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.
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.
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.