Forum: Mikrocontroller und Digitale Elektronik ESP32-C3 (beetle) externer 32khz Oszillator schwingt nicht


von Wha B. (whabbit)


Angehängte Dateien:

Lesenswert?

Moin!

Ich arbeite das erste mal an einem Projekt, bei welchem ich einen 32khz 
Oszillator benutzen möchte. Hierzu habe ich mir unterschiedliche 
Tutorials angeschaut zur Funktionsweise von Oszillatoren und zum 
Anschließen an einen MCU. Leider waren meine Erfolge hierbei sehr mau, 
da der OSC nicht anschwingt.
Der ESP32-C3, welchen ich benutze, erzeugt folgende Meldung:

D (516) clk: waiting for 32k oscillator to start up

W (621) clk: 32 kHz XTAL not found, switching to internal 150 kHz 
oscillator

Orientiert am Datenblatt, habe ich zwei Jumperwires an den XTAL_32K_P 
und XTAL_32K_N Pin gelötet, welche zu einem Breadboard führen. Die 
Schaltung auf dem Breadboard ist dem Schaltplan anbei zu entnehmen.

Ich habe bereits gelesen, dass ein solcher Quarz schlecht anschwingt, 
weshalb ich mich auch an den Lösungsvorschlägen hier 
(Beitrag "schwingt der qaurz oder schwingt er nicht ?") orientiert habe. Die 
Kapazität der Kondensatoren habe ich ebenfalls variiert (10pF, 27pF, 
54pF) mit immer dem selben Ergebnis.

Eine Investigation mittels Oszilloskop ergab, dass es an keinem Pin des 
OSC eine nennenswerte Schwingung überhalb einer gewissen Grundschwingung 
von 50-115hz vorhanden ist.

Auch ein Austausch des Oszillators brachte nichts.

Sicherlich mache ich irgendeinen Anfängerfehler.
Jedoch komme ich hier nicht weiter und freue mich über eure Ratschläge!

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Wha B. schrieb:
> habe ich zwei Jumperwires an den XTAL_32K_P
> und XTAL_32K_N Pin gelötet, welche zu einem Breadboard führen.

Das ist schon mal ne ziemlich schlechte Idee, löte das direkt auf die 
entsprechenden Pins.
Dann solltest du in Erfahrung bringen welche Lastkapazität die 
Oszillatorschaltung haben will und vor allem welche Kapazität dein 
benutzter Quarz hat.

Mit dem Tastkopf rangehen kann schon dazu führen dass der Oszillator 
aussetzt. Wenn messen, dannn am Ausgang. Und mit  Tastkopf mindestens 
1:10, besser 1:100.

von Robert M. (r0bm)


Angehängte Dateien:

Lesenswert?

Orientiere dich an den Bauteilewerten in der angehängten Schaltung. Den 
Quarz dabei nicht auf einem Breadboard auslagern, das geht in die Hose. 
Die Kondensatoren sind für eine Lastkapazität von ~12,5pF ausgelegt und 
hängen vom jeweiligen Quarz ab (Datenblatt konsultieren). Wenn du ein 
Oszilloskop anschließen möchtest dann mit einem 10:1 Tastkopf am Ausgang 
des Inverters.

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Achtung, der 32kHz Quarz muss an Pins 4 und 5 vom ESP32-C3 !Chip!, nicht 
an Arduino-Pinnummern (oder was auch immer die da auf das Board drucken) 
4 und 5.

Grob in's Datenblatt gelurt: könnten die Board-Anschlüsse 0 und 1 sein, 
die XTAL_32k Pins werden mit GPIO0+1 bzw ADC0+1 gemultiplexed.

Genauer: Selbst den Schaltplan von deinem Beetle raussuchen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wha B. schrieb:
> zwei Jumperwires
Wie lang? Und wie ist die zugehörige Masse geführt?

> Sicherlich mache ich irgendeinen Anfängerfehler.
Was schreibt das Datenblatt/die Appnote zum Thema Layout beim Quarz?

: Bearbeitet durch Moderator
von Harald K. (kirnbichler)


Lesenswert?

Die beiden 52kΩ-Serienwiderstände kommen mir sehr seltsam vor.

Und hier:

https://www.espressif.com/sites/default/files/documentation/esp32-c3_hardware_design_guidelines_en.pdf

Seite 10, Figure 8 "Schematic for ESP32­C3 Family’s External Crystal 
(RTC)"

gibt es sie auch nicht.

von Pete K. (pete77)


Lesenswert?

Benutzt Du ein den SOC, oder ein fertiges Modul. Wenn ja, welches? Was 
sagt der Schaltplan des Moduls?
Hier noch etwas Doku:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/api-reference/peripherals/clk_tree.html

: Bearbeitet durch User
von Wha B. (whabbit)


Angehängte Dateien:

Lesenswert?

Vielen Dank für eure Antworten.

Ich habe alle Anregungen gelesen und nach bestem Wissen umgesetzt.

Da ich zu meinen Oszillatoren leider keine Datenblätter hatte, habe ich 
mir neue mit einer angegebenen Lastkapazität bestellt. (15pF)

Nach einer Recherche 
(https://community.nxp.com/t5/LPC-FAQs/How-to-calculate-the-value-of-crystal-load-capacitors/m-p/464589) 
zur Berechnung der entsprechenden Kondensatoren bin ich mittles 
folgender Rechnung auf ein Ergebnis gekommen:

CL = ((CX1 x CX2) / (CX1 + CX2)) + Cstray

wobei CX1 und CX2 die gleichen Werte haben:

CL = ((CX1 x CX1) / (2 x CX1)) + Cstray

CL = (CX1 / 2) + Cstray

CX1 = 2(CL - Cstray)

für Cstray habe ich 2pF genommen, sodass bei 15pF Lastkapazität folgende 
Werte ermittelt werden:

CX1 = CX2 = 2(15 - 2) = 2(13) = 26pF

Also habe ich nun alle Jumperwires entfernt, und den 32KHz Oszillator 
zusammen mit 2 27pF Kondensatoren an den ESP32 gelötet.

Hierbei habe ich mich am Schema der ESP32C3 design Guidelines orientiert 
(https://www.espressif.com/sites/default/files/documentation/esp32-c3_hardware_design_guidelines_en.pdf) 
Punkt 2.4.2 Seite 11.

Hierbei war aus der unteren Infobox zu entnehmen, dass ich den 
Widerstand R10 typischerweise nicht benötige. Also habe ich diesen 
weggelassen. Nun habe ich lediglich den Oszillator und 2 Kondensatoren, 
welche an je einem Pin des osc. und dann mit GND verbunden sind.

Für die entsprechenden Pins habe ich ebenfalls das Datenblatt des Beetle 
ESP32c3 konsultiert und die extern gelabelten Pins 0 und 1 genommen. 
(https://dfimg.dfrobot.com/nobody/wiki/43aa285c90c844ad2649f1d9851d52a1.pdf) 
Punkt 3.2 sowie Hersteller Pinout vom ESP32c3 
(https://image.dfrobot.com/image/cache3/data/DFR0868/pin.jpg)

Nun sieht alles aus wie auf dem angehängten Bild.

Leider habe ich mit allen Maßnahmen kein anderes Ergebnis erreichen 
können. Die Log Ausgabe des ESP zeigt weiterhin: "clk: 32 kHz XTAL not 
found".

Auch erneutes Messen mittels Oszilloskop (Tastkopf auf x10) hat keinen 
Ausschlag angezeigt.

Müsste ich nicht eigentlich an den Pins 0 oder 1 eine "initialisierende" 
Schwingung beobachten können, als Versuch den Oszillator zum Schwingen 
zu bekommen?

Ziel ist es lediglich den Stromverbrauch vom BLE zu senken. Ursprung 
meiner "Reise" ist dieser Post 
(https://github.com/espressif/esp-idf/issues/947#issuecomment-500312453).

Liegt die Ursache vielleicht doch im Code?

Vielen Dank an alle die sich die Zeit für mein Problem nehmen und 
genommen haben!

Beitrag #7491257 wurde vom Autor gelöscht.
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
Noch kein Account? Hier anmelden.