在Simplicity Studio下创建适用于EFR32的工程项目
1、使用平臺
使用平臺描述了在Simplicity Stdio下創建工程時所使用的操作系統與軟件版本等。
- 操作系統:Windows 10
- Simplcity Studio版本:Simlicity Studio V4
- MCU型號:Silicon Labs的EFR32FG1x系列
2、Simplcity Studio上使用的SDK與編譯器版本
- 32 bit MCU SDK版本:5.2.2.0
- Flex SDK:1.2.1.0
- GNU ARM Toolchain版本:4.9.2015.q3
由于接觸Simplicity Studio平臺與EFR32FG1x系列芯片時,其Flex SDK的版本為1.2.1.0,所以就使用了當時的這個最新版本的SDK,但是自己剛剛才將如何創建一個“干凈”的工程探索的差不多的時候,Flex SDK突然更新到一個新的版本2.0.0,最重要的是這個新版本不與1.2.1.0的兼容,API全部變樣,連Radio的底層操作流程都換思路了。那我也沒精力從頭再來了,所以繼續使用了1.2.1.0版本的SDK。
3、新建MCU工程
- 首先,打開Simplicity Studio,如圖1所示;
圖1、Simplicity Studio的Lanucher界面
- 打開Simplicity Studio,使用File->New->Project...新建工程;
-
在彈出的"New Project"對話框中選擇Silicon Labs MCU Project,如圖2所示,然后點擊Next,出現"New Silicon Labs Project"對話框,如圖3所示;
圖2、New Project對話框
圖3、New Silicon Labs project對話框
-
然后在"New Silicon Labs Project"對話框中的Part欄選擇要使用的芯片型號(我這里隨便選擇一款,如EFR32FG1P131F256GM32),在SDK欄中選擇“Gecko SDK Suite: Flex 1.2.1.0, MCU 5.2.2.0(v1.1.1)”,如果沒有此版本的SDK,則點擊右下方的Manage SDKs...,在出現的對話框中查看是否此版本的SDK沒有勾選,若沒有勾選,則勾選上確認即可,然后返回到上一對話框重新選擇SDK即可,若沒有發現有此版本的SDK,則需要在安裝此版本的SDK后,再重新以上操作,完成填寫后如圖4所示,最后點擊Next;
圖4、完成填寫后的New Silicon Labs Project對話框
- 此時出現如圖5所示的對話框。在此對話框中選擇“Simplicity Configurator Program - Create a project whose contents are driven from Simplicity Configurator”選項,然后點擊Next;
圖5、選擇要生成的工程類型
- 然后出現如圖6所示的對話框。在對話框中的Project name欄中填寫工程項目名稱并選擇工程項目要保存的路徑(這里創建一個名為TestProject的工程,路徑我使用默認路徑),點擊Next;
圖6、填寫工程項目名稱與工程路徑
- ?最后出現如圖7所示的對話框。選擇所使用的工具鏈(這里選擇的是GUN ARM v4.9.3),然后直接點擊Finish以完成工程項目的創建,隨后會打開一個以.hwconf為擴展名,以填寫的工程名稱為文件名的配置文件,在其中可以對所選用芯片進行GPIO、外設等配置,創建完成后的Simplicity Studio的界面如圖8所示。
圖7、選擇工具鏈
?
圖8、創建后的工程界面
?4、?從Simplicity Studio安裝路徑添加項目所需的資源
- 在Simplicity IDE的“Project Explorer”面板(如果沒有此面板,請從菜單欄中Window->Show View->Other...->General->Project Explorer中調出此面板)中找到剛才創建的工程項目,然后在項目名上單擊右鍵->New->Folder創建新文件夾,如圖9所示,出現New Folder對話框,在其Folder name欄中填入新建文件夾的名稱;這里我們新建兩個文件夾,一個名為railSdk121Config,另一個名為railSdk121Source;
圖9、選中工程時的右鍵菜單
- 然后在Simplicity Studio的安裝路徑下找到路徑 "SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\autogen\librail_release",復制其中的librail_efr32xg1_gcc_release.a文件到工程項目的railSdk121Source文件夾中。
- 再找到路徑"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\chip\efr32"和"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\chip\efr32\rf\common\cortex",分別復制文件rail_chip_specific.h和pa.h到工程項目的railSdk121Source文件夾中。
- 接著找到路徑"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\common",復制其中的全部文件到工程項目的railSdk121Source文件夾中(復制的文件分別為rail.h、rail_assert_error_codes.h、rail_types.h)。
- 最后找到路徑“SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\emlib\src”,復制em_core.h文件到工程項目的emlib文件夾中。
??? 添加完上述資源后,Simplicity Studio的“Project Explorer”面板中的當前工程的目錄結構如圖10所示。
圖10、添加資源后的工程目錄結構
5、創建Radio Configuration工程項目
- 選擇File->New->Project...新建工程;
- 在彈出的"New Project"對話框中選擇Silicon Labs AppBuilder Project,然后點擊Next;
- 出現Applications對話框,選擇Radio configuration for EFR32 radio family(Stackless applications);
- 然后點擊Next直到出現Project Configuration對話框為止;
- 在Project Configuration對話框中的Project name欄中填入Radio工程項目名稱,然后選擇要保存工程項目的路徑,點擊Next;
- 出現Project setup對話框,在其中的Part欄中輸入所使用的芯片型號(與創建MCU工程時所用的芯片型號必須一致,此為EFR32FG1P131F256GM32),然后點擊Finish,此時會打開“工程項目名.isc”的配置文件,如圖11所示。
圖11、Radio配置界面
- 接著配置關于radio的參數,配置完成后,點擊Generate按鈕,此時工程項目下生成或更新3個文件,分別為rail_config.c、rail_config.h和efr32-standalone-radio-config-configuration.h,將前兩個文件復制到MCU工程項目中的railSdk121Config文件夾中,將最后一個文件復制到MCU工程項目中的railSdk121Source文件夾中。
完成后的工程目錄結構如圖12所示,其中“blank_efr32-standalone-radio-config”即為新創建的Radio Configuration工程。
圖12、添加Radio資源后的MCU工程目錄結構
?6、配置MCU工程的屬性并添加頭文件搜索路徑
- 在MCU工程項目名(TestProject)上點擊鼠標右鍵,在彈出菜單中選擇Properties選項,出現Properties for xxx對話框,其中xxx為MCU工程項目名稱(這里即為TestProject),如圖13所示;
圖13、MCU工程屬性對話框
- 在屬性對話框的左邊選擇C/C++ Build->Settings,再在Settings界面下選擇Tool Settings選項卡,在此選項卡中選擇GNU ARM C Linker->Libraries,然后在右邊的Libraries(-l)中加入參數m,在Library search path(-L)中加入參數 "${StudioSdkPath}/platform/base/hal/micro/cortexm3/",注意,引號一起填入,此處的${StudioSdkPath}是Simplicity Studio中的一個環境變量,表示當前的SDK所在的根路徑,比如在我的電腦中,它等于D:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1(可能與您的路徑不相同,請自行查找到Simplicity Studio的安裝路徑,然后再在其中查找SDK的路徑),當前上面的參數你可以不適用這個環境變量,而直接使用絕對路徑;
- 然后,選擇GNU ARM C Linker->Miscellaneous,在右邊的Other objects中加入${ProjDirPath}/railSdk121Source/librail_efr32xg1_gcc_release.a,注意,沒有引號,此處的${ProjDirPath}與上面的${StudioSdkPath}一樣,是Simplicity Studio的一個環境變量,它表示當前工程的根路徑,此環境變量一般指的是Simplicity Studio的工作空間中的工程的路徑,比如我這里它是E:\Works\SimplicityStudio\v4_workspace\TestProject,其中v4_workspace是當前的工作空間名稱,TestProject是當前的MCU工程名稱;若當前的MCU工程不在當前使用的工作空間中,則請使用絕對路徑;
- 點擊OK確定,然后再次打開Properties for xxx對話框,檢查GNU ARM C Linker->Miscellaneous->Other objects欄中剛剛填入的內容有無包含引號,如有,則修改內容,將引號去掉即可(如果這里有引號,編譯項目時會出錯);
- 接著,選擇GNU ARM C Compiler->Includes,在其中添加包含路徑,這里將前面在MCU工程項目中新建的兩個文件夾的路徑填進去,分別為"${ProjDirPath}/railSdk121Config"、"${ProjDirPath}/railSdk121Source",注意,都有引號,與之前一樣,若當前的MCU工程不在當前使用的工作空間中,則請使用絕對路徑;
- 最后,點擊OK確認即可;若之后又在工程項目中新建了其他文件夾且存放了頭文件,則需要將文件路徑添加到此處(Properties for xxx對話框->Settings->ToolSettings->GNU ARM C Compiler->Includes),完成后如圖14所示。
?
圖14、添加完頭文件搜索路徑后的MCU工程屬性界面
?
到此,整個項目的創建就結束了。此時,可以直接編譯MCU工程(TestProject),如果編譯無錯誤提示,則項目的創建是無問題的;如果編譯出錯,則檢測是否在創建工程或配置工程的哪個環節出錯了。
7、5.2.2.0版本的MCU的SDK中USART的使用問題
在使用USART時,根據EFR32FG1x的Datasheet描述,em_usart.c中的波特率設置函數有問題,所以在使用前請先修改em_usart.c中的第497~499行,這3行位于函數
void USART_BaudrateSyncSet(USART_TypeDef *usart, uint32_t refFreq, uint32_t baudrate)將第497~499這3行修改為以下內容:
float clkFactor = refFreq; clkFactor = 256 * (clkFactor / (2 * baudrate) - 1); clkdiv = (uint32_t)clkFactor & 0xFFFFFFF8;8、解決使用JTAG仿真調試時經常失敗的問題
在編譯項目時,若經常遇到仿真時仿真失敗的情況,此時只需要修改em_cmu.c中函數
void CMU_HFXOInit(const CMU_HFXOInit_TypeDef *hfxoInit)的第2、3行語句(在em_cmu.c文件的第4511、4512行)為以下內容即可:
if (BUS_RegBitRead(&CMU->STATUS, 2) && CMU_ClockSelectGet(cmuClock_HF) != cmuSelect_HFXO) { CMU_OscillatorEnable(cmuOsc_HFXO, false, true); }? 以上內容為自己探索得出,定有錯誤或不當之處,請指正以讓我修改之;另外,如需轉載,請貼出作者以及出處,謝謝!
轉載于:https://www.cnblogs.com/freerqy/p/8608586.html
總結
以上是生活随笔為你收集整理的在Simplicity Studio下创建适用于EFR32的工程项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows导出文件名列表
- 下一篇: 蒜头君吃桃子