Hallo zusammen, ich habe da ein Problem bei dem ich etwas Hilfe benötige. Und zwar habe ich eine Steuerungsplatine für eine Kamera die als uC einen STM32F407 verwendet. Als Referenztimer ist dort ein "konventioneller" Quarz mit 8Mhz verbaut (Angeschlossen an OSC In und Out, sprich als HSE) mit entsprechendem Programmcode für den uC. Nun gibt es eine neuere Version der Platine bei der anstatt eines Crystals OSC ein CMOS OSC (CO2520-8.000-33-50-X, ebenfalls 8Mhz als HSE) verwendet wird. Angenommen Hardwareseitig ist alles richtig, wovon ich momentan ausgehe. Was muss am Programm angepasst werden dass der uC mit dem CMOS läuft? Die Frequenz bleibt dabei identisch. Im Inet finde ich leider nichts mehr was mir weiter hilft. Auch mit dem Handbuch und im Referenz-Manual des uC komme ich nicht weiter. Über einen Hinweis würde ich mich sehr freuen! Ich danke euch vielmals! Gruß GB
GB schrieb: > Auch mit dem > Handbuch und im Referenz-Manual des uC komme ich nicht weiter. Auch nicht wenn du Kapitel "7.2.1 External source (HSE bypass)", S. 218, im Reference Manual liest?
Laß das Programm so, wie es ist, und lege den ext. Takt an PH0.
m.n. schrieb: > Laß das Programm so, wie es ist, und lege den ext. Takt an PH0. Das ist aber falsch, es muss das Bypass-Bit gesetzt werden. Ich könnte mir vorstellen dass da sonst die im STM32 integrierte Oszillatorschaltung Schaden nehmen könnte (zu hohe Spannung).
Dr. Sommer schrieb: > Das ist aber falsch, es muss das Bypass-Bit gesetzt werden. Ich sehe, Du bist "Softwerker" ;-) Das ist nicht falsch, sondern ein gangbarer Weg, wenn man die paar µA Stromaufnahme für den aktiven Inverter verkraften kann.
m.n. schrieb: > Das ist nicht falsch, sondern ein gangbarer Weg, Nun gut, wenn man den Chip unbedingt außerhalb der Spezifikation betreiben will, wenn es doch so einfach wäre es richtig zu machen - 1 Bit mehr zu setzen in einem Register, welches man sowieso beschreiben muss. m.n. schrieb: > Ich sehe, Du bist "Softwerker" ;-) Tja, "Wieso, funktioniert doch" ist für mich kein Argument!
Dr. Sommer schrieb: > Nun gut, wenn man den Chip unbedingt außerhalb der Spezifikation > betreiben will, Geht's noch?
Ich verstehe einfach diese Haltung nicht, "Abkürzungen" zu nehmen, wenn es doch so einfach wäre, es richtig zu machen. Im Reference Manual heißt es, man soll den Bypass Mode nutzen. Der existiert ja auch nicht nur zum Spaß. Ohne genau zu wissen, wie der IC von innen aussieht, kann man nicht sagen wie er sich im nicht vom Hersteller vorgegebenen Betrieb verhält. Man kann bestimmt auch einige Abblockkondensatoren weglassen ohne dass der IC sofort ausfällt - aber ob das eine gute Idee ist?
Hallo, danke für eure Beiträge! Dr. Sommer schrieb: > Auch nicht wenn du Kapitel "7.2.1 External source (HSE bypass)", S. 218, > im Reference Manual liest? Die Seiten bin ich schon durch gegangen, allerdings weiß ich nicht was ich da einstellen sollte. Bin nicht vom Fach und habe nicht ein so tief gehendes Wissen was uC, bzw. was das anpassen von Registern angeht. pegel schrieb: > bin, hex oder sogar Quellcode? Es ist der Quellcode geschrieben in C. Danke Gruß
GB schrieb: > Die Seiten bin ich schon durch gegangen, allerdings weiß ich nicht was > ich da einstellen sollte. Steht doch genau da: "You select this mode by setting the HSEBYP and HSEON bits in the RCC clock control register (RCC_CR)." Finde die Stelle wo du "RCC->CR" setzt und passe sie entsprechend an.
Dr. Sommer schrieb: > Im Reference Manual heißt > es, man soll den Bypass Mode nutzen. Der existiert ja auch nicht nur zum > Spaß. Anders herum wird ein Schuh daraus: sobald man den Bypass-Modus einschaltet, muß man einen ext. Takt anlegen. Das steht im Datenblatt! Der Hauptgrund, diesen Modus überhaupt zu verwenden, dürfte sein, PH1 frei nutzen zu können. @TO Brauchst Du PH1 als freien IO-Pin? Wenn nein, dann lasse Dein Programm so wie es ist. Damit hast Du die Möglichkeit, einen Quarz oder einen externen XCO anzuschließen. Bei Bedarf kannst Du auch einen XCO mit gekappter, sinusförmiger Ausgangsspannung von ca. 1 Vss anschließen: kapazitiv über 1 nF einkoppeln. Sich selber Knüppel zwischen die Beine zu werfen und für jeden Fliegenschiss ein separates Programm verwenden zu müssen, ist mehr als ungeschickt. Und wenn man diese einfache Lösung wählt, geht weder der µC kaputt noch kommt man dafür in die Hölle. Noch etwas: ich bin dazu übergegangen, im Startup-Code die ext. Quarzfrequenz im 1 MHz Raster zu messen und die PLL entsprechend zu konfigurieren. Dadurch gibt es nur ein einziges Programm, egal, ob nun gerade 8, 12, 16 MHz Quarze oder 10 bzw. 20 MHz XCOs bestückt werden.
GB schrieb: > Es ist der Quellcode geschrieben in C. Na dann kannst du jetzt entscheiden ob du alles so lassen willst, oder neu compilieren möchtest. Im zweiten Fall, liste die Dateien auf, damit wir wissen welcher Compiler benötigt wird und welche Änderungen gemacht werden müssen.
Hallo zusammen, sorry für meine längere Abwesenheit hatte viel um die Ohren und kam nicht dazu. Danke schon mal für eure Hilfe! Ich habe nun die Stelle gefunden, weiß allerdings nicht wie ich das entsprechend anpassen muss damit HSEBYP und HSEON "aktiviert" sind. Hier mal der Ausschnitt des Codes: /* Set HSION bit */ RCC->CR |= (uint32_t)0x00000001; /* Reset CFGR register */ RCC->CFGR = 0x00000000; /* Reset HSEON, CSSON and PLLON bits */ RCC->CR &= (uint32_t)0xFEF6FFFF; /* Reset PLLCFGR register */ RCC->PLLCFGR = 0x24003010; /* Reset HSEBYP bit */ RCC->CR &= (uint32_t)0xFFFBFFFF; Ich danke euch! Grüße
GB schrieb: > Hier > mal der Ausschnitt des Codes: Da hat sich jemand die Verwendung der #defines aus dem Header gespart, und nun hat man richtig Arbeit das nur korrekt zu lesen und zu ändern. Betrachte es als Strafarbeit. Oder ist das automatisch generierter Code aus einem Tool? Die verwenden aber normalerweise trotzdem "sprechende" Bit #define.
Sieht für mich wie der Teil aus bei dem der Controller resetet wird. Die Register werden auf die Standardwerte gesetzt. Da guck man am besten in RefMan. Wilde Benennungen halte ich in dem Falle nicht für nötig. Der betreffende Code steht sicher woanders.
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.