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