一、實(shí)驗(yàn)開(kāi)始之前
試驗(yàn)開(kāi)始之前,非常感謝三創(chuàng)電子舉辦的“新年搶樓,送板子”活動(dòng),有幸獲得JLINK、ST-LINK以及STM32F103C8Mini開(kāi)發(fā)板各一塊,雖然有散件待焊,常年奮斗在硬件開(kāi)發(fā)的熟手們并非難事,一手烙鐵,一手焊錫,不費(fèi)吹灰之力很快就能將其焊接好。 因?yàn)镴-LINK是 ARM-OB版本,不支持JTAG(其實(shí)也不是不支持,親測(cè)該型J-LINK 的JTAG不能提供3.3V供電,對(duì)于熟悉JTAG引腳接口的人士,可以飛線或外部供電使用),因此只焊接4個(gè)SWD接口即可,不過(guò)焊上20PIN的標(biāo)準(zhǔn)JTAG接口也未嘗不可,待解決電源供電的引腳后,也能支持通過(guò)JTAG下載程序使用了。 二、實(shí)驗(yàn)過(guò)程
0、更新ST-LINK固件和JLINK固件
A、ST-LINK固件升級(jí) 剛拿到的ST-LINK固件版本并非是最新的,能與機(jī)器上的ST-LINK驅(qū)動(dòng)完美適配,因此需要使用st-linkv2_upgrade 工具對(duì)其進(jìn)行固件更新。固件更新工具下載地址如下:
用Mini USB連接ST-LINK后,運(yùn)行EXE文件,點(diǎn)擊DeviceConnect后,可以得到當(dāng)前固件版本和更新固件版本(因我這里是最后寫的調(diào)試環(huán)境,固版本號(hào)始一直的,諸位未升級(jí)固件的版本號(hào)略有不同),點(diǎn)擊Yes后即可更新固件。
B、J-LINK ARM OB固件升級(jí) 1)、下載J-LINK驅(qū)動(dòng) 下載后安裝很簡(jiǎn)單,可以通過(guò)下一步、下一步安裝到系統(tǒng)中。若已經(jīng)安裝有J-LINK驅(qū)動(dòng)的可以跳過(guò)這步,直接升級(jí)固件。 2)、恢復(fù)到一個(gè)低版本的J-LINK固件 驅(qū)動(dòng)下載并按轉(zhuǎn)好后,使用Mini USB連接。J-LINK OB固件恢復(fù)出廠設(shè)置,打開(kāi)“開(kāi)始”菜單--〉“SEGGER” ---〉<版本號(hào)>---〉“J-LinkCommander”,并輸入 exec invalidateFw(手動(dòng)降級(jí)命令)如下圖:
然后會(huì)彈出一個(gè)更新固件的對(duì)話框,選擇 yes 進(jìn)入更新
當(dāng)看見(jiàn) new firmware bootedsuccessfully 后,現(xiàn)在固件已經(jīng)還原為以前較低的版本了。 3)、更新固件 連接上J-LINK后,啟動(dòng)Keil ,啟動(dòng) “Flash”----〉Configure Flash Tools后,
選擇Debug標(biāo)簽頁(yè),在Use下拉框中選擇 J-LINK后點(diǎn)擊Settings。
在彈出配置菜單后提示后,提示有固件更新的對(duì)話框,點(diǎn)擊“是”。 系統(tǒng)會(huì)根據(jù)當(dāng)前的J-LINK驅(qū)動(dòng)自動(dòng)監(jiān)測(cè)并更新J-LINK固件。
更新固件后,J-LINK配置窗口顯示出了相關(guān)的配置信息,選擇SW調(diào)試方式后,一切準(zhǔn)備工作就做好了。
1、使用CubeMX輔助創(chuàng)建STM32F103C8 Mini開(kāi)發(fā)板源代碼
Mini開(kāi)發(fā)板上有一個(gè)PC13引腳連接的LED燈,用CubeMX創(chuàng)建一個(gè)STM32F103C8Mini開(kāi)發(fā)板的工程。MCU選擇 STM32F103C8Tx的芯片。 選擇好后點(diǎn)擊OK。界面中出現(xiàn)了芯片的引腳的分布圖。 選擇左上角的PC13,在下拉菜單中選擇GPIO_Output。 選擇SYS節(jié)點(diǎn),Debug,選擇Trace-Asynchronous_SW選項(xiàng)。 第二頁(yè)時(shí)鐘配置默認(rèn),第三頁(yè)Configuration,選擇GPIO按鈕,在彈出菜單中選中列表中的PC13,編輯下方的PC13配置參數(shù),點(diǎn)擊OK。
選擇Project,點(diǎn)擊Project Settings。選擇項(xiàng)目的保存目錄和項(xiàng)目名稱,并選擇IDE的(這里選擇MDK-ARM V5),選好后點(diǎn)擊OK,如下圖: 參數(shù)選擇好后就創(chuàng)建代碼,Project--->GenerateCode
在創(chuàng)建源代碼進(jìn)度條完成后,彈出代碼成功創(chuàng)建的對(duì)話框,點(diǎn)擊OpenProject用MDK程序打開(kāi)項(xiàng)目。 打開(kāi)項(xiàng)目后,在Main.c文件中增加下列內(nèi)容: ....... /* USER CODE BEGIN Includes */ #include "main.h" ...... /* USER CODE BEGIN 0 */ uint8_t sta = ON; static enum Enum_Delay delay = Delay_512; void LED_Glisten(); /* USER CODE END 0 */ ...........
|
............. /* USER CODE BEGIN 3 */ LED_Glisten(); ............
/* USER CODE BEGIN 4 */ void LED_Glisten() { LED(sta); sta = !sta; HAL_Delay(delay); } /* USER CODE END 4 */
|
在INC目錄中新增一個(gè)main.h文件
#ifndef MAIN_H_ #define MAIN_H_
enum Enum_Delay { Delay_512 = 512, Delay_256 = 256, Delay_128 = 128, Delay_64 = 64, Delay_32 = 32, Delay_16 = 16, Delay_8 = 8, Delay_4 = 4, Delay_2 = 2, Delay_1 = 1, Delay_0 = 0 };
#define ON 1 #define OFF 0
#define LED(STA) (STA)?HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET)
#endif
|
這樣一個(gè)LED閃亮的程序就制作好了,經(jīng)過(guò)編譯后就能下載到MINI開(kāi)發(fā)板中了。 2、ST-LINK 與STM32F103C8 Mini開(kāi)發(fā)板連接用跳線冒將Boot0和Boot1都連接到0條線柱上(接地),使用ST-LINK與F103C8Mini連接,連接方式如下圖:
上圖20PIN接口三角標(biāo)識(shí)的是第一腳,Reset和TDO引腳是可選連接,連接好后,打開(kāi)"STM32 ST-LINK Utility"軟件,在點(diǎn)擊Target---〉Connect連接后,顯示如下圖:
這樣就能通過(guò)ST-LINK擦除MINI開(kāi)發(fā)板上的程序,給開(kāi)發(fā)板下載程序了~~~~,當(dāng)然ST-LINK的用法不僅如此,在KEIL軟件中,可以通過(guò)ST-LINK進(jìn)行聯(lián)機(jī)調(diào)試。連接上ST-LINK后,啟動(dòng)Keil ,啟動(dòng) “Flash”----〉Configure Flash Tools后。選擇Debug標(biāo)簽頁(yè),在Use下拉框中選擇 ST-LINK后點(diǎn)擊Settings。
選擇Ort為SW,點(diǎn)擊確定,這時(shí)就可以使用ST-LINK調(diào)試代碼了。
選擇Debug---〉Start/Stop Debug Session 對(duì)前面小節(jié)中編寫的代碼進(jìn)行調(diào)試。
3、JLINK 與STM32F103C8 Mini開(kāi)發(fā)板連接用跳線冒將Boot0和Boot1都連接到0條線柱上(接地),使用J-LINK與F103C8Mini連接,連接方式如下圖:
上圖20PIN接口三角標(biāo)識(shí)的是第一腳,使用的J-LINK ARM-OB 的SWO方式與MINI開(kāi)發(fā)板連接。連接好后,打開(kāi)MDK軟件,選擇Debug標(biāo)簽頁(yè),在Use下拉框中選擇J-LINK后點(diǎn)擊Settings。
選擇Ort為SW,點(diǎn)擊確定,這時(shí)就可以使用J-LINK調(diào)試代碼了。
選擇Debug---〉Start/Stop Debug Session 對(duì)前面小節(jié)中編寫的代碼進(jìn)行調(diào)試。
4、ISP與STM32F103C8 Mini開(kāi)發(fā)板連接使用ST-LINK和J-LINK都需要芯片的Boot0和Boot1置于低點(diǎn)平。除此之外,還有從SRAM啟動(dòng)和系統(tǒng)存儲(chǔ)器啟動(dòng)的方式,詳細(xì)設(shè)置如下表:
STM32三種啟動(dòng)模式對(duì)應(yīng)的存儲(chǔ)介質(zhì)均是芯片內(nèi)置的,它們是: | | | 芯片內(nèi)置的Flash,即主存儲(chǔ)器Flash | | | 芯片內(nèi)置的SRAM 區(qū),就是內(nèi)存啦 | | | 芯片內(nèi)部一塊特定的區(qū)域,叫做系統(tǒng)存儲(chǔ)器。芯片出廠時(shí)在這個(gè)區(qū)域預(yù)置了一段Bootloader,就是通常說(shuō)的ISP程序。這個(gè)區(qū)域的內(nèi)容在芯片出廠后沒(méi)有人能夠修改或擦除,即它是一個(gè)ROM 區(qū)。 |
我們可以設(shè)置Boot0為高點(diǎn)平, Boot1為低點(diǎn)平使用ISP來(lái)連接開(kāi)發(fā)板,Boot0、Boot1如下圖所示:
設(shè)置好BOOT0、Boo1條線帽后(并非下圖照片中的設(shè)置),用下圖連接方法來(lái)連接一個(gè)USB轉(zhuǎn)TTL串口的工具(如:CH340G等芯片工具)。
做好Boot0=1,Boot1=0準(zhǔn)備,用串口TTL連接到MINI主板的準(zhǔn)備工作后,連接USB,并啟動(dòng)Demonstrator GUI 軟件。
在PortName的下拉框中選擇正確CH340G工具所在的端口號(hào)后,點(diǎn)擊下一步;
當(dāng)出現(xiàn)“Targetis readable.....”時(shí),代表已經(jīng)于MINI開(kāi)發(fā)板芯片連接上了,點(diǎn)擊下一步;
這里就通過(guò)軟件讀取到MINI開(kāi)發(fā)板的上STM32F103C8芯片內(nèi)部的Flash信息,每個(gè)Flash塊大小1K,Page0到Page63總共64個(gè)塊區(qū)(地址0x0800,0000~0x0800,FFFF)。點(diǎn)擊下一步;
這里我們可以進(jìn)行Flash擦除;或者下載HEX文件到Flash中進(jìn)行程序更新;或者更新設(shè)備中的文件;或者進(jìn)行保護(hù)設(shè)置;或編輯Flash的字節(jié)信息等功能。
三、實(shí)驗(yàn)后的心得
在本文的試驗(yàn)里,介紹了3種基本與開(kāi)發(fā)板的鏈接方式,分別是ST-LINK、J-LINK以及TTL串口的ISP方式連接。通過(guò)這三種方式,在項(xiàng)目研發(fā)、產(chǎn)品設(shè)計(jì)時(shí),就能通過(guò)開(kāi)發(fā)工具實(shí)現(xiàn)軟件開(kāi)發(fā)、程序調(diào)試等工作,以便對(duì)芯片內(nèi)部或電路板上各種硬件資源進(jìn)行操作;在某些產(chǎn)品設(shè)計(jì)中,還需要將這些接口預(yù)留出來(lái)便于軟件下載與升級(jí)。
本文PDF文檔下載:
6、STM32F103C8 Demo Board試驗(yàn)心得.pdf
(2.18 MB, 下載次數(shù): 21)
2016-6-17 17:03 上傳
點(diǎn)擊文件名下載附件
|