網頁最後修改時間:2020/09/01
從[1.1]網頁,開始說明如何以 Silicon Labs 的 EFM8 系列晶片(EFM8BB21F16G-QFN20)為主角,撰寫如何建置 8-bit Microcontrollers 的開發環境、如何建立專案以及如何進行韌體燒錄一系列的網頁。此系列包含:
- Silicon Labs Simplicity Studio 8-bit Microcontrollers 開發環境建置;
主要說明在 Simplicity Studio 建置 Silicon Labs 8-bit Microcontrollers 開發環境時所需要的軟體的下載和安裝。 - Keil C51 的 Silicon Labs C8051 / EFM8 開發環境建置;
主要說明在 Keil µVision 建置 Silicon Labs 8-bit Microcontrollers 開發環境時所需要的軟體的下載和安裝。 - 如何建立一個 Simplicity Studio 專案檔;
- 如何匯入、修改和編譯官方(或既有的)Simplicity Studio v4 專案範例;
說明如何匯入已有的 Simplicity Studio 專案檔,進行編譯和修改。 - Simplicity Studio v4 全新專案建置範例;
說明如何從頭建置一個新的 Simplicity Studio v4 專案檔。 - 如何匯入 Simplicity Studio v4 專案檔至 Keil C51;
說明如何匯入 Simplicity Studio v4 專案檔至 Keil C51,進行編譯和修改。 - 離線與 ISP(UART)燒錄;
燒錄 .hex 檔的說明,和使用 ISP(UART)燒錄韌體的方法。
從[2.1.1]開始,連續三篇的網頁,都會用來說明 EFM8BB21F16G-QFN20 這顆晶片韌體專案的建立步驟和方法。而這一篇,是針對如何匯入 Simplicity Studio v4 專案檔至 Keil C51做說明。
EFM8BB21F16G-QFN20 Package Marking(not included bee icon) |
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
本篇的 Keil 專案檔建立,採用來自 [2.1.2] 網頁的 EFM8BB21F16G-C-QFN2-_Demo01 專案。因為只需要做專案的設置,而不需要做任何程式方面的變更,所以請依照本篇網頁裡面步驟自行建置。
有購買商品的使用者,網頁中所需相關資料已放置於雲端硬碟({商品雲端資料夾} / 程式碼 / 部落格範例 / [2.2]-如何匯入 Simplicity Studio v4 專案檔至 Keil C51 / Keil-Project_EFM8BB21F16G-C-QFN20_Demo01.zip),請自行下載使用!
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
*********************************************************************************
網頁所用到的開發板與燒錄模擬器:
*********************************************************************************
經過 1.2 Keil C51 的 Silicon Labs C8051 / EFM8 開發環境建置 裡軟體安裝的說明,想必 Keil C51 已經完成安裝,現在開始準備要進行 EFM8BB21F16G-QFN20 韌體專案的建立。
本篇 Keil 的專案建立,類似於 2.1.1 匯入 Simplicity Studio 專案的方式,主要分為下面幾個小節作為說明:
- 建立專案資料夾;
- 建立專案(Crteat a New µVision Project);
- 專案項目設定(Manage Project Item);
- 專案目標選項設定(Options for Target);
- 專案編譯與程式燒錄;
- 燒錄後的韌體測試;
開始之前,先建立幾個縮寫字:
- {SILABS_EFM8_PRJ}:表示要匯入到 Keil C51 裡的 Silabs EFM8 專案檔資料夾,假設放置於 D:\OneDrive\PTS\8051\SSSv4\EFM8BB2\EFM8BB21F16G-C-QFN20_Demo01;
- {SILABS_EFM8_DEV}:開發 EFM8 所需要的程式標頭檔和檔案資料夾,假設放置於 D:\SiliconLabs\SimplicityStudio\v4\developer;
- {KEIL_EFM8_PRJ}:Keil 專案檔資料夾,假設放置於 D:\OneDrive\PTS\8051\Keil\Silabs\EFM8BB2\EFM8BB21F16G-C-QFN20_Demo01;
根據 Simplicity Studio 的 "Project Explorer" 的專案項目列表,我們可以依此建立 Keil 的專案資料夾。
Simplicity Studio 專案項目列表 |
【建立專案資料夾】
如下,在 Keil 專案放置的資料夾中,建立如下的目錄結構。
最上層為專案名稱:EFM8BB21F16G-C-QFN20_Demo01
├─Includes ├─Project ├─inc ├─src
- Includes:包含使用到的 Silabs 官方的函式庫標頭檔;
依照下面的說明,複製下面兩個資料夾中需要的檔案到 {KEIL_EFM8_PRJ}\Includes 資料夾中。 - 複製 {SILABS_EFM8_DEV}\sdks\8051\v4.1.7\Device\EFM8BB2\inc 資料夾裡面所有的檔案到 {KEIL_EFM8_PRJ}\Includes 資料夾中。
建立專案資料夾 - 01 |
- 複製 {SILABS_EFM8_DEV}\sdks\8051\v4.1.7\Device\shared\si8051Base 資料夾中(除了 SILABS_START.A51 之外)的檔案到 {KEIL_EFM8_PRJ}\Includes 資料夾中。
建立專案資料夾 - 02 |
建立專案資料夾 - 03 |
- Project:Keil C51 專案檔檔案放置的地方,第一次儲存專案的同時,也會建立 Listings 和 Objects 這兩個資料夾;
請看下一節關於專案建立的說明。
建立專案資料夾 - 04 |
- inc:包含使用者或是軟體產生的 .h 程式碼;
複製 {SILABS_EFM8_PRJ}\inc 裡面所有檔案到 {KEIL_EFM8_PRJ}\inc 資料夾中。
建立專案資料夾 - 05 |
建立專案資料夾 - 06 |
- src:包含使用者或是軟體產生的 .c 程式碼;
複製 {SILABS_EFM8_PRJ}\src 裡面所有 .c 檔案到 {KEIL_EFM8_PRJ}\src 資料夾中。
建立專案資料夾 - 07 |
建立專案資料夾 - 08 |
- Startup:單獨用來放置 SILABS_STARTUP.A51 檔案的資料夾;
請由 {SILABS_EFM8_DEV}\sdks\8051\v4.1.7\Device\shared\si8051Base 資料夾,或{SILABS_EFM8_PRJ}\src複製 SILABS_STARTUP.A51 檔案到 {KEIL_EFM8_PRJ}\Startup 資料夾中。
完成檔案複製後的 {KEIL_EFM8_PRJ}\Startup 資料夾,如下所示。
建立專案資料夾 - 09 |
【建立專案(Crteat a new µVision project)】
點選 "Project -> New uVision Project...",開啟新建專案對話視窗。
建立專案 - 01 |
儲存專案檔的同時,會於同資料夾下再產生 Objects 和 Listings 兩個資料夾(若專案選項有做相關的設定,則會有所不同)。
建立專案 - 02 |
在該視窗左上角的下拉選單中,選擇 Silicon Labs Custom Data Base。
接著在下方 Search: 欄位中,輸入 EFM8BB21 進行篩選,然後點擊篩選之後的 EFM8BB21F16G-QFN20。
最後勾選 ☑ Use Extended Linker (LX51) instead of BL51,按下 "OK" 儲存並離開。
建立專案 - 03 |
因為我們已經自己添加了 SILABS_STARTUP.A51,所以按 "否(N)" 不添加後離開。
建立專案 - 04 |
【專案項目設定(Manage Project Items)】
回到主畫面,滑鼠右鍵點選 Target 1,下拉選單中選擇 "Manage Project Items...",開啟添加專案項目的對話視窗。
這裡主要是將專案資料夾裡面會用到的檔案,添加作為專案的項目,但不需要包含外部的標頭檔和函式庫。
專案項目設定 - 01 |
- Project Targets:
- 修改下面的 Target 1 為 EFM8BB21F16G-C-QFN20。
- Groups:
- 添加 Startup 和 src 兩個群組。
- Files:
- 選擇 Groups: Startup 添加檔案 {KEIL_EFM8_PRJ}\Startup\SILABS_STARTUP.A51;
點選 Startup 後,按 "Add Files..." 開啟檔案總管。
專案項目設定 - 02 |
- 選擇 檔案類型: Asm Source file (*.s;*.src;*.a*);
- 選擇檔案 SILABS_STARTUP.A51;
- 按 "Add" 加入檔案;
- 按 "Close" 離開;
專案項目設定 - 03 |
接著點選 Groups: 下的 src,同樣照著剛剛上面的步驟,添加相關的檔案。
專案項目設定 - 04 |
專案項目設定 - 05 |
專案項目設定 - 06 |
專案項目設定 - 07 |
【專案目標選項設定(Options for Target)】
組織好專案項目之後,接著要設定專案目標選項;也就是加入會用到的外部的標頭檔和函式庫,以及關於專案編譯、燒錄和除錯的設定。
在 EFM8BB21F16G-C-QFN20 點擊滑鼠右鍵,下拉選單中選擇 "Options for Target 'EFM8BB21F16G-C-QFN20'..."。
專案目標選項設定 - 01 |
專案目標選項設定 - 02 |
專案目標選項設定 - 03 |
有兩個路徑需要加入,先按 1 新增圖示,再按下 2 右邊的 "..." 按鈕。
專案目標選項設定 - 04 |
專案目標選項設定 - 05 |
專案目標選項設定 - 06 |
按 "OK" 關閉 "Folder Setup" 視窗,並回到專案選項設定。
專案目標選項設定 - 07 |
在 "C51" 頁籤,Include Paths 加入了剛剛添加的資料夾路徑。
專案目標選項設定 - 08 |
專案目標選項設定 - 09 |
在 "Device" 頁籤中,[v] Use Extended Linker (LX51) instead of BL51 的勾選,和 "LX51 Misc" 頁籤中,Misc controls 的設定,都是為了解決 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS 的警告問題。
另一個方法:在 "BL51 Misc" 頁籤中,disable Warning Numbers: 填入 16 亦可。
*********************************************************************************
切換到 "Debug" 頁籤,修改除錯時要使用的裝置。
專案目標選項設定 - 10 |
專案目標選項設定 - 11 |
所以請按 "OK" 關閉視窗,再把燒錄模擬器插上電腦後,重新再開啟該視窗一次。
專案目標選項設定 - 12 |
重新按下 "Settings","Target Setup" 選擇 🔘 USB Debug Adapter,然後按下 "OK" 儲存設定。
專案目標選項設定 - 13 |
專案目標選項設定 - 14 |
這裡有一點很重要必須說明:Use Target Deiver for Flash Programming 一般需要設定兩次才會成功!
所以完成設定之後,請務必關閉 "Options for Target ..." 視窗後,再次打開做確認。
一定要確保這選項設定成功!
專案目標選項設定 - 15 |
【專案編譯與程式燒錄】
完成專案項目和專案選項中的所有設定後,由於檔案已經預先都準備好了,也不需要再做撰寫或修改,現在可以進行程式的編譯了。
按下 "Build (F7)" 開始編譯程式。
專案編譯與程式燒錄 - 01 |
專案編譯與程式燒錄 - 02 |
確定燒錄模擬器還插在電腦上,將 2x5 灰色排線插到 EFM8BB2 學習開發板黑色插槽中(開發板不需要另外再接電源線),按下 "Download (F8)" 就會開始進行韌體燒錄的準備動作。
專案編譯與程式燒錄 - 03 |
按下 "是(Y)" ,開始擦除記憶體。
專案編譯與程式燒錄 - 04 |
按下 "確定" 後,就會開始進行韌體的燒錄。
專案編譯與程式燒錄 - 05 |
專案編譯與程式燒錄 - 06 |
【燒錄後的韌體測試】
這一小節展示的範例,會從 UART 輸出一段提示訊息,再等待使用者輸入一個字元,最後將該字元以 16 進位的方式輸出。
要進行韌體測試,請預先好準備 USB 轉 TTL 模組或 USB 轉 RS232 線。
根據 EFM8BB21F16G-C-QFN2_Demo01.c 裡面的說明,
// Program Description: // // This program demonstrates how to configure the EFM8BB2 to use routines // in STDIO.h to write to and read from the UART0 interface. The program // reads a character using the STDIO routine getchar(), outputs that character // to the screen, and then outputs the ASCII hex value of that character. // // Resources: // SYSCLK - 24.5 MHz HFOSC0 / 1 // UART0 - 115200 baud, 8-N-1 // Timer1 - UART0 clock source // P0.4 - UART0 TX // P0.5 - UART0 RX
第一種測試方式是使用 USB 轉 TTL 模組,直接將 USB 轉 TTL 模組的接腳,與 EFM8BB2 學習開發板兩邊的晶片接腳相連接即可,電源也使用 USB 轉 TTL 模組的不用外接;此方法不需要用到開發板上的 RS232 晶片。
兩者之間的接線,如下表所示:
第二種測試方式是使用 USB 轉 RS232 線,不過這需要預先將 EFM8BB2 學習開發板上的 RS232 晶片的 <TxD> 和 <RxD> 接腳預先連接到 <P0.5> 和 <P0.4>,然後接上 USB 轉 RS232 線到開發板上的 DB9 接頭,才能進行測試。
兩者之間的接線,如下表所示:
開啟電腦的測試軟體,按下開發板上面的紅色按鈕通電(或通電狀態下,按下開發板上的 RESET 按鈕),UART 通訊軟體中就會出現 Enter character:,然後輸入 A,接著就如下圖所示。
燒錄後的韌體測試 |
本篇,說明了如何匯入 SSv4 專案到 Keil C51 的步驟與方法,適用於傾向使用 Keil 開發 Silicon Labs 8-bit Microcontrollers 的用戶。對於初學者來說,建議使用[2.1.1]匯入專案的方式,來學習與熟悉 EFM8BB21-C-QFN20 晶片韌體程式的開發,這會比用其他方式更容易上手。有任何不懂的地方,官方有提供論壇和豐富的資料文件與應用筆記可供交流、詢問、參考與查閱。
SSv4 支援多種軟體的專案檔匯入,除了 Simplicity Studio 和 Keil C51 專案檔外,其餘沒說到的專案檔匯入步驟和方法,請自行參考官方文件或網路上的教學。
本篇是 Silicon Labs EFM8 專案建立和匯入的最後一篇,接下來我們將介紹離線燒錄和使用 UART 燒錄韌體的步驟和方法。
<< 部落格相關文章 >>
- Silicon Labs EFM8 微控制器開發環境建置 [1.1]-Simplicity Studio v4 開發環境安裝
- Silicon Labs EFM8 微控制器開發環境建置 [1.2]-Keil C51 的 Silicon Labs C8051 / EFM8 開發環境建置
- Silicon Labs EFM8 微控制器開發環境建置 [2.1.1]-如何匯入、修改和編譯官方(或既有的)Simplicity Studio v4 專案範例
- Silicon Labs EFM8 微控制器開發環境建置 [2.1.2]-Simplicity Studio v4 全新專案建置範例
- Silicon Labs EFM8 微控制器開發環境建置 [3.0]-離線與 ISP(UART)燒錄
.
.
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !