日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正点原子STM32 ISP电路分析

發(fā)布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正点原子STM32 ISP电路分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近想畫一塊STM32的開發(fā)板,需要設(shè)計ISP自動下載電路,在此借鑒正點原子的ISP自動下載電路的硬件設(shè)計。由于模擬電路不是很精通,本章結(jié)合PSpice進行仿真理解ISP的原理。

1. STM32的啟動方式

講到下載方式,一定得首先首先知道STM32的啟動方式。STM32一共有三種其中方式,如下圖所示

BOOT0BOOT1啟動方式
0X內(nèi)部FLASH
10系統(tǒng)存儲器
11內(nèi)部RAM
  • 內(nèi)部FLASH通常對應(yīng)的是我們使用下載器進行燒錄,比如常用的Jlink、STlink、DAPlink等等
  • 系統(tǒng)存儲器通常對應(yīng)的是使用串口下載,因為STM32在出廠時就內(nèi)置了一段BootLoader,這段BootLoader用于啟動串口下載的程序。
  • 內(nèi)部RAM沒用用過, 就不過多介紹

如果我們的開發(fā)板沒有一鍵下載電路的話,我們下載程序時要把boot 0的跳冒從接GND變成接VCC,然后下載,按一下復(fù)位按鍵程序才能燒錄,最后再把接VCC變成接GND,并且再按一下復(fù)位,這樣單片機才能運行程序,每一次燒錄程序都很麻煩。而當我們的單片機有了一鍵下載電路后,就不需要改變boot 0的值,直接燒錄就可以運行。下面就我個人來分析一下一鍵下載電路。串口ISP通信的詳細原理請看著: STM32 串口 ISP 原理

2. ISP自動下載電路設(shè)計

所謂自動就是指用戶無需按下復(fù)位鍵和BOOT切換來實現(xiàn)下載,一般復(fù)位管腳會接上拉電阻,默認為高電平,而BOOT0管腳一般會接下拉電阻,默認為低電平,我們需要設(shè)計一種電路,在下載的時候?qū)ESET管腳設(shè)置為低電平,BOOT0設(shè)置為高電平。怎么才能設(shè)置這兩個管腳呢?解決的思路是通過上位機去控制這兩個管腳的電平,具體怎么控制呢?這就涉及到串口的硬件流控制了,上位機是可以通過編程控制USB轉(zhuǎn)TTL芯片的相關(guān)管腳狀態(tài)的。

2.1 正點原子ISP自動下載電路設(shè)計

如下圖所示為正點原子ISP自動下載電路設(shè)計原理圖。ISP電路只要看左邊部分,下載軟件(mcuISP或者FlyMCU等軟件)需要設(shè)置為DTR的低電平復(fù)位和RTS高電平進BootLoader,此時CH340G的RTS#為低電平,DTR#為高電平,電平相反的原因是:DTR#和RTS#表示反向標志的的意思。因為我們的mcuisp軟件使用的是232標準電平,而單片機是ttl電平,他們兩者電平是相反的。所以原理圖中DTR后面加了一個#表示我們CH340G芯片此時接收到的DTR是高電平(與我圈起來的序號1中的DTR低電平相反所以是高電平)。并不是說CH340G芯片會進行邏輯非運算,僅僅只是一個提醒標志而已。由電路圖可知,Q3會導(dǎo)通,導(dǎo)致BOOT0管腳為高電平,Q2也會導(dǎo)通, 導(dǎo)致RESET管腳為低電平,此時MCU進入復(fù)位,此時就能達到我們的設(shè)置電平的作用了。

2.2 ISP自動下載電路全過程解析

如下圖所示,為mcuisp串口燒錄軟件的全過程,我們需要設(shè)置好1和3就可以實現(xiàn)自動下載了,標號2處顯示的是下載時的調(diào)試信息。從圖示我們可知分為以下幾步:

  • DTR置低、RTS置高(對應(yīng)DTR#置高、RTS#置低), 延時100ms
  • DTR置高、RTS維持高
  • 程序下載

2.2.1 DTR置低、RTS置高(對應(yīng)DTR#置高、RTS#置低) 階段

此時Q3和Q1都導(dǎo)通,BOOT0為高電平,RESET為低電平,STM32此時進入BootLoader,為燒錄程序做準備。下圖為仿真圖,注意在仿真的時候需要將RESET的上拉電阻和BOOT0的下拉電阻畫上, 不然很難分析出BOOT0和RESET的電平變化。

2.2.2 DTR置高、RTS置高(對應(yīng)DTR#置低、RTS#置低) 階段

此時Q3導(dǎo)通,Q1截止,BOOT0為高電平,RESET為高電平,釋放復(fù)位。下圖為仿真圖

經(jīng)過這兩步后就可以通過串口下載代碼了

2.3 疑問點

2.3.1 為什么需要將兩個三極管連接在一起?

這是因為Q3在這里其主導(dǎo)作用,當RTS#為低電平時,給Q2的射極提供了一個電平,若RTS#為高電平,此時不管DTR#為任何電平,Q2都不會導(dǎo)通,此時RESET為高電平。下圖為仿真結(jié)果

2.3.2 為什么需要那個IN4148二極管?

這個二極管的作用我覺得是防止手動復(fù)位電路影響到ISP自動下載電路,目前的仿真結(jié)果看不出這個結(jié)論。至于是不是得實物調(diào)試,有知道的大佬也可以麻煩告訴我

2.3.3 下載完成后RTS#是不是會自動變?yōu)楦唠娖?#xff1f;

理論上在下載程序后需要將BOOT0拉低, 此時需要Q3截止,那就是需要RTS#為高電平,但是我們沖上位機下載日志中沒看出這個調(diào)試信息, 具體得看實物的電平。

參考資料

  • stm32中的ISP一鍵下載原理分析
  • STM32 串口 ISP 原理

總結(jié)

以上是生活随笔為你收集整理的正点原子STM32 ISP电路分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。