前幾篇有關 STM32的文章,都是透過 CP2102 UART 轉 TTL 的線,接 STM32 的 PA9 及 PA10 將程式上傳,但每次要上載程式都要切換到編輯模式,上傳前要按一下開發板上的 Reset 鍵,才能正常上傳程式。如要斷開電源後程式仍可正常操作,就必須切換回操作模式,將 BOOT0 的 JUMP 切換回 0 的位置。想說如果可以使用 STM32F103C8T6 上的 Micro USB Port 來上傳程式,應該會方便很多。
要下載 bootloader 到 STM32F103C8T6 ,除了使用比較複雜的 STM32CubeProgrammer 軟體外,還可以使用操作比較簡單的 ST Flash Loader 來替代,這也是由意法半導體提供的,可以從 原廠網站 下載該程式,下載前需先使用申請的帳號密碼登入網站,才能進行下載。除了 Flash Load程式外,還要下載 Maple二進位韌體檔,可到 這裡下載名為「generic_boot20_pc13.bin 」的檔案。
看到 LeafLabs 開發了一個可以在 ARM cortex M3 相關的晶片,支援 USB 上傳程式的韌體 Maple Bootloader,覺得很方便,剛好這幾天有空的時間研究一下如何將 Maple Bootloader 下載到我的 STM32F103C8T6,實際也運作成功了,紀錄一下相關的操作方法,有關支援的相關文件,可參考 這裡 。
[接線圖]
CP2102 | STM32F103C8T6 |
---|---|
GND | GND |
3V3 | 3.3V |
RX | PA9 |
TX | PA10 |
[使用ST Flash Loader工具上傳USB Bootloader]
在下載前,STM32F103C8T6 開發板上的 Boot0,要設定 JUMP 在 1 的位置,才可以將 Bootloader 下載到開發板。要下載 bootloader 到 STM32F103C8T6 ,除了使用比較複雜的 STM32CubeProgrammer 軟體外,還可以使用操作比較簡單的 ST Flash Loader 來替代,這也是由意法半導體提供的,可以從 原廠網站 下載該程式,下載前需先使用申請的帳號密碼登入網站,才能進行下載。除了 Flash Load程式外,還要下載 Maple二進位韌體檔,可到 這裡下載名為「generic_boot20_pc13.bin 」的檔案。
如果您的開發板不是 STM32F103C8T6 ,也可以到 Github: rogerclarkmelbourne / STM32duino-bootloader 下載對應的檔案。該下載哪個名稱的檔案,可依照 LED 連接到開發板的接腳判斷檔名,以上述的開發板為例,LED燈接腳在PC13,可找到檔案末名稱為PC13的檔案進行下載。
下載完成後,會看到一個 en.flasher-stm32 的壓縮檔,解壓縮後,點擊執行「flash_loader_demo_v2.8.0.exe」程式進行安裝。安裝完成後,執行功能表的「Demonstrator GUI」,或執行 C:\Program Files (x86)\STMicroelectronics\Software\Flash Loader Demo 目錄下的「STMFlashLoader Demo.exe」。
執行 Flash Loader Demo程式,設定連線的通訊埠,按下 Next 繼續:
顯示 Flash Size 為 128K,按下 Next 繼續:
在Target下拉選擇[STM32F1_Med-density_128K],按下 Next 繼續:
在[Download from file]右方點選 ... ,選擇下載的檔案位置,按下 Next 繼續:
大約過了幾秒鐘,看到一行亮綠色[Download operation finished successfully],表示已經下載成功,按下 Close 繼續:
下載的壓縮檔,解壓縮後,將目錄名稱改為「Arduino_STM32」,複製此目錄到「C:\Users\<登入名稱>\Documents\Arduino\hardware」目錄中。如果目錄 Arduino\hardware 不存在,則需建立這個目錄。
在Windows功能表選單,找到 [Windows 系統]下,對[命令提示字元]按右鍵選擇[以系統管理員身份執行],在視窗命令列輸入(登入名稱要換成自己電腦登入的使用者帳號):
(註:我的文件夾已移至D:\Documents,請忽略上圖的路徑位置。)
如果安裝成功,可以先看一下裝置管理員的驅動程式是否正常,並取得連線埠資訊,如下圖紅框處:
接著開啟 STM32筆記(1):我的第一個STM32程式,使用Arduino IDE 介面這篇的 LED 測試程式,上傳看看是否可以成功?如果可以看到以下畫面,就表示上傳成功,且可正常執行程式了。
執行 Flash Loader Demo程式,設定連線的通訊埠,按下 Next 繼續:
顯示 Flash Size 為 128K,按下 Next 繼續:
在Target下拉選擇[STM32F1_Med-density_128K],按下 Next 繼續:
在[Download from file]右方點選 ... ,選擇下載的檔案位置,按下 Next 繼續:
大約過了幾秒鐘,看到一行亮綠色[Download operation finished successfully],表示已經下載成功,按下 Close 繼續:
[安裝Maple DFU驅動程式]
在繼續進行之前,需要先下載USB連線的驅動程式。首先到 Github rogerclarkmelbourne / Arduino_STM32下載的相關工具。下載的壓縮檔,解壓縮後,將目錄名稱改為「Arduino_STM32」,複製此目錄到「C:\Users\<登入名稱>\Documents\Arduino\hardware」目錄中。如果目錄 Arduino\hardware 不存在,則需建立這個目錄。
在Windows功能表選單,找到 [Windows 系統]下,對[命令提示字元]按右鍵選擇[以系統管理員身份執行],在視窗命令列輸入(登入名稱要換成自己電腦登入的使用者帳號):
C:\>CD C:\Users\<登入名稱>\Documents\Arduino\hardware\Arduino_STM32\drivers\win再繼續執行批次檔:install_drivers.bat安裝 Maple DFU驅動程式,再繼續執行:install_STM_COM_drivers.bat安裝 Maple 串列驅動程式。
(註:我的文件夾已移至D:\Documents,請忽略上圖的路徑位置。)
如果安裝成功,可以先看一下裝置管理員的驅動程式是否正常,並取得連線埠資訊,如下圖紅框處:
[使用Arduino IDE上傳程式]
要開始使用 Maple Bootloader 前,要記得將 STM32F103C8T6 開發板上的 Boot0 JUMP 設定調回 0 的位置,才可以將將程式上傳到開發板。回到 Arduino IDE 主畫面設定開發板:選擇 [工具 Tools] → [開發板 Board] → [STM32F1 Board(STM32duino)] → [Generic STM32F103C6 / fake STM32F103C8] 。
回到 Arduino IDE 設定:選擇 [工具 Tools] → [Upload method:] → [STM32duino bootloader]。
繼續設定連接序列埠:選擇 [工具 Tools] → [序列埠: COM7(Maple Mini)] → [COM7(Maple Mini)]。這裡的COM7,依每台電腦不同的連線埠而更改。
接著開啟 STM32筆記(1):我的第一個STM32程式,使用Arduino IDE 介面這篇的 LED 測試程式,上傳看看是否可以成功?如果可以看到以下畫面,就表示上傳成功,且可正常執行程式了。
張貼留言