硬件環境如下:
樂鑫官方開發板 ESP8266-DevKitC
板載自動下載電路如下:
開發板入門指南的描述如下:
顯然,選擇自動下載功能后,RTS 就是 Auto_RTS
此處,ESP8266 的自動下載涉及 CP2102 的兩個引腳,DTR 和 RTS
DTR 引腳是 MODEM 聯絡輸出信號,數據終端就緒,低有效;
RTS 引腳也是 MODEM 聯絡輸出信號,請求發送,低有效;
注意,所謂 MODEM 聯絡信號都是由計算機應用程序控制并定義其用途的
ESP8266工作模式
下載模式:芯?啟動時,若 IO0 為低電平,芯?會進?下載模式;
運?模式:芯?啟動時,若 IO0 為?電平,芯?會進?運?模式;
上圖的邏輯關系如下:
顯然,這種邏輯關系下 EN 和 IO0 不可能同時為 0,
然而,ESP8266 進入下載模式卻需要如下條件:
那么,問題來了,單靠以上電路 ESP8266 無法進入下載模式。
網上找到了一些解釋,然而并不能讓我信服……可能大多參考了正點原子的自動下載電路原理,但人家的自動下載功能也需要 mcu-isp 軟件配合才能實現啊……等等,吐槽之中獲得靈感,ESP8266 不也是有下載軟件的嘛,就算在命令行下不也是有下載腳本的嘛。
顯然,下載軟件是看不出所以然的。
那么,找到官方 SDK 中的下載腳本源碼
ESP8266_RTOS_SDK/components/esptool_py/esptool/esptool.py
隱藏的好深,看程序的注釋其實就差不多了
利用 RTS 控制 EN 或 nRST,因為它們都是低電平觸發芯片復位;
利用 DTR 控制 IO0,低電平啟動則進入下載模式;
注意,此處 True 為低電平,False 為高電平
程序解析如下:
設置 DTR = 1,RTS = 0,此時 Q1 導通,Q2 截止,EN = RTS = 0,IO0 = 1,芯片掉電復位;
延時 100ms,為了確保 EN 為低電平,原因嘛很簡單,因為 EN 附近有一個 RC 電路,充放電都是需要時間的
例如低電平為 0.25VCC,則由高電平放電至低電平需要的時間可按如下公式計算:
此處,t ≈ 0.29ms,延時 100ms 綽綽有余。
設置 DTR = 0,RTS = 1,此時 Q1 截止,Q2 導通,EN = 1,IO0 = 0,芯片重新上電,由于 IO0 為低電平,芯片進入下載模式;
延時 50ms,為了確保 EN 為高電平
同理,
此處,t ≈ 1.39ms,延時 50ms 綽綽有余
設置 DTR = 1,RTS = 1,此時 Q1 導通,Q2 導通,EN = 1,IO0 = 1,確保下載完成后再復位芯片正常運行;
補充一下,不點擊下載按鈕的話,實際測試 DTR 和 RTS 均為高電平,也就是說不會影響 ESP8266 芯片的正常運行。
-
電路分析
+關注
關注
62文章
519瀏覽量
98892 -
開發板
+關注
關注
25文章
5116瀏覽量
97917 -
RTS
+關注
關注
0文章
22瀏覽量
14366
原文標題:ESP8266自動下載電路分析
文章出處:【微信號:電子設計寶典,微信公眾號:電子設計寶典】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論