- STM32庫開發實戰指南:基于STM32F103(第2版)
- 劉火良 楊森
- 1825字
- 2019-03-02 02:26:45
第3章 如何用串口下載程序
秉火STM32F103VET6(指南者)自帶串口下載電路,配合上位機可實現一鍵ISP下載,不需要修改開發板上的BOOT設置。與仿真器Fire-Debugger相比,ISP(In-System Programming,在系統可編程)只能下載程序,不能在線調試且下載速度慢。
3.1 安裝USB轉串口驅動
秉火的STM32開發板用的USB轉串口的驅動芯片是CH340,要使用串口,需要先在電腦中安裝USB轉串口驅動:CH340版本,見圖3-1。驅動可在網上搜索下載,或者使用我們論壇里面提供的。Windows 7用戶請用管理員身份安裝。如果不能安裝成功,上網查找原因自行解決。

圖3-1 串口連接示意圖
如果USB轉串口驅動安裝成功,USB線與板子連接沒有問題,依次選擇“計算機→管理→設備管理器→端口”,可識別到串口。
如果識別不了串口,請檢查USB線是否完好,或換一根USB線試試。
3.2 硬件連接
如圖3-2所示,用USB線連接電腦和開發板的“USB轉串口”接口,給開發板上電(見圖3-3)。

圖3-2 USB轉串口驅動安裝成功

圖3-3 指南者串口連接圖
3.3 開始下載
打開mcuisp軟件,配置如下:①選擇“搜索串口”,設置波特率為460800(盡量不要設置得太高);②選擇要下載的HEX文件;③勾選“校驗”“編程后執行”復選框;④選擇“DTR低電平復位,RTS高電平進Boot Loader”選項;⑤開始編程,見圖3-4。如果出現一直連接的情況,按一下開發板上的復位鍵即可。下載成功界面見圖3-5。

圖3-4 ISP下載配置

圖3-5 ISP下載成功
3.4 ISP一鍵下載原理分析
3.4.1 ISP簡介
ISP指電路板上的空白元器件可以編程寫入最終用戶代碼,而不需要從電路板上取下元器件。已經編程的器件也可以用ISP方式擦除或再編程。
使用ISP的時候需要用到自舉程序(Boot Loader),自舉程序存儲在STM32器件的內部自舉ROM(系統存儲器)中。其主要任務是通過一種可用的串行外設(USART、CAN、USB、I2C等)將應用程序下載到內部Flash存儲器中。每種串行接口都定義了相應的通信協議,其中包含兼容的命令集和序列。
3.4.2 ISP普通下載
現在我們針對USART1的ISP進行分析,通常的ISP下載的步驟如下:
1)通過USB轉串口線將電腦連接到STM32的USART1,并打開電腦端的上位機;
2)設置跳線保持BOOT0為高電平,BOOT1為低電平;
3)復位單片機使其進入Boot Loader模式,通過上位機下載程序;
4)下載完畢,設置跳線保持BOOT0為低電平,BOOT1為低電平;
5)復位單片機即可啟動用戶代碼,正常運行。
以上步驟有個不好的地方就是:下載程序需要跳線及復位操作,很繁瑣。理解了ISP的原理,就理解一鍵ISP了。它需要做的事情就是用上位機去控制BOOT0引腳和單片機的復位引腳,電路圖見圖3-6。

圖3-6 ISP一鍵下載電路圖

圖3-6(續)
3.4.3 BOOT配置
在ISP下載電路中,需要配置BOOT引腳,BOOT引腳不同的配置會產生不同的啟動方式,具體見表3-1。
表3-1 BOOT配置

3.4.4 ISP一鍵下載
USB轉串口大家都很熟悉,一般是用RXD和TXD這兩個引腳。在一鍵ISP電路中,我們需要用USB轉串口的芯片的DTR引腳和RTS引腳來控制單片機的BOOT0和NRST,原理如下:
1)通過上位機控制U6(CH340G)的RTS引腳為低電平,Q1導通,BOOT0的電平上拉為高電平。
2)通過上位機控制U6(CH340G)的DTR引腳為高電平,由于RTS為低電平,Q2導通,U8的2引腳為低電平,U18為一個模擬開關,使能端由4引腳控制,默認為高電平,U18的1引腳和2引腳導通,所以NRST為低電平,系統復位。
3)單片機進入ISP模式,此時可以將DTR引腳設置為低電平,RTS設置為高電平。Q1和Q2處于截止狀態,BOOT0和NRST還原默認電平。
4)上位機將程序下載到單片機,下載完畢之后,程序自動運行。
5)有人認為U18、Q1、Q2是多余的,用U6的RTS和DTR直接控制也可以。正常情況下,這樣理解沒有問題,但是他們忽略了一點,就是在單片機上電瞬間,如果USB轉串口連接了電腦,DTR和RTS的電平是變化的,如果處理不好,單片機會一直進入ISP模式,或者系統會復位多次,這種情況是不允許的。
6)于是,就有了全新的一鍵ISP電路。我們主要是分析上電瞬間的邏輯關系,單片機上電時通過示波器觀察波形得知DTR和RTS的電平是變化的,但是也有一個規律就是:當RTS為低電平的時候,DTR也是低電平,因此一般情況下Q2不會導通,但由于這兩個IO口的電平存在“競爭冒險”,會出現RTS的下降沿剛好遇到DTR的上升沿,這個時候Q2導通,導致系統復位,而BOOT0此時有可能也為高電平,就會進入ISP模式。這個是不受我們控制的,而我們不想系統出現這樣的情況,因此加入了模擬開關來切斷這種干擾。
7)加入模擬開關U18,通過控制U18的4引腳的開關來達到隔離干擾電平的目的。下面我們分析一下延時開關電路,上電瞬間,電容C65通過電阻R18來充電,由于電阻100kΩ很大,電容的充電電流很小,電容充電達到U18的4引腳的有效電平2V大概耗時1秒,在這個1秒時間內U18的模擬開關是斷開的,因此RTS和DTR的干擾電平不會影響到系統復位。這樣就保證了系統正常運行。
- 鴻蒙生態:開啟萬物互聯的智慧新時代
- Google系統架構解密:構建安全可靠的系統
- Linux內核完全注釋(20周年版·第2版)
- 新手易學:系統安裝與重裝
- Windows Phone 8 Application Development Essentials
- 移動應用UI設計模式(第2版)
- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- 計算機系統的自主設計
- Red Hat Enterprise Linux 6.4網絡操作系統詳解
- AWS SysOps Cookbook
- Linux軟件管理平臺設計與實現
- 鴻蒙操作系統設計原理與架構
- Mastering Sass
- 15分鐘!畫出我的漫畫角色:賣萌篇
- 程序員必讀經典(算法基礎+計算機系統)