官术网_书友最值得收藏!

第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的干擾電平不會影響到系統復位。這樣就保證了系統正常運行。

主站蜘蛛池模板: 桂阳县| 象州县| 上高县| 台山市| 噶尔县| 根河市| 醴陵市| 镇巴县| 密云县| 庆阳市| 宣化县| 睢宁县| 宁安市| 常州市| 明溪县| 南通市| 宁波市| 长治县| 威宁| 长治县| 肃北| 阜康市| 修文县| 福州市| 苍南县| 宽甸| 旬邑县| 嘉黎县| 云林县| 昌都县| 兴和县| 鄱阳县| 台江县| 晋江市| 赤壁市| 康乐县| 尼玛县| 河西区| 东平县| 汉沽区| 东丰县|