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.hpa.h到工程项目的railSdk121Source文件夹中。
  • 接着找到路径"SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v1.1\platform\radio\rail_lib\common",复制其中的全部文件到工程项目的railSdk121Source文件夹中(复制的文件分别为rail.hrail_assert_error_codes.hrail_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.crail_config.hefr32-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 = * (clkFactor / ( * baudrate) - );
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, ) && CMU_ClockSelectGet(cmuClock_HF) != cmuSelect_HFXO) {
CMU_OscillatorEnable(cmuOsc_HFXO, false, true);
}

  以上内容为自己探索得出,定有错误或不当之处,请指正以让我修改之;另外,如需转载,请贴出作者以及出处,谢谢!

在Simplicity Studio下创建适用于EFR32的工程项目的更多相关文章

  1. android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  2. Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

  3. Android学习笔记之Android Studio下创建menu布局文件

    1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...

  4. Android studio 中创建AIDL Service

      1.概述  AIDL在android系统中的作用 AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描写叙述语言, ...

  5. 手把手带你使用ZigBee——通过爱智控制EFR32,以及 Simplicity Studio 使用过程中注意事项

    前言 兄弟们,我发现一个有意思的东西,我在爱智官网翻资料的时候,发现他们终于终于把官网文档的索引优化了!有一说一,真是方便不少,终于不再是一堆文档糊在一坨了. 另外我还发现他们居然做了一个EFR32的 ...

  6. 微软Azure 经典模式下创建内部负载均衡(ILB)

    微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...

  7. 在Mac下创建ASP.NET Core Web API

    在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...

  8. 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子

    Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...

  9. android 按钮点击效果实现 在studio下出现的错误

    在照做上一篇随笔的时候 在studio下为了方便我在写完一个 btn_select.xml 文件后直接粘贴了三个文件到drawable下 结果问题来了 总是报这样一个错误: Resource is n ...

随机推荐

  1. nyoj1246 逃离妖洞 BFS

        逃离妖洞 描述 唐僧不小心又掉入妖怪的迷宫了.这个迷宫有n行m列,共n*m个方格.有的方格是空的,唐僧可以站在上面,有些是有障碍物的不能站.每次唐僧可以移动到相邻的8个空方格上.但是有些情况不 ...

  2. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 简介 这是一篇关于Redis使用的总结类型文章,会先简单的谈一下缓存 ...

  3. CDN中前端层的复制

    前端层的复制是为了提高静态内容分发的性能和可扩展性.将静态内容的分发转由边缘服务器来完成是为了解决可扩展性的问题,因为这样做可以避免出现在对等点和广域网链路处的网络拥堵风险,而这两个地方的拥堵是网络延 ...

  4. 沉淀,再出发——在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享

    在Ubuntu Kylin15.04中配置Hadoop单机/伪分布式系统经验分享 一.工作准备 首先,明确工作的重心,在Ubuntu Kylin15.04中配置Hadoop集群,这里我是用的双系统中的 ...

  5. mysql数据库 调优

    mysql调优硬件配置网络带宽mysql运行参数慢查询日志网络架构多实例(一台服务器上运行多个数据库服务)分库分表 当一台数据库服务器处理客户端的请求慢时,可能是哪些原因造成? 硬件配置低:(内存 c ...

  6. IE浏览器因缓存问题未能成功向后端发送请求的几个解决办法

    这段时间前后端联调,解决IE.谷歌等浏览器兼容问题,真是让人有点焦头烂额,各种奇葩问题层出不穷,旧问题刚去,新麻烦又来,其中尤其以IE浏览器缓存的问题最多.有若干次都是因为这个缓存,使得前端的请求没有 ...

  7. Conditional Random Fields (CRF) 初理解

    1,Conditional Random Fields

  8. Failed while installing Dynamic Web Module 3.0

    1.错误描述 2.错误原因 Java Web项目不满足Web Module 3.0,需要降低Web Module版本 3.解决办法 (1)降低Web Module版本为2.5 (2)修改jdk版本,升 ...

  9. Octave 命令积累

    Octave Learning : puts all elements into a single vector :put B at A's right :put B at A's Bottom :将 ...

  10. VS2017 启动调试报错:ID为{....}进程未启动解决方案

    今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...