Zworki w IMZ ESP32-S3

IMZ ESP32-S3: do czego służą zworki USB-OTG, USB_JTAG i IN-OUT (krok po kroku)

ESP32-S3 to układ, który daje sporo możliwości już „na starcie”, ale wiele z nich zależy od drobnych decyzji sprzętowych na samej płytce. Jedną z takich decyzji są zworki konfiguracyjne – małe elementy, które w praktyce decydują o tym, jak zachowa się USB, czy korzystasz z wbudowanego JTAG-a, oraz w jakim kierunku pracują linie zasilania.

Na płytce IMZ ESP32-S3 zastosowano trzy kluczowe zworki: USB-OTG, USB_JTAG oraz IN-OUT. Każda z nich odpowiada za inny aspekt pracy układu i każda może oszczędzić (albo zabrać) sporo czasu podczas uruchamiania projektu, debugowania czy integracji z innymi modułami.

W tym wpisie pokazuję:

  • do czego dokładnie służy każda zworka,
  • w jakich scenariuszach warto ją przestawić, a kiedy lepiej zostawić domyślne ustawienie,
  • jakie są typowe błędy (np. „ESP32 nie jest widoczne po USB” albo „JTAG nie działa, mimo że jest w układzie”).

Jeżeli używasz ESP32-S3 do programowania po USB, debugowania bez zewnętrznego konwertera albo budujesz urządzenie, które ma działać jako USB device lub host, te trzy zworki są absolutnie kluczowe.


Po co w ogóle są zworki na płytce IMZ ESP32-S3

Idea zworek jako elementu konfiguracyjnego

Zworki na płytce IMZ ESP32-S3 pełnią rolę sprzętowych przełączników konfiguracji. Zamiast narzucać jedno, „jedyne słuszne” zachowanie płytki, pozwalają zdecydować jak dany fragment układu ma pracować – jeszcze zanim uruchomi się firmware.

To podejście jest szczególnie sensowne w ESP32-S3, gdzie:

  • te same piny mogą pełnić kilka funkcji,
  • interfejs USB może pracować w różnych trybach,
  • część funkcji (np. JTAG) wchodzi w konflikt z innymi.

Zworka daje wybór sprzętowy, niezależny od kodu i narzędzi programistycznych.

Od strony elektrycznej zworka to nic magicznego:

  • zamknięta zworka → dwa pola lutownicze są zwarte, ścieżki są połączone,
  • otwarta zworka → połączenia nie ma, sygnał „idzie inną drogą” albo wcale.

W praktyce może to oznaczać:

  • podłączenie pinu ESP32-S3 do konkretnego sygnału,
  • wybór źródła lub kierunku sygnału,
  • przełączenie linii USB pomiędzy różnymi blokami wewnętrznymi układu,
  • odłączenie jednej funkcji na rzecz innej.

To realna zmiana topologii połączeń na PCB, a nie tylko ustawienie w rejestrze.


Zworka USB-OTG – tryb urządzenia vs hosta

Czym jest USB-OTG w ESP32-S3

ESP32-S3 posiada sprzętowy kontroler USB OTG, który pozwala układowi pracować w dwóch rolach:

  • USB device – ESP32-S3 jest urządzeniem widzianym przez komputer
  • USB host – ESP32-S3 działa jako host dla innych urządzeń USB

Ważne jest to, że wybór roli USB w ESP32-S3 nie jest wyłącznie decyzją programową. USB wymaga poprawnej konfiguracji linii D+ / D− oraz zasilania VBUS, co w praktyce oznacza konkretne połączenia sprzętowe na płytce.


Co wybiera zworka USB-OTG na płytce IMZ ESP32-S3

Zworka USB-OTG na płytce IMZ ESP32-S3 decyduje o tym, w jakim trybie sprzętowo skonfigurowany jest interfejs USB:

  • czy ESP32-S3 oczekuje zasilania VBUS z zewnątrz (tryb device),
  • czy sam wystawia zasilanie VBUS na złącze USB (tryb host),
  • do którego bloku wewnętrznego układu trafiają linie USB.

Zmiana położenia tej zworki fizycznie przełącza połączenia na PCB. Firmware może działać poprawnie tylko wtedy, gdy jest zgodny z aktualnym ustawieniem sprzętowym.


Typowe zastosowania

Programowanie i komunikacja po USB

Najczęstszy scenariusz:

  • wgrywanie firmware,
  • port szeregowy USB-CDC,
  • logi i debug przez Serial Monitor.

W tym trybie ESP32-S3 działa jako USB device, a komputer jest hostem.


HID, CDC, MSC

Tryb device pozwala ESP32-S3 zachowywać się jak:

  • HID – klawiatura, mysz, kontroler
  • CDC – wirtualny port szeregowy
  • MSC – pamięć masowa (pendrive)

To nadal jest tryb USB device, tylko z inną klasą urządzenia po stronie firmware.


Opis działania zworki USB-OTG na schemacie

Na załączonym schemacie widać fragment układu zasilania i interfejsu USB, w którym kluczowym elementem konfiguracyjnym jest zworka USB-OTG.

Schemat USB-OTG

Zworka USB-OTG rozłączona (ustawienie domyślne)

Gdy zworka USB-OTG nie jest zwarta, linia VBUS z gniazda USB-C zasila płytkę deweloperską jednokierunkowo – prąd płynie z portu USB (np. komputera) przez diodę do reszty układu.

Dioda pełni tutaj rolę zabezpieczenia:

  • blokuje przepływ prądu wstecznego,
  • chroni port USB komputera,
  • zabezpiecza przed sytuacją, w której do płytki podłączone byłoby dodatkowe źródło zasilania (np. VIN lub inny port USB).

W tym trybie:

  • ESP32-S3 działa jako USB device,
  • port USB służy do programowania i komunikacji,
  • płytka nie zasila urządzeń podłączonych do złącza USB.

Zworka USB-OTG zwarta (tryb host)

Jeżeli celem jest zasilanie urządzenia podłączonego do portu USB (np. pendrive’a, klawiatury lub innego peryferium USB), należy zlutować zworkę USB-OTG.

Zwarcie zworki powoduje obejście diody, dzięki czemu:

  • linia VBUS staje się dwukierunkowa,
  • prąd może płynąć od strony płytki do złącza USB.

W takim układzie:

  • cała płytka musi być zasilana z innego źródła (np. drugi port USB lub pin VIN),
  • port USB objęty zworką służy wyłącznie do zasilania urządzeń zewnętrznych,
  • ESP32-S3 może pracować jako USB host.

Uwaga praktyczna

Zwarcie zworki USB-OTG bez zapewnienia alternatywnego źródła zasilania może prowadzić do niestabilnej pracy układu lub przeciążenia portu. W trybie hosta należy zawsze świadomie zaplanować sposób zasilania całego systemu.


Kiedy nie ruszać zworki USB-OTG

Nieprawidłowe ustawienie zworki USB-OTG może prowadzić do problemów sprzętowych:

  • zwarcie dwóch źródeł zasilania VBUS (komputer ↔ płytka),
  • niestabilną pracę USB,
  • brak wykrywania urządzenia przez system,
  • problemy trudne do zdiagnozowania programowo.

Jeżeli:

  • programujesz ESP32-S3 z komputera,
  • używasz USB-CDC lub USB-JTAG,
  • nie korzystasz z funkcji hosta,

zworka USB-OTG powinna pozostać w ustawieniu domyślnym (tryb device).

Tryb hosta ma sens tylko wtedy, gdy faktycznie podłączasz do ESP32-S3 inne urządzenia USB i wiesz, że to on ma być hostem.


Zworka USB_JTAG – konfiguracja GPIO3 na poziomie schematu

Opis działania zworki USB_JTAG na schemacie

Na schemacie widać prosty, ale bardzo istotny fragment układu związany z pinem GPIO3 oraz zworką USB_JTAG.

Linia GPIO3jest sprzętowo podciągnięta do VDD33 przez rezystor R11 (10 kΩ) oraz zworkę USB_JTAG.

  • schematic-USB-JTAG

Co się dzieje podczas startu ESP32-S3 (GPIO3)

GPIO3 jest strap pinem (czyli pinem konfiguracyjnym) którego stan logiczny jest sprawdzany przez bootloader wyłącznie w momencie startu układu. W zależności od jego stanu (0 czy 1) bootloader wie jak się zachować.


GPIO3 = 3.3 V przy starcie (logiczna „1”)

  • bootloader wybiera standardowy tryb startu,
  • USB może pracować w trybie device,
  • możliwe jest standardowe programowanie przez USB,
  • zachowanie układu jest przewidywalne i stabilne.

To jest ustawienie domyślne i zalecane.


GPIO3 = 0 V przy starcie (logiczne „0”)

  • bootloader wybiera alternatywny tryb startowy,
  • standardowy tryb programowania przez USB zostaje wyłączony,
  • ESP32-S3 nie zgłasza się poprawnie jako urządzenie USB,
  • automatyczne wgrywanie firmware przestaje działać.
  • GPIO3 może być używane jako zwykłe GPIO.
  • tworzysz urządzenie końcowe.

Ten stan jest przeznaczony wyłącznie do specjalnych, niestandardowych zastosowań i nie powinien występować przypadkowo.


Zworka IN-OUT – włączenie wyjścia 5V na pinie VIN

Zworka IN-OUT odpowiada za połączenie linii 5V z pinem VIN złącza goldpin.

Jej jedyną rolą jest świadome włączenie możliwości podawania 5V na zewnątrz płytki.

schematic-IN-OUT


Ustawienie domyślne – zworka IN-OUT rozłączona

Gdy zworka IN-OUT nie jest zwarta:

  • pin VIN działa wyłącznie jako wejście zasilania,
  • 5V z płytki nie jest wyprowadzane na złącze,
  • nie ma możliwości przypadkowego podania napięcia 5V na inne układy.

To ustawienie:

  • chroni płytkę przed zwarciami,
  • zapobiega błędom podczas prototypowania,
  • jest bezpieczne przy podłączaniu zewnętrznych modułów.

Zworka IN-OUT zwarta – aktywne wyjście 5V

Po zwarciu (zlutowaniu) zworki IN-OUT:

  • linia 5V zostaje połączona z pinem VIN,
  • pin VIN staje się wyjściem napięcia 5V,
  • możliwe jest zasilanie zewnętrznych układów bezpośrednio z płytki.

W tym trybie:

  • VIN przestaje być „tylko wejściem”,
  • użytkownik bierze pełną odpowiedzialność za to, co jest podłączone do pinu.

Dlaczego domyślnie VIN nie jest wyjściem

W wielu płytkach developerskich VIN bywa na stałe połączony z 5V, co często prowadzi do problemów:

  • zwarcie dwóch źródeł zasilania,
  • uszkodzenie portu USB lub przetwornicy,
  • trudne do zdiagnozowania awarie.

Zworka IN-OUT eliminuje te problemy, ponieważ:

  • wyjście 5V trzeba świadomie włączyć,
  • nie da się zrobić tego przypadkowo.

Pobieranie zasilania 5V z płytki

Aby umożliwić pobieranie prądu z płytki IMZ ESP32-S3 należy zlutować zworki IN-OUT oraz USB-OTG. Umożliwi to przepływ prądu pomiędzy złączem USB2 i pinem Vin omijając zastosowane tam diody.

Uwaga! Należy upewnić się, że wiemy co robimy. Również prądy pobierane z płytki IMZ ESP32-S3 muszą być niewielkie/ograniczone. W innym przypadku grozi to uszkodzeniem płytki lub podłączonych urządzeń.

⚠️ Uwaga techniczna Po obejściu diod zabezpieczających tor 5V nie jest ograniczany ani zabezpieczony przed przeciążeniem. Konfiguracja ta wymaga świadomego doboru obciążenia i kontroli napięcia. Wszelkie eksperymenty z poborem prądu wykonywane są na własną odpowiedzialność.


Wniosek praktyczny

  • Nie potrzebujesz 5V na złączu? → zworka IN-OUT rozłączona
  • Chcesz zasilać zewnętrzny moduł z płytki? → zworka IN-OUT zwarta, ale świadomie

Zworka IN-OUT to zabezpieczenie przed błędami, a nie ograniczenie funkcjonalności.


Zworka RGB – podłączenie diody RGB do GPIO48

Zworka RGB odpowiada za połączenie pinu GPIO48 z linią sterującą diody RGB zamontowanej na płytce.

Jest to typowa zworka „funkcja vs wolny pin”.

schematic-RGB


Ustawienie domyślne – zworka RGB zwarta

Gdy zworka RGB jest zwarta:

  • pin GPIO48 jest połączony z wejściem sterującym diody RGB,
  • możliwa jest bezpośrednia obsługa diody z poziomu firmware,
  • dioda może być używana jako:
  • sygnalizacja stanu,
  • test poprawności działania programu,
  • debug wizualny.

To ustawienie jest wygodne na etapie:

  • nauki,
  • testów,
  • prototypowania.

Zworka RGB rozłączona – wolny GPIO48

Po rozłączeniu (rozlutowaniu) zworki RGB:

  • dioda RGB zostaje całkowicie odłączona od GPIO48,
  • pin GPIO48 zostaje zwolniony,
  • GPIO48 może być używany jako zwykły pin wejścia/wyjścia.

W tym trybie:

  • dioda nie wpływa na stan pinu,
  • nie występuje dodatkowe obciążenie linii,
  • pin nadaje się do innych funkcji aplikacyjnych.

Wniosek praktyczny

  • Chcesz korzystać z diody RGB? → zworka RGB zwarta
  • Potrzebujesz dodatkowego GPIO? → zworka RGB rozłączona

Zworka RGB pozwala wybrać między wygodą a maksymalną elastycznością sprzętową.


Zasilanie 5V na płytce IMZ ESP32-S3

Płytka deweloperska IMZ ESP32-S3 jest przystosowana do zasilania napięciem 5V, które może być podane na jedno z trzech wejść:

  • USB1
  • USB2
  • VIN

Na płytce nie ma stabilizatora 5V. Wszystkie te wejścia trafiają na wspólną szynę 5V, z której następnie zasilany jest stabilizator 3.3V odpowiedzialny za zasilanie ESP32-S3 i pozostałych układów logicznych.


Dioda na linii 5V

Zasilanie z każdego wejścia przechodzi przez własną diodę zabezpieczającą, która:

  • chroni port USB przed prądami wstecznymi,
  • zapobiega zwarciu kilku źródeł zasilania.

Skutkiem zastosowania diody jest niewielki spadek napięcia – napięcie 5V z USB po przejściu przez diodę jest nieco niższe (rzędu 0.2–0.4 V).


Stabilizator 3.3V

Ze wspólnej szyny 5V zasilany jest stabilizator 3.3V (LDO), który:

  • zasila ESP32-S3,
  • zasila logikę i peryferia 3.3V.

Jest to jedyny stabilizator napięcia na płytce.


Uwagi praktyczne dotyczące napięcia wejściowego

Płytkę można zasilać napięciem nieco wyższym niż 5V, jednak:

  • zwiększa to straty mocy na stabilizatorze 3.3V,
  • powoduje jego nagrzewanie,
  • może pogorszyć stabilność zasilania przy większym poborze prądu.

Dodatkowo interfejs USB w ESP32-S3 oczekuje napięcia VBUS zbliżonego do 5V, dlatego zasilanie znacząco wyższym napięciem nie jest zalecane.

Najlepszym i najbezpieczniejszym wyborem jest stabilne napięcie około 5V.


Tabela zbiorcza zworek

Zworka Domyślnie Po co jest Kiedy zmieniać
USB-OTG OFF Wybór kierunku zasilania USB Gdy ESP32 ma zasilać urządzenia USB
USB_JTAG ON Poprawny start i programowanie USB Tylko w specjalnych konfiguracjach
IN-OUT OFF Ochrona przed wyjściem 5V na VIN Gdy chcesz zasilać coś z VIN
RGB ON Obsługa diody RGB na GPIO48 Gdy potrzebujesz wolnego GPIO48

Wniosek praktyczny

Jeżeli:

  • programujesz,
  • debugujesz,
  • uczysz się ESP32-S3,

nie musisz ruszać żadnej zworki poza USB_JTAG (zostaje zwarta).

Pozostałe zworki są po to, aby świadomie rozszerzyć funkcjonalność płytki, a nie po to, aby komplikować start.


Na koniec – kilka słów zdrowego rozsądku

Opisane w tym wpisie konfiguracje i kombinacje zworek pokazują możliwości płytki IMZ ESP32-S3, ale nie zastępują świadomego projektowania układu zasilania i połączeń.

Zmiana zworek wpływa bezpośrednio na połączenia sprzętowe, kierunek przepływu prądu i sposób pracy interfejsów. Dlatego każdą niestandardową konfigurację warto:

  • przemyśleć,
  • sprawdzić napięcia i prądy,
  • oraz traktować jako eksperyment wykonywany na własną odpowiedzialność.

Wpis ma charakter technicznego przewodnika i dokumentacji, a nie gotowej recepty na każdy możliwy scenariusz.