Guten Tag, ich habe eine STM32F4 Schaltung mit 10Mhz Quarz. In der Makefile habe ich deshalb folgendes stehen: DHSE_VALUE=10000000 Wenn ich jetzt SPI benutze und den Prescaler auf 2 stelle, dann kann ich mit dem Oszilloskop am SCK Pin 20,92 Mhz messen. Bei einem Prescaler von 4 sind es 10,45 Mhz, bei einem Prescaler von 32 sind es 1,32 Mhz usw. Wie kann das sein? Maximal dürfe die SPI Frequenz doch nur halb so groß wie die Frequenz des Quarzes sein?! Ich habe dann auch noch überall wo HSE_VALUE definiert wird den Wert auf #define HSE_VALUE ((uint32_t)10000000U) gesetzt, falls das -DHSE_VALUE aus der Makefile irgendwie ignoriert wird. Woran kann das liegen? Freundliche Grüße. PS: Es gab mal eine Excel-Tabelle, in der man sich die Prescaler und Takte ausrechnen konnte. Leider bin ich im Internet nicht fündig geworden. Kann mir da jemand helfen?
Meilo schrieb: > Wie kann das sein? Maximal dürfe die SPI Frequenz doch nur halb so groß > wie die Frequenz des Quarzes sein?! Der SPI versorgt sich aus einem der APB-Takte, welcher aus der PLL kommt, mit welcher man den Quarz-Takt vervielfachen kann. Daher ist der SPI (und Prozessor und restliche Peripherie) schneller als nur der Quarz-Basistakt. Meilo schrieb: > PS: Es gab mal eine Excel-Tabelle, in der man sich die Prescaler und > Takte ausrechnen konnte. Diese diversen Excel-Tabellen wurden vom STM32CubeMX-Tool abgelöst. Das kann für alle STM32 die Taktkonfiguration berechnen.
Niklas G. schrieb: > Meilo schrieb: >> Wie kann das sein? Maximal dürfe die SPI Frequenz doch nur halb so groß >> wie die Frequenz des Quarzes sein?! > > Der SPI versorgt sich aus einem der APB-Takte, welcher aus der PLL > kommt, mit welcher man den Quarz-Takt vervielfachen kann. Daher ist der > SPI (und Prozessor und restliche Peripherie) schneller als nur der > Quarz-Basistakt. Wie kommst Du denn auf den Unsinn? Beim F446 oder F407 z.B. kommt der Takt für den APB aus dem AHB (ggf. aus dem AHB Prescaler). Und der AHB wiederum hängt am SYSCLK. Und der kann sich aus verschiedenen Taktquellen speisen. Einfach mal ins Ref-Manual schauen...
Meilo schrieb: > Guten Tag, > > ich habe eine STM32F4 Schaltung mit 10Mhz Quarz. > In der Makefile habe ich deshalb folgendes stehen: DHSE_VALUE=10000000 > > Wenn ich jetzt SPI benutze und den Prescaler auf 2 stelle, dann kann ich > mit dem Oszilloskop am SCK Pin 20,92 Mhz messen. Bei einem Prescaler von > 4 sind es 10,45 Mhz, bei einem Prescaler von 32 sind es 1,32 Mhz usw. > Wie kann das sein? Maximal dürfe die SPI Frequenz doch nur halb so groß > wie die Frequenz des Quarzes sein?! Wie hast Du denn den STM32F4 konfiguriert? Welche Taktquelle und falls PLL, welche Werte für PLLM/N/P? > PS: Es gab mal eine Excel-Tabelle, in der man sich die Prescaler und > Takte ausrechnen konnte. Leider bin ich im Internet nicht fündig > geworden. Kann mir da jemand helfen? Wird jetzt sicherlich eine Riesenüberraschung für Dich sein, aber das steht im Reference Manual! Ist auch gar nicht schwer. Das Bestimmen der Werte dauert auch nicht länger, als ein Excel-Sheet aufzumachen.
Meilo schrieb: > Das hat mir bereits geholfen. Was? Der Hinweis ins Ref-Manual zu schauen? Bist du da nicht selbst drauf gekommen?
Andreas Müller schrieb: > Wie kommst Du denn auf den Unsinn? Ich habe der Einfachheit halber ein paar Zwischenschritte ausgelassen.
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.