2020年8月25日 星期二

Silicon Labs EFM8 微控制器開發環境建置 [2.1.1]-如何匯入、修改和編譯官方(或既有的)Simplicity Studio v4 專案範例

網頁最後修改時間: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 下修改
      • ModeMode 2, 8-bit Counter / Timer with Auto-Reload
      • Clock SourceUse SYSCLK
      • Timer Switch 1:Run ControlStart
    • 左邊頁籤 "TIMER Setup" 的 External Interrupt Settings 下修改    
      • INT0 Trigger SensitivityEdge-Triggered
      • INT1 Trigger SensitivityEdge-Triggered
    • 左邊頁籤 "TIMER 0/1" 的 Timer 1 Mode 2:8-bit Counter/Timer with Auto-Reload 下修改
      • Target Overflow Frequency230400 (0x38400)
    • 左邊頁籤 "TIMER 2" 的 Control 下修改
      • Run Controlstart
    • 左邊頁籤 "TIMER 2" 的 Init and Reload Value 下修改
      • Target Overflow Frequency5000
  • [v] Watchdog Timer
    • 左邊頁籤 "Watchdog Timer"WatchDog Control 下修改
      • WDT EnableDisable

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"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!

發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?

不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !