網頁最後修改時間:2020/08/25
從
[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)燒錄韌體的方法。
從這一篇開始,連續三篇的網頁,都會用來說明 EFM8BB21F16G-QFN20 這顆晶片韌體專案的建立步驟和方法。而這一篇,是針對如何匯入、修改和編譯官方(或既有的)Simplicity Studio v4 專案的建立步驟做說明。
|
EFM8BB21F16G-QFN20 Package Marking(not included bee icon) |
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
本篇使用的程式碼,是直接由 Simplicity Studio v4 的安裝目錄中匯入,除了硬體組態檔需要新增之外,程式碼沒有做任何修改!所以不提供此匯入的專案檔,請依照此篇的說明自行建置。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
*********************************************************************************
網頁所用到的開發板與燒錄模擬器:
*********************************************************************************
經過
1.1 Silicon Labs Simplicity Studio 8-bit Microcontrollers 開發環境建置 裡軟體安裝的說明,想必 Simplicity Studio v4 已經完成安裝,現在開始準備要進行 EFM8BB21F16G-QFN20 韌體專案的建立。
我將 Simplicity Studio v4 專案檔的建立分為兩個單元做說明:第一個,是以如何匯入既有的 Simplicity Studio v4 專案為主題,來說明匯入的步驟;第二個,則是以如何建立一個全新的 Simplicity Studio v4 專案為主題,從頭開始來說明建立的步驟。這兩個部分的差異不多,只有前面幾個步驟不同而已,後面的步驟就都很雷同了。
每個單元為了解講的方便,再細分為下面幾個小部份:
- 如何匯入、修改和編譯官方(或既有的)SSv4 專案範例;
- 匯入專案檔;
- 變更晶片型號;
- 創建新的硬體組態檔(.hwconf);
- 修改硬體組態檔;
- 韌體一鍵燒錄;
- EFB8BB2_ExternalInterrupts 韌體測試;
- Simplicity Studio v4 全新專案建置範例;
- 建立新專案;
- 修改硬體組態檔;
- 撰寫程式碼;
- 韌體一鍵燒錄;
- EFM8BB21F16G-C-QFN2-_Demo01 韌體測試;
做為參考的文件有:
開始之前,先建立幾個縮寫字:
- SSv4:代表 Simplicity Studio v4 軟體;
- {SilabsSSv4}:代表 Simplicity Studid v4 安裝的目錄;
【如何匯入、修改和編譯官方(或既有的)SSv4 專案範例】
Simplificity Studio 的 Import Wizard 支援
cpro-ject, .ewp, .eww, .isc, .sls, .slsproj, .uvproj, .uvprojx, and .wsp 這些專案檔的匯入,下面以匯入
.sls 專案檔為例做說明,其他的檔案匯入方式也是類似的就不再贅述。
這裡匯入所使用的韌體專案,來自於 SSv4 安裝所在目錄下的範例
EFM8BB2_ExternalInterrupt,所使用的晶片是 EFM8BB21F16G-
QFN28。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project - 匯入專案檔 :
桌面點擊開啟 "Simplicity Studio",在其選單點選
"File -> Import...",打開 "Import Project" 對話視窗。
|
Import a SSv4 Project - 匯入專案檔 01 |
按
Select a project to import: 旁邊的
"Browser..." 開啟檔案總管。
選擇專案所在的資料夾
{SilabsSSv4}\v4\developer\sdks\8051\v4.1.7\examples\EFM8BB2_SLSTK2021A\ExternalInterrupts 進行匯入的動作。如果成功匯入,會在其下方的表格中,出現專案的名稱。
確認匯入的專案無誤後,按
"Next >" 進入到下一個畫面。
|
Import a SSv4 Project - 匯入專案檔 02 |
這裡先不要做任何修改,直接按
"Next >" 進入到下一個畫面。
|
Import a SSv4 Project - 匯入專案檔 03 |
若沒有其他需求的話,
Project name: 維持預設值就好。
匯入的專案要放置的資料夾位置
Location: 看看需不需要做變動,有需要就按旁邊的
"Browser..." 按鈕進行變更。
沒其他問題就按
"Finish" 完成專案的匯入。
|
Import a SSv4 Project - 匯入專案檔 04 |
匯入專案後,
"Project Explorer" 就如下圖左邊視窗所示。
|
Import a SSv4 Project - 匯入專案檔 05 |
查看匯入專案使用的資料夾可以發現,除了專案檔之外,其他的檔案都還是存在於原目錄中。所以,如果匯入專案後會做修改,建議先將整個專案目錄複製到目的地的專案資料夾中後,再進行匯入。
** 這裡因為只是做說明,所以沒有額外先做這個動作。
|
Import a SSv4 Project - 匯入專案檔 06 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project - 變更晶片型號:
在匯入專案的時候應該已經看到,匯入的專案所使用的晶片是 EFM8F16G-QFN28,這跟我們設定的目標晶片不一樣,所以我們要進行一下變更,讓專案改用我們所要的晶片。
首先,雙擊專案中的檔案
EFM8BB2_ExternalInterrupts.hwconf。
由於是第一次打開,SSv4 裡面並沒有關於 EFM8B21F16G-QFN28 組態器的資料,所以會開啟下面畫面中的視窗,詢問是否要下載?
按
"Yes" 確定下載!
** 為什麼要下載 QFN28 的組態資料?因為要參考它的組態設定,並將其複製或修改到 QFN20 的組態檔中。
|
Import a SSv4 Project - 變更晶片型號 01 |
下載會需要一些時間,耐心等一下!
完成後,下載的視窗會自動關閉並回到軟體主畫面。
主畫面中間,點選
"DefaultMode Port I/O" 切換到 Port I/O 的畫面。
|
Import a SSv4 Project - 變更晶片型號 02 |
中間顯示的是 EFM8BB21F16G-QFN28 晶片接腳和使用的情形。
|
Import a SSv4 Project - 變更晶片型號 03 |
下面開始進行目標晶片的變更。
滑鼠右鍵點擊
"Project Explorer" 下專案名稱
EFM8BB2_ExternalInterrupts,下拉選單選擇
"Properties"。
|
Import a SSv4 Project - 變更晶片型號 04 |
開啟專案的屬性視窗後,左邊選擇
"C/C++ Build -> Board / Park / SDK",然後進行下面的設定:
- 移除 Board: 欄位下的 EFM8BB2 Busy Bee Starter Kit Board (BRD5201A Rev A00);
- 重新選擇 Part: 為 EFM8BB21F16G-C-QFN20;
完成設定後,應該如下圖所示。
按 "OK" 儲存設定,並離開回到主畫面。
|
Import a SSv4 Project - 變更晶片型號 05 |
完成專案屬性關於晶片型號的變更之後,接下來我們要去設定晶片的組態。首先要做的就是,先新增一個 EFM8BB21F16G-C-QFN20 的晶片組態檔,然後根據
EFM8BB2_ExternalInterrupts.hwconf 的設定,進行修改或是複製,下面我們就來看看怎麼做。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project -創建新的硬體組態檔(.hwconf) :
軟體主畫面左邊,滑鼠右鍵點擊
"Project Explorer" 下專案名稱
EFM8BB2_ExternalInterrupts,下拉選單選擇
"New -> Other...",開啟新增檔案精靈視窗。
|
Import a SSv4 Project -創建新的硬體組態檔 01 |
選擇
"Simplicity Studio -> Simplicity Configurator Document",按
"Next >" 進入到下一個畫面。
|
Import a SSv4 Project -創建新的硬體組態檔 02 |
這時會出現一個 "Confirm Download" 對話方塊,要你確認是否現在、馬上下載 EFM8BB21F16G-C-QFN20 的組態資料。
按下
"Yes",出現另一個視窗。
|
Import a SSv4 Project -創建新的硬體組態檔 03 |
在出現的視窗中,可以選擇:
- 要將此硬體組態檔儲存到哪一個專案資料夾(Folder:)中;
- 硬體組態檔要叫什麼名字(File name:)?
按 "Finish" 後,就會開始下載 EFM8BB21F16G-QFN20 的組態資料,等待個一小會兒就會完成。
|
Import a SSv4 Project -創建新的硬體組態檔 04 |
完成硬體組態檔的新增和資料下載後,主畫面變更如下圖所示。
|
Import a SSv4 Project -創建新的硬體組態檔 05 |
有了新的組態檔後,我們必須把原專案中的設定,進行變更或是複製過來,要不硬體就不會照著原來的方式動作。
下面來看看,怎麼完成硬體組態檔的修改。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project - 修改硬體組態檔:
請同時雙擊
EFM8BB2_ExternalInterrupts_EFM8BB21F16G-C-QFN20.hwconf 和
EFM8BB2_ExternalInterrupts.hwconf ,開啟這兩個檔案在主畫面中,倆倆對照來進行設定。
選擇
"EFM8BB2_ExternalInterrupts_EFM8BB21F16G-C-QFN20.hwconf " 檔案頁籤,下方頁籤點選開啟
"DefaultMode Peripherals"。
於
"DefaultMode Peripherals" 頁面,
Clocking 群組做如下選項勾選和設定
- [v] Clocking Control;
左邊欄位 Clock Source Divider 選擇 SYSCLK/1
- [v] HFOSC 0/1;
|
Import a SSv4 Project - 修改硬體組態檔 01 |
儲存硬體組態檔的時候,SSv4 就會開始自動產生相對應的資料和程式碼。所以一但有做任何變更,請記得隨時存檔(或記得存檔)。
|
Import a SSv4 Project - 修改硬體組態檔 02 |
接著繼續設定。
在
Core 群組,做如下選項勾選和設定
- [v] Core;
- [v] External Interrupts;
- 左邊欄位 INT0 Port Pin Selection 選擇 P0.2
- 左邊欄位 INT1 Port Pin Selection 選擇 P0.3
- [v] Interrupts;
- 左邊欄位 Enable All Interruptes 選擇 Disabled
- 左邊欄位 Enable External 0 Interrupt 選擇 Enable
- 左邊欄位 Enable External 1 Interrupt 選擇 Enable
- [v] Reset Sources;
- 左邊欄位 Missing Clock Detector Reset 選擇 Enabled
|
Import a SSv4 Project - 修改硬體組態檔 03 |
Core 下的
Extenal Interrupts 左邊欄位的設定。
|
Import a SSv4 Project - 修改硬體組態檔 04 |
Core 下的
Interrupts 左邊欄位的設定。
|
Import a SSv4 Project - 修改硬體組態檔 05 |
Core 下的
Reset Sources 左邊欄位的設定。
|
Import a SSv4 Project - 修改硬體組態檔 06 |
記得存檔!
|
Import a SSv4 Project - 修改硬體組態檔 07 |
在
Timers 群組,做如下選項勾選和設定
- [v] Timers;
- 左邊頁籤 "TIMER Setup" 的 Timer 1 下修改
- Mode:Mode 2, 8-bit Counter / Timer with Auto-Reload
- Clock Source:Use SYSCLK
- Timer Switch 1:Run Control:Start
- 左邊頁籤 "TIMER Setup" 的 External Interrupt Settings 下修改
- INT0 Trigger Sensitivity:Edge-Triggered
- INT1 Trigger Sensitivity:Edge-Triggered
- 左邊頁籤 "TIMER 0/1" 的 Timer 1 Mode 2:8-bit Counter/Timer with Auto-Reload 下修改
- Target Overflow Frequency:230400 (0x38400)
- 左邊頁籤 "TIMER 2" 的 Control 下修改
- 左邊頁籤 "TIMER 2" 的 Init and Reload Value 下修改
- Target Overflow Frequency:5000
- [v] Watchdog Timer
- 左邊頁籤 "Watchdog Timer" 的 WatchDog Control 下修改
|
Import a SSv4 Project - 修改硬體組態檔 08 |
Timers 下的
Timers 左邊欄位
"TIMER Setup" 的設定。
|
Import a SSv4 Project - 修改硬體組態檔 09 |
Timers 下的
Timers 左邊欄位
"TIMER 0/1" 的設定。
|
Import a SSv4 Project - 修改硬體組態檔 10 |
Timers 下的
Timers 左邊欄位
"TIMER 2" 的設定。
|
Import a SSv4 Project - 修改硬體組態檔 11 |
Timers 下的
Watchdog Timers 左邊欄位的設定。
|
Import a SSv4 Project - 修改硬體組態檔 12 |
記得存檔!
|
Import a SSv4 Project - 修改硬體組態檔 13 |
請按照下面步驟啟用 Crossbar 功能,以啟用各 Port 接腳的驅動和弱提升電阻:
- 點選 "DefaultMode Port I/O" 開啟 Port 組態屬性設定視窗;
- 設定 Enable Crossbar 屬性為 Enabled;
|
Import a SSv4 Project - 修改硬體組態檔 14 |
到此,完成韌體專案匯入的硬體組態屬性設定。
記得存檔!
每次儲存硬體組態檔時,SSv4 會自動生成三個檔案:
InitDevice.h,
InitDevice.c, 和
Interrupts.c 其中,
- InitDevice.h:硬體組態設定的周邊設備的初始化函式原型;
- InitDevice.c:初始化硬體組態設定的周邊設備的原始程式碼;
- Interrupts.c:中斷服務函式;
現在,請按下鐵鎚圖示進行編譯。
鐵鎚旁邊的小按鈕裡面包含兩個選項:
"... - debug"和
"... - release" 都可以用來編譯,只不過在不需要做除錯的情況之下,直接採用
"... - release" 選項進行編譯就可以。
|
Import a SSv4 Project - 修改硬體組態檔 15 |
如果一切正常,將會輸出類似下面的編譯訊息。
|
Import a SSv4 Project - 修改硬體組態檔 16 |
如果編譯時,編譯訊息中包含如下的警告文字
RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT;
那就是 Keil C51 的許可證註冊出現問題了!
解決的方法很簡單,那就是:把 SSv4 完整移除後,重新安裝 SSv4,然後再重新申請一次許可證;沒有移除 SSv4 再重新申請許可證,其許可證申請後還是不能用!
|
Import a SSv4 Project - 修改硬體組態檔 17 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project - 韌體一鍵燒錄 :
** 請務必在進行燒錄之前將燒錄模擬器與開發板連接好,並插上電腦!
SSv4 軟體主畫面中,按
"Flash Programmer" 開始進行韌體燒錄。
|
Import a SSv4 Project - 韌體一鍵燒錄 01 |
首先一開始,按
"Browser" 開啟檔案總管視窗。
|
Import a SSv4 Project - 韌體一鍵燒錄 02 |
選擇編譯之後產生的
hex 檔(這裡指的就是
EFM8BB2_ExternalInterrupts.hex),按
"開啟 (O)" 選定檔案。
|
Import a SSv4 Project - 韌體一鍵燒錄 03 |
選定之後的
hex 檔會顯示在 "Flash Progrmmer" 的
File 欄位。
燒錄之前要先清除晶片裡面的韌體資料,所以
"Erase" 要先執行一次,之後如果
"Program" 按鈕不能用,那就關閉後再重啟 "Flash Programmer" 一遍,就能使用。
|
Import a SSv4 Project - 韌體一鍵燒錄 04 |
Flash 擦除中...
|
Import a SSv4 Project - 韌體一鍵燒錄 05 |
完成晶片記憶體的擦除之後,按下
"Program" 進行燒錄。
|
Import a SSv4 Project - 韌體一鍵燒錄 06 |
燒錄中.....
|
Import a SSv4 Project - 韌體一鍵燒錄 07 |
燒錄成功後,按下
Close 關閉視窗,現在可以開始準備硬體測試了!
|
Import a SSv4 Project - 韌體一鍵燒錄 09 |
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* Import a SSv4 Project - EFB8BB2_ExternalInterrupts 韌體測試:
韌體測試很簡單!請利用套件中的杜邦線,進行學習開發板上兩邊屬於晶片的外拉接腳與中間 2x4 接腳之間的訊號連接,完成後就可以開始測試。
根據
EFM8BB2_ExternalInterrupts.c 裡面的說明,
// Program Description:
//
// This software shows the necessary configuration to use External Interrupt 0
// (/INT0) or External Interrupt 1 (/INT1) as an interrupt source. The code
// executes the initialization routines and then spins in an infinite while()
// loop. If the right button is pressed, then the edge-triggered /INT0 input
// on P0.2 will cause an interrupt and toggle LED_GREEN. If the left button
// is pressed,then the edge-triggered /INT1 input on P0.3 will cause an
// interrupt and toggle the LED_BLUE.
//
// Resources:
// SYSCLK - 24.5 MHz HFOSC0 / 1
// P0.2 - Push button switch, /INT0 input
// P0.3 - Push button switch, /INT1 input
// P1.4 - LED blue
// P1.5 - LED blue
EFM8BB2 學習開發板的接線如下:
EFM8BB21F16G-QFN20 | 週邊接腳名稱 |
<P0.2> | <SW3> |
<P0.3> | <SW4> |
<P1.4> | <LED3> |
<P1.5> | <LED4> |
SW3 作為外部中斷 0 的輸入,每按一次學習開發板的
SW3 按鈕,板子上面的綠色 LED 燈就會做亮滅的切換;
SW4 作為外部中斷 1 的輸入,每按一次學習開發板的
SW4 按鈕,板子上面的藍色 LED 燈就會做亮滅的切換。
【結論】
本篇,說明了 Simplicity Studio 專案檔匯入到 SSv4 的步驟,以及如何新增和修改硬體組態檔(
.hwconf)的方法,至於從頭建立一個 SSv4 專案檔的步驟和說明,請看下一篇
2.1.2 Simplicity Studio v4 全新專案建置範例。
SSv4 支援多種軟體的專案檔匯入,除了 Simplicity Studio 和 Keil C51 專案檔外,其餘沒說到的專案檔匯入步驟和方法,請自行參考官方文件或網路上的教學。
<< 部落格相關文章 >>
.
.
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !