0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP8266的自動(dòng)下載原理分析

CHANBAEK ? 來源: 非典型技術(shù)宅 ? 作者: 非典型技術(shù)宅 ? 2023-11-24 09:31 ? 次閱讀

串口自動(dòng)下載電路實(shí)質(zhì)為:上位機(jī)通過控制 USB 轉(zhuǎn)串口芯片 DTR、RTS 引腳電平,配合硬件電路使進(jìn)入芯片下載模式

自動(dòng)下載原理

串口下載的需要依賴 bootload,其流程為在芯片中先下載一個(gè) bootload , 進(jìn)入 bootload 后檢查是否進(jìn)入下載模式,如果未進(jìn)入下載程序,則跳轉(zhuǎn)到實(shí)際程序運(yùn)行。

根據(jù)進(jìn)入 bootload 的方式可分為兩種,一種為進(jìn)入 bootload 由外部引腳控制,例如 STM32ESP8266。
一種是系統(tǒng)復(fù)位時(shí)默認(rèn)進(jìn)入 bootload ,例如 STC 的 51 系列和一些自定義的 bootload 。

以 STM32 為例,在芯片出廠時(shí)在其系統(tǒng)存儲(chǔ)區(qū)燒錄了一個(gè) bootload ,并通過其 boot0 和 boot1 引腳電平進(jìn)行選擇復(fù)位后進(jìn)入的存儲(chǔ)器。

圖片

對(duì)于自定義 bootload ,只能在系統(tǒng)復(fù)位時(shí)進(jìn)入 bootload ,然后在 bootload 中進(jìn)行進(jìn)一步判斷處理。

自動(dòng)下載功能需要硬件和軟件兩部分支持,軟件部分包括由上位機(jī)提供的串口下載協(xié)議和串口流控信號(hào)。自動(dòng)下載硬件電路將串口流控信號(hào),轉(zhuǎn)換為對(duì)于芯片所需的復(fù)位信號(hào)和boot引腳信號(hào)。

在串口下載的上位機(jī)程序中,需要控制串口的 DTR(Data Terminal Ready)、RTS(Request To Send) 引腳提供下載開始信號(hào),然后由硬件電路轉(zhuǎn)換為對(duì)應(yīng)的復(fù)位信號(hào)和 boot 信號(hào)。

ESP8266 的自動(dòng)下載原理分析

以 ESP8266 為例,ESP8266 進(jìn)入下載模式的條件為 GPIO0 引腳為低電平時(shí),復(fù)位芯片( RSTEN 上升沿)。 即 GPIO0 = 0 RST = 0 -> 1

NodeMCU 的自動(dòng)下載電路如下如所示:

圖片

GPIO0 和 RST 默認(rèn)電平為高電平,且需要注意到 RST 引腳有一個(gè)復(fù)位電路。

其復(fù)位延時(shí)時(shí)間約為 1.15 ms。

其自動(dòng)復(fù)位電路類似三極管雙穩(wěn)態(tài)電路:

  1. 當(dāng) DTR = 1,RTS = 1 時(shí), VT1截止,VT2截止, RST = 1; GPIO0 = 1
  2. 當(dāng) DTR = 0,RTS = 0 時(shí), VT1截止,VT2截止, RST = 1; GPIO0 = 1
  3. 當(dāng) DTR = 1,RTS = 0 時(shí), VT1導(dǎo)通,VT2截止, RST = 0; GPIO0 = 1
  4. 當(dāng) DTR = 0,RTS = 1 時(shí), VT1截止,VT2導(dǎo)通, RST = 1; GPIO0 = 0

其真值表為:

圖片

在狀態(tài) 3) 下載電路 RST 引腳為低,進(jìn)入復(fù)位模式;
在狀態(tài) 4) 下載電路 GPIO0 引腳為低。

由于 RST 引腳帶有復(fù)位電路,在 RST 引腳電平變?yōu)楦唠娖胶?,?huì)有一段時(shí)間延時(shí)才能恢復(fù)高電平。所以只需要在上位機(jī)代碼中控制 DTR&RTS 引腳電平,依次進(jìn)入狀態(tài)3和狀態(tài)4,ESP8266 就可以進(jìn)入下載模式。

查看 ESP8266 下載工具 pytool.py 代碼:

# 已刪減無關(guān)代碼,原代碼 https://hub.fastgit.org/espressif/esptool/blob/master/esptool.py#L570
# RTS = either CH_PD/EN or nRESET (both active low = chip in reset
# DTR = GPIO0 (active low = boot to flasher)

# DTR & RTS are active low signals,
# ie True = pin @ 0V, False = pin @ VCC.
# 進(jìn)入狀態(tài) 3)
self._setDTR(False)  # IO0=HIGH
self._setRTS(True)   # EN=LOW, chip in reset
time.sleep(0.1)
# 進(jìn)入狀態(tài) 4)
self._setDTR(True)   # IO0=LOW
self._setRTS(False)  # EN=HIGH, chip out of reset
time.sleep(0.05)
# 恢復(fù) Flash 啟動(dòng)模式
self._setDTR(False)  # IO0=HIGH, done

使用邏輯分析儀抓取的下載時(shí)的 DTR、RTS 信號(hào)如下圖所示。

圖片

其中紅框所標(biāo)識(shí)的就是狀態(tài) 3 -> 4 的變化。由于執(zhí)行代碼也需要時(shí)間,實(shí)際狀態(tài)變化并不是由狀態(tài)3直接進(jìn)入狀態(tài)4,但是狀態(tài)1和2并不會(huì)對(duì)下載電路產(chǎn)生影響。

其他

對(duì)于不需要 boot 引腳即可進(jìn)入下載模式的bootload,其自動(dòng)下載同樣是使用上位機(jī)控制 DTRRTS 引腳,只不過它只需要使用一個(gè)引腳讓芯片在下載前進(jìn)入復(fù)位模式即可。

通過上面分析,就可以解釋為什么有時(shí)在使用串口軟件打開串口后,芯片會(huì)自動(dòng)復(fù)位。
這是因?yàn)樵诖谲浖心J(rèn)開啟了流控,其流控引腳導(dǎo)致芯片進(jìn)入復(fù)位狀態(tài),所以只需關(guān)閉串口軟件流控,即可避免該現(xiàn)象發(fā)生。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7945

    瀏覽量

    264703
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356091
  • 串口I
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5010
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    45019
  • 下載電路
    +關(guān)注

    關(guān)注

    3

    文章

    7

    瀏覽量

    4295
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP8266自動(dòng)下載電路設(shè)計(jì)方案

    前言使用過51單片機(jī)的朋友會(huì)清楚:51單片機(jī)在燒寫程序的時(shí)候需要斷一下電再上電;使用過STM32單片機(jī)的朋友會(huì)清楚:燒寫程序時(shí)需要設(shè)置Boot模式。ESP8266在燒寫程序時(shí)也需要手動(dòng)設(shè)置模式,STM32的ISP自動(dòng)下載電路都有
    的頭像 發(fā)表于 09-20 10:04 ?3966次閱讀

    ESP8266硬件設(shè)計(jì)指南的詳細(xì)資料免費(fèi)下載

    本手冊提供了 ESP8266EX 系列的產(chǎn)品信息,包括 ESP8266EX 芯片,配置 ESP8266EX 芯片的 ESP-LAUNCHER 開發(fā)板,以及
    發(fā)表于 03-15 08:00 ?34次下載
    <b class='flag-5'>ESP8266</b>硬件設(shè)計(jì)指南的詳細(xì)資料免費(fèi)<b class='flag-5'>下載</b>

    ESP8266模塊的的硬件設(shè)計(jì)指南資料免費(fèi)下載

    本手冊提供了ESP8266EX 系列的產(chǎn)品信息,包括 ESP8266EX 芯片,配置 ESP8266EX 芯片的 ESP-LAUNCHER 開發(fā)板,以及
    發(fā)表于 03-18 08:00 ?47次下載
    <b class='flag-5'>ESP8266</b>模塊的的硬件設(shè)計(jì)指南資料免費(fèi)<b class='flag-5'>下載</b>

    中移合物固件ESP8266軟件下載

    中移合物固件ESP8266軟件下載
    發(fā)表于 05-06 10:09 ?8次下載

    ESP8266系列封裝庫資源下載

    ESP8266系列封裝庫資源下載
    發(fā)表于 05-20 16:04 ?0次下載

    Esp8266原理圖分享

    Esp8266原理圖免費(fèi)下載
    發(fā)表于 06-18 11:21 ?511次下載

    ESP8266自動(dòng)下載電路分析

    硬件環(huán)境樂鑫官方開發(fā)板ESP8266-DevKitC板載自動(dòng)下載電路如下開發(fā)板入門指南的描述如下顯然,選擇自動(dòng)下載功能后,RTS就是Auto
    發(fā)表于 11-30 17:51 ?9次下載
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>下載</b>電路<b class='flag-5'>分析</b>

    串口2 esp8266測試程序下載

    串口2 esp8266測試程序下載
    發(fā)表于 12-30 10:38 ?24次下載

    ESP8266/ESP32自動(dòng)下載原理

    前一段時(shí)間需要自己制作一片ESP32單板,成本和封裝考慮,計(jì)劃選擇CH340E作為USB轉(zhuǎn)串口芯片,ESP8266/ESP32的單板一般都有自動(dòng)下載
    的頭像 發(fā)表于 10-10 15:06 ?4640次閱讀

    使用MPU6050、ESP8266和Qubitro進(jìn)行ART分析

    電子發(fā)燒友網(wǎng)站提供《使用MPU6050、ESP8266和Qubitro進(jìn)行ART分析.zip》資料免費(fèi)下載
    發(fā)表于 10-28 09:33 ?2次下載
    使用MPU6050、<b class='flag-5'>ESP8266</b>和Qubitro進(jìn)行ART<b class='flag-5'>分析</b>

    使用ESP8266 WiFi模塊DIY自動(dòng)智能喂魚器

    電子發(fā)燒友網(wǎng)站提供《使用ESP8266 WiFi模塊DIY自動(dòng)智能喂魚器.zip》資料免費(fèi)下載
    發(fā)表于 12-27 10:05 ?3次下載
    使用<b class='flag-5'>ESP8266</b> WiFi模塊DIY<b class='flag-5'>自動(dòng)</b>智能喂魚器

    使用Arduino編程ESP8266 ESP 01

    電子發(fā)燒友網(wǎng)站提供《使用Arduino編程ESP8266 ESP 01.zip》資料免費(fèi)下載
    發(fā)表于 02-07 14:30 ?8次下載
    使用Arduino編程<b class='flag-5'>ESP8266</b> <b class='flag-5'>ESP</b> 01

    ESP8266硬件

    目前市面上有關(guān)ESP8266模組有很多的種類,但是都是使用的樂鑫公司開發(fā)的ESP8266的wifi模組,而且種類也很多。
    的頭像 發(fā)表于 02-10 14:25 ?4769次閱讀
    <b class='flag-5'>ESP8266</b>硬件

    NodeMCU家庭自動(dòng)化(ESP8266)

    電子發(fā)燒友網(wǎng)站提供《NodeMCU家庭自動(dòng)化(ESP8266).zip》資料免費(fèi)下載
    發(fā)表于 07-10 14:59 ?0次下載
    NodeMCU家庭<b class='flag-5'>自動(dòng)</b>化(<b class='flag-5'>ESP8266</b>)

    ESP8266自動(dòng)下載電路分析

    網(wǎng)上找到了一些解釋,然而并不能讓我信服……可能大多參考了正點(diǎn)原子的自動(dòng)下載電路原理,但人家的自動(dòng)下載功能也需要 mcu-isp 軟件配合才能實(shí)現(xiàn)啊……等等,吐槽之中獲得靈感,
    的頭像 發(fā)表于 11-25 09:29 ?3960次閱讀
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自動(dòng)</b><b class='flag-5'>下載</b>電路<b class='flag-5'>分析</b>