Ich habe da gerade eine ganz ketzerische Idee: Kann man den USB Port ohne HSE Quarz benutzen? Ich stelle mir vor, den HSI Oszillator zu benutzen und automatisch zu trimmen, indem ich seine Frequenz mit dem LSE Oszillator (den ich zu bestücken gedenke) vergleiche. Kann das klappen, oder ist es eine Schnaps-Idee?
Stefanus F. schrieb: > oder ist es eine Schnaps-Idee? Naja, wenn es dem Esel zu bunt wird geht er aufs Eis tanzen. Irgendwie bringst du deine langweiligen Tage schon 'rum, mit "sinnvollen" Sachen programmieren und dein Helfersyndrom hier auf uC.net ausleben.
STM Apprentice schrieb: etwas
Danke für diese äußerst kluge Antwort, sie bringt mich allerdings nicht
weiter.
Du kannst den HSI benutzen und das kann auch oft gut gehen. Bedenke aber, dass du diesen ggf. per Software trimmen musst und dieser danach immernoch nicht temperaturstabil ist. Für Basteleien geht das, keine Frage. Für Industrieprodukte ist die Ausfallgefahr zu groß.
Danke Bimbo. Ja, es geht um ein Bastelprojekt. Ich stelle mir vor, den Systemzähler mit der RTC zu vergleichen und dann den HSI Oszillator dementsprechend automatisch zu trimmen. Dann werde ich mal versuchen, einen STM32F303V auf ein Breakout Board zu löten und nur mit LSE Quarz zu bestücken. Ein Quarz weniger ist für mich angenehm weil das auf dem universellen Breakout Board eine fiese Fummelei ist.
Es gibt STM32 (und auch andere Controller) welche USB ohne Quarz können. Die synchronisieren sich auf den USB-Takt. Sinnlos das in Software nachzubasteln...
NXP hat neue MCUs die USB ohne Quartz können sollen. Ich hatte das mal überflogen, die synchronisieren sich da erstmal irgendwie auf den USB Takt. Von daher könnte der Ansatz mit dem HSI Abgleich auch funktionieren.
Der F042 und ich glaube auch der F072 sind sogar dafür gedacht. Meine Messungen am F103 haben gezeigt, dass die Frequenz am PLL von HSI selbst von Messung zu Messung nicht sonderlich konstant ist. Also reines Glücksspiel.
Die meisten STM32L4xx (432,476 etc) haben das schon drinne. Da wird ein RC Oszillator mit Hilfe der 32.768kHz stabilisiert, dass es für USB reicht. Entweder so oder Quarz oder Oszillator. Der DSC6011 von Microchip kann 25ppm und kostet <0,80€ und braucht 1.3mA.
Ich habe noch ein bisschen recherchiert. Für USB brauche ich wohl eine Taktquelle mit 0,25% Genauigkeit. Die kann ich mit dem HSI Oszillator wohl selbst mit Abgleich nicht sicher erreichen. Auch gewöhnliche Keramik Schwinger sind wohl nur mit Glück genau genug. Andererseits habe ich an mehreren Stellen gelesen, dass es mit HSI sogar ohne Abgleich funktionieren würde. Jetzt bin ich total unsicher. Ich würde mir gerne unnötige Lötarbeit sparen. Andererseits habe ich aber auch keinen Bock auf sporadische Fehlfunktionen bloss weil ich an dieser Stelle zu Faul war.
Wozu brauchst du überhaupt 2 Quarze, HSE und LSE? Benutzt du die RTC?
Dr. Sommer schrieb: > Stefanus F. schrieb: >> Ja. > > Auch mit Batterie an Vbat für wenn keine Vcc-Spannung anliegt? Das steht noch nicht fest, warum fragst du?
Stefanus F. schrieb: > Das steht noch nicht fest, warum fragst du? Weil ohne Vbat-Backup-Batterie ist der LSE relativ nutzlos, da kannst du auch alles per HSE machen und den Prozessor in den tiefsten Standby schicken, es sei denn du brauchst die höhere Genauigkeit von Uhrenquarzen.
pegel schrieb: > Der F042 und ich glaube auch der F072 sind sogar dafür gedacht. ja, die F0-Serie wird mit "crystal-less USB" beworben. Neben den beiden genannten sollte F052 auch gehen. Es gibt aber noch einige mehr, unter anderem L0x2/L0x3 und L4x2/L4x3, sowie die uralten F105 und F107. Eine schöne Übersicht findet man in AN4879 "USB Implementation on STM32 products".
Dr. Sommer schrieb: > da kannst du auch alles per HSE machen Ist der HSE (mit 8MHz Quarz) nicht wesentlich ungenauer als der 32kHz Oszillator? Das habe ich zumindest von älteren 8bit Mikrocontrollern noch im Kopf. Ich möchte die Uhrzeit wenigstens so genau anzeigen, wie praktisch alle anderen Uhren im Haushalt. Heißt: Maximal 1min Abweichung pro Monat.
Stefanus F. schrieb: > Ist der HSE (mit 8MHz Quarz) nicht wesentlich ungenauer als der 32kHz > Oszillator? Je nachdem was du für einen kaufst? Vielleicht kannst du ja Genauigkeit für mehr Einfachheit opfern...
Was die F0 und L0 Serie angeht: Danke für eure Hinweise. Die Sache mit dem Clock Recovery kenne ich. Es soll aber dieses mal ein STM32F303V sein. Habe sie schon bestellt. Ich habe beschlossen, die Idee mit dem Trimmen des HSI zu verwerfen. Jede Trimm-Stufe macht 0,5% aber ich muss auf weniger als 0,25% kommen. Die Rechnung geht nicht auf.
Stefanus F. schrieb: > Heißt: Maximal 1min Abweichung pro Monat. Also 23ppm. Bei Farnell z.B. Best-Nr 1842347RL für einen 10ppm-Quarz @ 8 MHz. Best-Nr. 2854266 ist ein integrierter Quarz-Oszillator @ 25ppm (1,08min pro Monat), leichter einzubauen als ein "nackter" Quarz.
Schorsch X. schrieb: > Die meisten STM32L4xx (432,476 etc) haben das schon drinne. Da wird ein > RC Oszillator mit Hilfe der 32.768kHz stabilisiert Oder es wird auf SOF vom Host synchronisiert. Mit einem 32 kHz Quarz wäre es ja nicht mehr Crystal-less ? Ansonsten sag ich auch: Mems Oszillator dran und gut.
Dr. Sommer schrieb: > Also 23ppm. Bei Farnell z.B. Best-Nr 1842347RL für einen 10ppm-Quarz @ 8 > MHz. Best-Nr. 2854266 ist ein integrierter Quarz-Oszillator @ 25ppm > (1,08min pro Monat), leichter einzubauen als ein "nackter" Quarz. Vielen Dank für diesen Tipp. Die sind ja sogar preislich attraktiv.
Stefanus F. schrieb: > Ist der HSE (mit 8MHz Quarz) nicht wesentlich ungenauer als der 32kHz > Oszillator? Das habe ich zumindest von älteren 8bit Mikrocontrollern > noch im Kopf. Laß das alle lieber bleiben und spendiere deinem µC nen Quarz. Wenn dir mal danach ist, so richtigen Brechreiz zu kriegen, dann lies mal ein Refman von Freescales Kinetis zu diesem Thema. Da gibt es Chips, die nen USB-Core drin haben, aber dem Systemtakt, den man per 32kHz Quarz an diesen Dingern per FLL erzeugen kann, jittert derart, daß man so einen Systemtakt eben NICHT für den USB verwenden kann. Nun haben diese Dinger auch einen 'passenden' internen RC-Takt - und mit dessen Hilfe geht es so lala mit dem USB, aber nur mit den Schweinetrick, daß im USB-Device-Core eine Art Halbe-Hilfs-PLL eingebaut ist, anhand deren Vergleichswerte mit dem vom Host kommenden Signal man den intenen RC-Takt nachstimmen kann. Und das muß alle nase lang (vermutlich im 1 ms Rhythmus) passieren. Der Treppenwitz daran ist, daß diese Chips auch einen Oszillator für einen externen Quarz haben - aber erstens kann der nicht direkt 48 MHz und zweitens kann man diesen eben NICHT direkt für die FLL benutzen, sondern muß ihn intern zuerst auf 32..39 kHz herunterteilen, womit man wieder genauso doof dasteht, als wenn man gleich einen Uhrenquarz angelötet hätte. Nein, was Grundsätzliches: Quarze im Gebiet von 4..12 MHz sind weitaus stabiler als 32 kHz Uhrenquarze. Letztere haen nur deshalb einen Sinn, weil man damit wesentlich langsamere Logik braucht, die dann auch nur etwa ein Hundertstel des Stromes braucht. Und das ist wichtig für Uhren, die jahrelang aus einer Knopfzelle versorgt werden müssen. W.S.
Wie ist das mit den 4,19...MHz Uhren Quarzen? Ich hatte eine BMW Analog Uhr aus dem Schrott. Die habe ich eingebaut und zur Zeitumstellung nach Radio Zeitzeichen gestellt. Zur nächsten Zeitumstellung war die Abweichung ca. 4 Sekunden. Zufall? Oder ist das eine andere Klasse?
pegel schrieb: > Wie ist das mit den 4,19...MHz Uhren Quarzen? Kommt man damit mit der PLL auf die 48 MHz für USB? Und die 72 MHz max CPU Frequenz?
Habe Calc Tabellen berechnet. Die runden Werte sind leider in keiner Kombination möglich. :( Auch nicht für den F407 mit M, N, P Teilern.
Stefanus F. schrieb: > Andererseits habe ich an mehreren Stellen gelesen, dass es mit HSI sogar > ohne Abgleich funktionieren würde Klar kann es im Einzelfall funktionieren, taugt aber nicht für ein Serienprodukt. Dies wegen Fertigungstoleranzen, Bauteiletoleranzen, schwankender Umgebungsbedingungen etc.
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.