MCU Arayüzleri

ESP32 Otomatik Reset ve Önyükleme Devresi (DTR/RTS)

Espressif geliştirme kartlarındaki iki transistörlü devre: esptool, Arduino IDE ve PlatformIO bir USB-UART köprüsünün DTR ve RTS hatları üzerinden ESP32’yi resetler ve seri bootloader’ını başlatır; hiçbir düğmeye basmak gerekmez.

Çalışma lojik seviyesi
3,3 V (DevKitC V4 üzerinde VDD33)
Bileşenler
8
Formüller
3
Tuzaklar
4
Web CAD'de Aç
Doğrulanmış Kaynak

Şema çalışma alanı

ESP32 Auto-Reset and Boot CircuitExported from CircuitBaseR110kΩR210kΩQ12N3904Q22N3904R310kΩC11µFSW2ENSW1BOOTDTRRTS+3.3VGNDGNDENGNDIO0

Devreye genel bakış

Çalışma lojik seviyesi
3,3 V (DevKitC V4 üzerinde VDD33)
Bileşenler
8
Formüller
3
Tuzaklar
4

Elektriksel değerlerini ve bağlantılarını görmek için yukarıdaki şemadan herhangi bir bileşene tıklayın.

Devreye genel bakış

Bu, Espressif ESP32-DevKitC V4 şemasındaki “auto program” bloğudur; EN gecikme ağı ile BOOT ve EN düğmeleriyle birlikte yeniden çizilmiştir. ESP32, resetten çıktığı anda IO0 düşük seviyedeyse seri bootloader’ını başlatır. DevKitC üzerindeki CP2102N ya da bir CH340G gibi bir USB-UART köprüsünün iki boş modem kontrol çıkışı vardır, DTR ve RTS; bellenim yükleme araçları EN ve IO0’ı sürmek için bunları değiştirir. İki NPN transistör çapraz bağlıdır, bu yüzden her biri yalnızca iki kontrol hattı farklı seviyedeyken iletime geçer: DTR ve RTS ikisi de yüksek ya da ikisi de düşükken hiçbir şey olmaz; böylece iki hattı birlikte etkinleştiren bir terminal programı çipi resetlemez. Referans kart SS8050 transistörler kullanır; burada çizilen genel amaçlı 2N3904 bu akımlarda aynı işi görür. EN üzerindeki pull-up direnci ve kondansatör, Espressif’in önerdiği 10 kΩ ve 1 µF değerlerini izler; DevKitC V4 ise 0,1 µF kullanır. GPIO0’ın dahili zayıf pull-up direnci olduğundan devrenin IO0 üzerinde dirence ihtiyacı yoktur.

Temel Teknik Özellikler

Çalışma lojik seviyesi3,3 V (DevKitC V4 üzerinde VDD33)
Kontrol doğruluk tablosu (pin seviyeleri)DTR 1, RTS 0 → EN 0; DTR 0, RTS 1 → IO0 0; eşit seviyeler → EN 1, IO0 1 (DevKitC V4 şeması)
Reset koşuluCHIP_PU en az 50 µs boyunca 0,6 V altında (Espressif Hardware Design Guidelines)
EN gecikme ağıEspressif’in önerdiği 10 kΩ ve 1 µF, τ = 10 ms (hesaplanan); DevKitC V4 üzerinde 0,1 µF
Bootloader başlatma koşuluResetten çıkışta IO0 düşük; GPIO2 düşük veya bağlantısız (esptool dokümantasyonu)
TransistörlerDevKitC V4 üzerinde SS8050; burada 2N3904 çizilmiştir
Baz akımı10 kΩ baz dirençleriyle transistör başına ≈ 0,26 mA (hesaplanan, VBE ≈ 0,7 V varsayımıyla)

Çalışma Prensibi ve Teorik Analiz

01

USB-UART köprüsünden DTR ve RTS

DTR ve RTS aktif düşük çıkışlardır: yazılım bir hattı etkinleştirdiğinde pin 0 V’a iner; bıraktığında 3,3 V’a döner. Aşağıdaki her şey, DevKitC V4 şemasına basılmış doğruluk tablosundaki gibi pin seviyeleriyle anlatılmıştır.

02

Çapraz bağlı transistörler

Q1’in bazı R1 üzerinden DTR’ye, emiteri RTS’ye bağlıdır; kolektörü EN’i çeker. Q2 bunun ayna görüntüsüdür: baz R2 üzerinden RTS’ye, emiter DTR’ye, kolektör IO0’a bağlıdır. Bir transistör yalnızca baz tarafı yüksek ve emiter tarafı düşükken iletime geçer:

DTR = 1, RTS = 1: iki transistör de kesimde, EN = 1, IO0 = 1.

DTR = 0, RTS = 0: iki transistör de kesimde, EN = 1, IO0 = 1.

DTR = 1, RTS = 0: Q1 iletimde, EN = 0 (çip resette), IO0 = 1.

DTR = 0, RTS = 1: Q2 iletimde, EN = 1, IO0 = 0.

Eşit seviyeler hiçbir şeyi anahtarlamadığından, iki hattı birlikte etkinleştiren bir port açılışı çipi resetlemez. Bir transistör kesimdeyken emiteri yüksek ve bazı düşükse, baz-emiter eklemi 3,3 V ile ters kutuplanır; bu, 2N3904’ün en az 6 V olan V(BR)EBO değerinin oldukça altındadır.

03

Reset

esptool önce DTR = 1, RTS = 0 yapar. Q1 doyuma girer, EN’i toprağa çeker ve C1’i boşaltır. ESP32, CHIP_PU en az 50 µs boyunca 0,6 V’un altında kaldığında resetlenir; esptool bu durumu 100 ms korur. R1 = 10 kΩ ile Q1’in baz akımı yaklaşık olarak:

FORMULA & CALCULATION
IB = (VDTR - VBE) / (R1) ≈ (3.3 V - 0.7 V) / (10 kΩ) = 0.26 mA

olur; bu, R3’ün sağladığı 0,33 mA’e karşı transistörü doyuma sokar.

04

IO0 düşükken resetten çıkış

Ardından esptool art arda iki çağrıyla DTR = 0 ve RTS = 1 yapar. Bu ikisi arasında iki hat da kısa bir süre düşüktür ve iki transistör de kesimdedir; C1 bu ara boyunca EN’in yükselişini yavaşlatır, böylece Q2 iletime geçip IO0’ı düşüğe çektiğinde çip hâlâ resettedir. Ardından EN, R3 üzerinden C1’i şarj ederek yükselir:

FORMULA & CALCULATION
\tau = R3 × C1 = 10 kΩ × 1\,µF = 10 ms

Çip resetten çıkarken strapping pinlerini okur. IO0’ı düşük bulunca flash’taki program yerine seri bootloader’ı başlatır. Bootloader’ın başlaması için GPIO2’nin de düşük seviyede ya da bağlantısız olması gerekir.

05

Boşta durumuna dönüş

50 ms sonra esptool DTR’yi bırakır; böylece iki hat da yüksek, iki transistör de kesimdedir ve IO0 dahili pull-up direnci üzerinden yüksek seviyeye döner. Bootloader çalışmaya devam eder ve yükleme TXD0 ve RXD0 üzerinden sürer. Yeni bellenimi çalıştırmak için esptool yalnızca RTS’ye darbe verir (DTR = 1, RTS = 0): IO0 yüksekken sıradan bir donanım reseti.

Tasarım Denklemleri ve Hesaplama Formülleri

EN gecikme zaman sabiti

τ = R3 · C1

Q1 veya SW2 bıraktıktan sonra EN’in yükselişinin zaman sabiti.

SembolParametreTipik değer
R3EN pull-up direnci10kΩ
C1EN gecikme kondansatörü1µF
τZaman sabiti (hesaplanan)10ms

Bırakma sırasında EN gerilimi

VEN(t) = VDD(1 − e − t/τ)

EN, bir zaman sabitinden sonra besleme geriliminin %63’üne, beş zaman sabitinden sonra yaklaşık %99’una ulaşır (çizilen değerlerle 50 ms).

SembolParametreTipik değer
VDDBesleme gerilimi3.3V
τZaman sabiti10ms

Transistör baz akımı

IB = VDD − VBER1

Kendi kontrol hattı yüksek, diğeri düşükken iletimdeki transistörün baz akımı.

SembolParametreTipik değer
VDDKontrol hattının yüksek seviyesi3.3V
VBEBaz-emiter gerilimi (varsayılan)0.7V
R1Baz direnci10kΩ
IBBaz akımı (hesaplanan)0.26mA

Malzeme Listesi (BOM)

Bu devreyi kurmak için gereken tüm parçalar. Şemada incelemek için bir referans tanımlayıcı seçin.

Ref.BileşenDeğerKılıfDevredeki rolüKaynak
Küçük sinyal NPN transistör

DevKitC V4 üzerinde SS8050-G. Bu akımlarda herhangi bir küçük NPN anahtar iş görür.

2N3904TO-92EN’i düşük seviyeye çekerKüçük sinyal NPN transistör: pin yapısı ve veri sayfası
Küçük sinyal NPN transistör

DevKitC V4 üzerinde SS8050-G.

2N3904TO-92IO0’ı düşük seviyeye çekerKüçük sinyal NPN transistör: pin yapısı ve veri sayfası
Direnç

DevKitC V4 üzerinde R21.

10kΩ0603 / 0805 / axialQ1 baz direnci—
Direnç

DevKitC V4 üzerinde R22.

10kΩ0603 / 0805 / axialQ2 baz direnci—
Direnç

DevKitC V4 üzerinde R11.

10kΩ0603 / 0805 / axialEN pull-up direnci—
Seramik kondansatör

Espressif’in önerdiği değer. DevKitC V4 üzerinde 0,1 µF (C9) ve ayrıca EN düğmesine paralel 0,1 µF (C14) bulunur.

1µF0603 / 0805EN gecikmesi—
Dokunsal buton

DevKitC V4 buna paralel 0,1 µF ekler (C15).

BOOTSMD / THTIO0’ı elle düşüğe çekme—
Dokunsal butonENSMD / THTElle reset—

Pratik Uygulama Alanları ve Kullanım Senaryoları

ESP32 geliştirme kartlarında USB-UART üzerinden bellenim yükleme
Arduino IDE, PlatformIO veya ESP-IDF’ten düğmesiz programlanması gereken özel ESP32 kartları
ESP32 modüllerini programlamak için USB-UART adaptörleri
Kartları otomatik olarak yeniden programlayan test fikstürleri

Kritik Tasarım Tuzakları ve Mühendislik İpuçları

Gerçek montajlarda karşılaşılan tuzaklar ve her birinin çözümü.

Kritik

EN üzerinde yetersiz kapasitans

EN ile GND arasında kondansatör yoksa ya da çok küçükse otomatik reset güvenilmez olur ve esptool çipe bağlanamayabilir; bu en çok Windows’ta görülür.

Önlem

esptool dokümantasyonunun önerdiği gibi EN ile GND arasına 1 µF ile 10 µF arası bir kondansatör takın; 10 kΩ ile birlikte 1 µF, Espressif donanım tasarım kılavuzlarıyla örtüşür.

Uyarı

Seri monitör kartı resetliyor veya tutuyor

Bazı terminal programları ve sürücüler portu açarken RTS veya DTR’yi kendiliğinden etkinleştirir; RTS/CTS donanım akış kontrolü de RTS’yi sürer. Seviyelere bağlı olarak kart resetlenir ya da resette veya bootloader’da kalır. Linux’ta boştaki bir port varsayılan olarak RTS’yi etkinleştirebilir.

Önlem

Terminal programında RTS/CTS donanım akış kontrolünü kapatın. Linux’ta esptool dokümantasyonunda anlatıldığı gibi portun HUPCL bayrağını temizleyin (stty -F /dev/ttyUSB0 -hupcl).

Uyarı

GPIO2 üzerindeki yük bootloader’ı engeller

ESP32 seri bootloader’a yalnızca IO0 düşükken GPIO2 de düşük veya bağlantısızsa girer. GPIO2’yi yüksekte tutan bir pull-up direnci ya da başka bir devre, transistörler doğru anahtarlasa bile otomatik resetin çalışmasını engeller.

Önlem

GPIO2’yi bağlantısız bırakın ya da reset sırasında düşük olduğundan emin olun; üzerine pull-up direnci koymayın.

Bilgi

IO0 üzerinde büyük kondansatör

IO0 üzerindeki büyük bir kondansatör, güç verildikten sonra pini bir süre düşük tutar ve çip kendi programı yerine bootloader’ı başlatabilir.

Önlem

Espressif donanım tasarım kılavuzlarının uyardığı gibi IO0’a yüksek değerli kondansatör eklemeyin; devre yalnızca dahili zayıf pull-up direncine dayanır.

Birincil kaynaklar

Bu sayfanın doğru kalmasına yardım edin

Bu devreyi kurdunuz, simüle ettiniz veya incelediniz mi? Onaylayın ya da yanlış bir parça, değer veya bağlantıyı bildirin.

GitHub'da bu sayfanın önceden doldurulduğu herkese açık bir form açar; ücretsiz bir GitHub hesabı gerekir. Bildirimler ve onaylar nasıl işler

HTML kodu

<iframe src="https://circuitbase.tech/embed/schematic/esp32-auto-reset-flashing-circuit?theme=paper" width="100%" height="500" frameborder="0" loading="lazy" style="border: 1px solid #e5e7eb; border-radius: 6px; max-width: 100%;" title="ESP32 Otomatik Reset ve Önyükleme Devresi (DTR/RTS) — CircuitBase Interactive Schematic"></iframe>