<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP8266的自動下載原理分析

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

串口自動下載電路實質為:上位機通過控制 USB 轉串口芯片 DTR、RTS 引腳電平,配合硬件電路使進入芯片下載模式

自動下載原理

串口下載的需要依賴 bootload,其流程為在芯片中先下載一個 bootload , 進入 bootload 后檢查是否進入下載模式,如果未進入下載程序,則跳轉到實際程序運行。

根據進入 bootload 的方式可分為兩種,一種為進入 bootload 由外部引腳控制,例如 STM32ESP8266。
一種是系統復位時默認進入 bootload ,例如 STC 的 51 系列和一些自定義的 bootload 。

以 STM32 為例,在芯片出廠時在其系統存儲區燒錄了一個 bootload ,并通過其 boot0 和 boot1 引腳電平進行選擇復位后進入的存儲器。

圖片

對于自定義 bootload ,只能在系統復位時進入 bootload ,然后在 bootload 中進行進一步判斷處理。

自動下載功能需要硬件和軟件兩部分支持,軟件部分包括由上位機提供的串口下載協議和串口流控信號。自動下載硬件電路將串口流控信號,轉換為對于芯片所需的復位信號和boot引腳信號。

在串口下載的上位機程序中,需要控制串口的 DTR(Data Terminal Ready)、RTS(Request To Send) 引腳提供下載開始信號,然后由硬件電路轉換為對應的復位信號和 boot 信號。

ESP8266 的自動下載原理分析

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

NodeMCU 的自動下載電路如下如所示:

圖片

GPIO0 和 RST 默認電平為高電平,且需要注意到 RST 引腳有一個復位電路。

其復位延時時間約為 1.15 ms。

其自動復位電路類似三極管雙穩態電路:

  1. 當 DTR = 1,RTS = 1 時, VT1截止,VT2截止, RST = 1; GPIO0 = 1
  2. 當 DTR = 0,RTS = 0 時, VT1截止,VT2截止, RST = 1; GPIO0 = 1
  3. 當 DTR = 1,RTS = 0 時, VT1導通,VT2截止, RST = 0; GPIO0 = 1
  4. 當 DTR = 0,RTS = 1 時, VT1截止,VT2導通, RST = 1; GPIO0 = 0

其真值表為:

圖片

在狀態 3) 下載電路 RST 引腳為低,進入復位模式;
在狀態 4) 下載電路 GPIO0 引腳為低。

由于 RST 引腳帶有復位電路,在 RST 引腳電平變為高電平后,會有一段時間延時才能恢復高電平。所以只需要在上位機代碼中控制 DTR&RTS 引腳電平,依次進入狀態3和狀態4,ESP8266 就可以進入下載模式。

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

# 已刪減無關代碼,原代碼 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.
# 進入狀態 3)
self._setDTR(False)  # IO0=HIGH
self._setRTS(True)   # EN=LOW, chip in reset
time.sleep(0.1)
# 進入狀態 4)
self._setDTR(True)   # IO0=LOW
self._setRTS(False)  # EN=HIGH, chip out of reset
time.sleep(0.05)
# 恢復 Flash 啟動模式
self._setDTR(False)  # IO0=HIGH, done

使用邏輯分析儀抓取的下載時的 DTR、RTS 信號如下圖所示。

圖片

其中紅框所標識的就是狀態 3 -> 4 的變化。由于執行代碼也需要時間,實際狀態變化并不是由狀態3直接進入狀態4,但是狀態1和2并不會對下載電路產生影響。

其他

對于不需要 boot 引腳即可進入下載模式的bootload,其自動下載同樣是使用上位機控制 DTRRTS 引腳,只不過它只需要使用一個引腳讓芯片在下載前進入復位模式即可。

通過上面分析,就可以解釋為什么有時在使用串口軟件打開串口后,芯片會自動復位。
這是因為在串口軟件中默認開啟了流控,其流控引腳導致芯片進入復位狀態,所以只需關閉串口軟件流控,即可避免該現象發生。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    59

    文章

    7442

    瀏覽量

    258583
  • STM32
    +關注

    關注

    2240

    文章

    10677

    瀏覽量

    349013
  • 串口I
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5002
  • ESP8266
    +關注

    關注

    50

    文章

    947

    瀏覽量

    44029
  • 下載電路
    +關注

    關注

    3

    文章

    7

    瀏覽量

    4251
收藏 人收藏

    評論

    相關推薦

    ESP8266自動下載電路設計方案

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

    ESP8266自動下載電路相關資料下載

    硬件環境樂鑫官方開發板ESP8266-DevKitC板載自動下載電路如下開發板入門指南的描述如下顯然,選擇自動下載功能后,RTS就是Auto
    發表于 01-25 08:22

    ESP8266一鍵燒寫軟件下載

    ESP8266一鍵燒寫軟件下載
    發表于 11-22 17:00 ?26次下載

    如何將ESP8266連接到WiFi

    在之前的ESP8266項目中,我簡要介紹了ESP8266 WiFi模塊,如何開始使用ESP8266和Arduino,ESP8266 ESP-
    的頭像 發表于 07-29 11:32 ?8.5w次閱讀
    如何將<b class='flag-5'>ESP8266</b>連接到WiFi

    怎樣使用ESP8266 Flasher和Programmer燒寫ESP8266 AT固件

    選擇要連接的COM端口ESP8266 Flasher和Programmer + ESP8266 Wifi串行收發器模塊。將BAUDRATE設置為115200。
    的頭像 發表于 11-18 17:58 ?2w次閱讀

    ESP8266的電路原理圖免費下載

    本文檔的主要內容詳細介紹的是ESP8266的電路原理圖免費下載。
    發表于 03-13 08:00 ?467次下載
    <b class='flag-5'>ESP8266</b>的電路原理圖免費<b class='flag-5'>下載</b>

    中移合物固件ESP8266軟件下載

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

    ESP8266系列封裝庫資源下載

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

    Esp8266原理圖分享

    Esp8266原理圖免費下載。
    發表于 06-18 11:21 ?485次下載

    ESP8266 PCB的模塊封裝庫下載

    ESP8266 PCB的模塊封裝庫下載
    發表于 10-28 14:50 ?166次下載

    ESP8266自動下載電路分析

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

    串口2 esp8266測試程序下載

    串口2 esp8266測試程序下載
    發表于 12-30 10:38 ?21次下載

    ESP8266/ESP32自動下載原理

    前一段時間需要自己制作一片ESP32單板,成本和封裝考慮,計劃選擇CH340E作為USB轉串口芯片,ESP8266/ESP32的單板一般都有自動下載
    的頭像 發表于 10-10 15:06 ?3660次閱讀

    NodeMCU家庭自動化(ESP8266)

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

    ESP8266自動下載電路分析

    網上找到了一些解釋,然而并不能讓我信服……可能大多參考了正點原子的自動下載電路原理,但人家的自動下載功能也需要 mcu-isp 軟件配合才能實現啊……等等,吐槽之中獲得靈感,
    的頭像 發表于 11-25 09:29 ?1057次閱讀
    <b class='flag-5'>ESP8266</b><b class='flag-5'>自動</b><b class='flag-5'>下載</b>電路<b class='flag-5'>分析</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>