Forum: Mikrocontroller und Digitale Elektronik ESP32 S3 USB Inbetriebnahme


von Stefan S. (energizer)


Angehängte Dateien:

Lesenswert?

Hallo,

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.

Grüße
Stefan

von Frank K. (fchk)


Lesenswert?

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.

fchk

von Alexander (alecxs)


Lesenswert?

USB ist 5V

von Monk (roehrmond)


Lesenswert?

Alexander schrieb:
> USB ist 5V

Nur die Stromversorgung. Bei den Datenleitungen sind die open genannten 
3,3V korrekt.

von Andreas B. (andreas-ab)


Lesenswert?

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.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Laut Datenblatt sollte sich der µC als USB CDC melden wenn
> mit mit GPIO0 = 0 einen Reset macht

Stimmt grundsätzlich, aber IIRC kann man das über diese Efuses 
deaktivieren, prüfe mal ob da ab Werk was gemacht wurde

von Stefan S. (energizer)


Lesenswert?

>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?

Gruß
Stefan

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Stefan S. schrieb:
> Ok, bin im ESP32 noch nicht drin, da wird es wohl ein CLI Programm geben
> mit dem man das machen kann?

https://docs.espressif.com/projects/esptool/en/latest/esp32/espefuse/index.html

von Alexander (alecxs)


Lesenswert?

liegen denn die 5V auch an? D+ D- mal vertauscht? was sagt lsusb? Tools 
> USB CDC On Boot > Enabled?

Windows schaltet USB Ports auch gern mal minutenlang ab, also ruhig mal 
Ports wechseln.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Andreas B. schrieb:
> 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.

https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/02/esp32-waiting-for-packet-header-featured.jpg?w=1280&quality=100&strip=all&ssl=1

ich habe einen 10µF MLCC 25V genommen platzsparend, siehe

Beitrag "Re: ESP32-Schaltung"

https://www.ebay.de/itm/385271738466

oder besser?

https://www.ebay.de/itm/364271701225

: Bearbeitet durch User
von Vincent H. (vinci)


Lesenswert?

Stefan S. schrieb:
> 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:
1
Bus 001 Device 015: ID 303a:1001 Espressif USB JTAG/serial debug unit

von Frank K. (fchk)


Lesenswert?

Stefan S. schrieb:

>>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.

Das ist mir auch aufgefallen, und das ist hier möglicherweise das 
Problem.
Lies das:
https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#chip-power-up-and-reset-timing

Eventuell brauchst Du einen Resetcontroller wie sowas hier:
https://www.analog.com/media/en/technical-documentation/data-sheets/max803-max810z.pdf

Dann lies noch das hier:
https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#usb

das hier
https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#strapping-pins
(das fehlt bei Dir nämlich auch)

und das hier:
https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#uart

bzw lies, verstehe und befolge alles, was Espressif dazu geschrieben 
hat. Das hast Du offensichtlich nicht gemacht, und deswegen gehts nicht.

fchk

: Bearbeitet durch User
von Stefan S. (energizer)


Lesenswert?

>https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/02/esp32-waiting-for-packet-header-featured.jpg?w=1280&quality=100&strip=all&ssl=1

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.
4
.
5
Detecting chip type... ESP32-S3
6
BLOCK0          (                ) [0 ] read_regs: 00000000 00000000 0000d1f5 00000000 00000000 00000000
7
MAC_SPI_8M_0    (BLOCK1          ) [1 ] read_regs: 75ecb958 0000dc54 00000000 8b080000 8cbbf002 5c00d48d
8
BLOCK_SYS_DATA  (BLOCK2          ) [2 ] read_regs: 5facfa05 909a2b52 dd28ecc0 fb2412dd 540b1061 32563cd4 e90d04ba 314eb91a
9
BLOCK_USR_DATA  (BLOCK3          ) [3 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
10
BLOCK_KEY0      (BLOCK4          ) [4 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
11
BLOCK_KEY1      (BLOCK5          ) [5 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
12
BLOCK_KEY2      (BLOCK6          ) [6 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
13
BLOCK_KEY3      (BLOCK7          ) [7 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
14
BLOCK_KEY4      (BLOCK8          ) [8 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
15
BLOCK_KEY5      (BLOCK9          ) [9 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
16
BLOCK_SYS_DATA2 (BLOCK10         ) [10] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
17
18
BLOCK0          (                ) [0 ] err__regs: 00000000 00000000 00000000 00000000 00000000 00000000
19
EFUSE_RD_RS_ERR0_REG        0x00000000
20
EFUSE_RD_RS_ERR1_REG        0x00000000

>bzw lies, verstehe und befolge alles, was Espressif dazu geschrieben
hat. Das hast Du offensichtlich nicht gemacht, und deswegen gehts nicht.

Danke Frank, werde die Dokumente alle durchlesen.

>hier steht noch was von Initial Upload für CDC Console

auch den lese ich!

Danke & Gruß
Stefan

von Stefan S. (energizer)


Lesenswert?

So, am lesen:

>https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#usb

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).


>das hier
https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#strapping-pins
(das fehlt bei Dir nämlich auch)

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?

>https://docs.espressif.com/projects/esp-hardware-design-guidelines/en/latest/esp32s3/schematic-checklist.html#uart

Ok, auch da ist nichts auf dem DevKit, und ich habe die Komponenten die 
an TXD/RXD hängen auch noch nicht bestückt, Pins sind also offen.

>Das hast Du offensichtlich nicht gemacht, und deswegen gehts nicht.

Ja, habe ich nicht gemacht, sind aber wahrscheinlich nicht die Gründe 
warum sich USB nicht meldet.

von Andreas B. (andreas-ab)


Lesenswert?

> Ja, die Beschaltung ist etwas unüblich....


Hhmm, ich frage mich: bekommt der ESP32 dann einen sauberen Reset beim 
Einschalten der Spannungsversorgung? Das Datenblatt beschreibt den min. 
Resetpuls trst=50µs

Frank hat oben ja alle Links gepostet.

von Stefan S. (energizer)


Lesenswert?

>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).

Gruß
Stefan

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.