一. 準備
1. FlyMcu 軟件,選擇DTR高電平復位,RTS低電平進入BootLoader
2. 原理圖增加USB轉串口芯片(CH340G)
二.說明
STM32三種啓動模式對應的存儲介質均是芯片內置的,它們是:
1)主閃存存儲器 = 芯片內置的Flash。
2)系統存儲器 = 芯片內部一塊特定的區域,芯片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程序。這個區域的內容在芯片出廠後沒有人能夠修改或擦除,即它是一個ROM區。
3)內置SRAM = 芯片內置的RAM區,就是內存啦。
一般情況,BOOT0爲0,MCU從flash啓動。
ISP模式下,先使BOOT0爲1,BOOT1爲0,再給MCU一個復位信號,四個clk週期後,MCU鎖存BOOT0引腳的狀態,此時MCU將從系統存儲器啓動,通過執行MCU內部固化的ISP下載引導程序,實現串口在線編程(必須通過USART1接收數據)。
三. CH340G時序
1. DTR #和 RTS#電平,使用萬用表測量,在默認狀態,DTR#和RTS#引腳均輸出高電平,由上面的電路圖可知,此時Q1截止,Q2截止,因此BOOT0爲0,RST#爲高電平,MCU可正常從系統存儲器(主flash)啓動。
2. 啓動下載時,DTR#維持高,RST#拉低,此時Q1導通,Q2導通,此時BOOT0爲1,MCU復位腳拉低(有效),使MCU復位;
3. 100毫秒後,DTR拉低,釋放復位,MCU將從系統存儲器啓動,自動進入ISP模式,執行MCU內部ISP引導程序,MCU和MCUISP上位機下載軟件進行通信(代碼下載);
4. 等到代碼下載結束時,RST#先變成高電平,DTR再變成高電平,Q1截止、Q2截止,下載結束。
5. 如果在MCUISP軟件上選擇“編程後執行”,DTR先變成高電平,使MCU的RST腳變低(復位),RST#再變成高電平,使MCU的RST腳拉高(釋放復位),BOOT0爲0,此時MCU復位後執行主flash程序,實現“編程後執行”步驟。
附CH340G引腳說明