ich versuche gerade meine erste Schaltung mit einem ESP32 S3 in Betrieb zu nehmen. Laut Datenblatt sollte sich der µC als USB CDC melden wenn mit mit GPIO0 = 0 einen Reset macht, aber da passiert nichts. Hat jemand einen Tip?
Bisher geprüft: Spannungsversorgung 3,3 V i. O. und stabil. Reset und GPIO0 Pegel passen. USB D+ ist bei 3,3 V, USB D- auf 0 V.
Schaltplan und PCB Ausschnitt im Anhang.
Auf GPIO43 und GPIO44 ist UART0 drauf, der auch vom Bootloader und dem System verwendet wird. Probiere das mal, um zu sehen, ob der ESP überhaupt läuft.
Die Beschaltung des EN Pins (RST Signal) sieht komisch aus. Ich kenne das von den EPS32, da müsste meiner Meinung nach ein Pullup und ein Kondensator dran. Die Resetdauer wird dann über das RC bestimmt. Da müsstest du mal ins Datenblatt des ESP32-S3 schauen, aber ich denke das wird ähnlich sein. Oft sind bei den Boards zu kleine Kondensatoren verbaut, da hilft dann bei Boot-Problemen ein größerer Kondensator nach GND, um den Resetpuls zu verlängern.
Bei deiner Schaltung jedoch hängt der Kondensator irgendwie in der Luft, oder ich sehe keinen, der nach GND geht.
Auf GPIO43 und GPIO44 ist UART0 drauf, der auch vom Bootloader und dem
System verwendet wird. Probiere das mal, um zu sehen, ob der ESP
überhaupt läuft.
Eben da reingemessen:
An TXD0 wird mit 115200 bit/s in Dauerschleife ausgegeben (wenn normal, also ohne GPIO0 low gebooted wird):
"invalid header: 0xffffffff"
Das sollte ja ok sein, weil noch nichts geflasht ist.
Wenn ich einen Reset mit GPIO0 low mache kommt:
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x0 (DOWNLOAD(USB/UART0))
waiting for download
Scheint erstmal soweit auch OK zu sein, also scheint der µC grundsätzlich zu laufen, außer dass kein USB Device erkannt wird.
Die Beschaltung des EN Pins (RST Signal) sieht komisch aus. Ich kenne
das von den EPS32, da müsste meiner Meinung nach ein Pullup und ein
Kondensator dran
Ja, die Beschaltung ist etwas unüblich. Pull-Up ist vorhanden (R13 gegen +3.3V), der Kondensator (C1) ist halt nicht wie üblich gegen GND sondern gegen 3.3 V (bzw. fast, da ist noch R12 zu Vcc dazwischen) geschaltet. Hintergrund ist der dass ich den Resettaster gleichzeitig noch als Funktionstaster verwenden kann, wenn man lange drückt wird der µC resettet und ich kann beim Programmstart prüfen wie lange der Taster gedrückt wird um so z. B. in einen Konfigurationsmodus o. ä. zu gelangen. Die gleiche Schaltung habe ich schon bei anderen Projekten mit anderen µCs erfolgreich eingesetzt.
Stimmt grundsätzlich, aber IIRC kann man das über diese Efuses
deaktivieren, prüfe mal ob da ab Werk was gemacht wurde
Ok, bin im ESP32 noch nicht drin, da wird es wohl ein CLI Programm geben mit dem man das machen kann?
Die Beschaltung des EN Pins (RST Signal) sieht komisch aus. Ich kenne
das von den EPS32, da müsste meiner Meinung nach ein Pullup und ein
Kondensator dran.
Wenn ich einen Reset mit GPIO0 low mache kommt:
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x0 (DOWNLOAD(USB/UART0))
waiting for download
Wenn du diese Ausgabe siehst, sich am USB aber nichts tut, dann stimmt definitiv irgendwas nicht. Ich hab grad mal geschaut als was ich der S3 bei mir im Bootmode anmeldet:
Die Beschaltung des EN Pins (RST Signal) sieht komisch aus. Ich kenne
das von den EPS32, da müsste meiner Meinung nach ein Pullup und ein
Kondensator dran
Ja, die Beschaltung ist etwas unüblich. Pull-Up ist vorhanden (R13 gegen
+3.3V), der Kondensator (C1) ist halt nicht wie üblich gegen GND sondern
gegen 3.3 V (bzw. fast, da ist noch R12 zu Vcc dazwischen) geschaltet.
Die Idee gefällt mir nicht, da wird der (große) Elko über den Taster ohne Strombegrezung kurzgeschlossen, da sollte mindestens noch ein Widerstand dazwischen.
Fuses konnte ich auslesen, muss das aber erst noch "interpretieren", so sieht die Ausgabe von espefuse dump aus:
1
espefuse.py v4.7.0
2
Connecting...
3
Failed to get PID of a device on com3, using standard reset sequence.
Da wird empfohlen im Layout 2 (0 Ohm) Serienwiderstände und 2 Kapazitäten vorzusehen, halte ich jetzt erstmal nicht für absolut funktionsrelevant (sind auf dem S3-DevKitC von Espressiv ebenfalls nicht vorhanden), werde das aber in Zukunft vorsehen. Dann wird noch gebeten einen Pull-Up auf der D+ Leitung einzubauen, das habe ich tatsächlich nicht, ich löte mal einen drüber (ist allerdings auch nicht auf dem DevKit).
Oh, ja, den habe ich nicht, aber auch der fehlt auf dem DevKit und auf der gleichen Seite weiter unten unter GPIO steht internal weak pull down, und die Bootmeldung sagt ja dass ich im richtigen Bootmodus angelangt bin?
Hhmm, ich frage mich: bekommt der ESP32 dann einen sauberen Reset beim Einschalten der Spannungsversorgung? Das Datenblatt beschreibt den min. Resetpuls trst=50µs
Hhmm, ich frage mich: bekommt der ESP32 dann einen sauberen Reset beim
Einschalten der Spannungsversorgung? Das Datenblatt beschreibt den min.
Resetpuls trst=50µs
Ja, da bin ich gerade am schauen, mit einem ESP8266 funktioniert die Resetbeschaltung zwar wunderbar, aber ist ja auch was anderes. Ich mach mal den Resettaster direkt an EN (C1 überbrücken).
So, bin heute dazu gekommen an dem Teil weiter zu machen. Die Resetbeschaltung funktioniert nun, ich habe mal testhalber GPIO38 (Netz BTN) abgetrennt. Im Datenblatt ist GPIO38 als "input only" angegeben, aber womöglich ist ein (fester?) Pull-Down integriert der das Resetsignal runterzieht, muss ich noch genauer untersuchen.