EFR32BG22 Thunderboard Kit 学习笔记总结

Thunderboard™ BG22 开发套件是Silicon Labs提供的一个小型原型平台,适用于电池供电的蓝牙应用。

上面搭载的EFR32BG22 蓝牙低功耗 5.2 SoC可提供低功耗蓝牙、网状网络和误差一米以内的测向精度

文章目录

  • EFR32BG22 Thunderboard Kit 学习笔记总结
    • 一、简介
      • 1.起因
      • 2.SILICON LABS (芯科科技)
      • 3.图片
    • 二、核心芯片
      • 1.EFR32BG22C224F512IM40
      • 2. 传感器外设
      • 3.硬件系统框架
      • 4.低功耗设计
      • 5.目标应用
    • 三、软件开发环境
      • 1.预装demo演示
      • 2.项目代码分析

一、简介

1.起因

我需要制作一个集成UWB、蓝牙5.2、惯导的定位标签。

做蓝牙定位的师兄推荐了EFR32BG22C224F512IM40这款蓝牙芯片。

从官网查询有两块评估板:

  • BG22 Bluetooth SoC Explorer Kit ($9.99)
  • EFR32BG22 Thunderboard Kit ($19.99)

第一块从立创商城海外购买,第二款没货从某宝买的,还顺带买了五片芯片。

2.SILICON LABS (芯科科技)

百度百科

Silicon Labs是由Nav Sooch、Dave Welland和Jeff Scott在1996年于美国德州奥斯汀 (Austin, Texas) 成立,专门开发世界级的混合信号器件。今天,公司已成为营运、销售和设计活动遍及世界各地资本额约5亿美元的上市跨国公司,并且在各种混合信号产品领域居于领先地位。

SILICON LABS多年来专注于性能、节能、连接性和简便性的产品,为实现更智能、更互联的世界提供芯片、软件和解决方案。他们近期推出了一款物联网开发板Thunderboard EFR32BG22,它是一个小型单芯片理想蓝牙物联网开发平台,具有丰富的功能可以当作产品原型机来演示,也可以当作开发平台测试调试和验证。

3.图片


二、核心芯片

1.EFR32BG22C224F512IM40

Thunderboard EFR32BG22物联网板核心芯片采用了SILICON LABS公司自家的单芯片蓝牙无线芯片,型号是EFR32BG22C224F512IM40,是该系列芯片中的顶级配置

此芯片基于ARM Cortex®-M33核心,最大运行频率可达76.8MHz;

拥有512kB flash 闪存和32kB运行内存;

20 引脚 2.54 mm 分支焊盘,用于 GPIO 访问和与外部硬件的连接;

集成PA,在2.4GHz频段发射功率高达6 dBm;

支持低功耗蓝牙5.2,支持蓝牙5.2测向功能,支持蓝牙mesh。

此芯片是ARM新一代v8M架构,在安全方面有所增强,安全特性如下:

  • 支持Secure Boot with Root of Trust and Secure Loader (RTSL)
  • Hardware Cryptographic Acceleration for AES128/256, SHA-1, SHA-2 (up to 256-bit), ECC (up to 256-bit), ECDSA,and ECDH
  • True Random Number Generator (TRNG) compliant with NIST SP800-90 and AIS-31
  • ARM TrustZone
  • Secure Debug with lock/unlock

此芯片集成高能效射频模块,拥有极低的功耗和睡眠电流,蓝牙收发数据时,工作电流分别是3.8/8.4mA,在 EM0 模式,工作电流是28μA/MHz,在EM2深度睡眠模式,消耗电流1.40 μA/ 1.75 μA,在EM4模式下,仅仅消耗0.17 μA电流。

2. 传感器外设

Thunderboard EFR32BG22物联网板板载丰富的外设:

  • 相对湿度和温度传感器
  • 紫外线和环境光传感器
  • 磁性、霍尔效应传感器
  • 6 轴惯性传感器
    型号如下

Thunderboard EFR32BG22物联网板体积小巧迷你只有30.4mm X 45.4mm ,却是一个完整的硬件开发平台,作为开发板该有的功能一点也不少,比如:

  • 带有led指示灯和按键能于用户交互;
  • 2 个 USART、2 个 I²C、2 个 PDM 以及 GPIO;
  • 12 位 ADC(16 通道);
  • 开发板引出20-pin 2.54 mm breakout pads用户能自己扩展功能;
  • 板载SEGGER J-Link on-board debugger 不需要额外debuger就可以下载调试;
  • 具备虚拟串口功能;

开发板板载2.4 GHz 陶瓷 chip 天线;带有功率控制器件控制开发板功耗;板上预置8Mbit OTA flash存储可用做在线升级或者数据登录;

3.硬件系统框架

开发板系统框架如下图,整个开发板基于EFR32BF22蓝牙单芯片,添加必要的2.4GHz天线、flash Memory,增加开发调试模块Debugger 和用户IO,增加各种sensors,构成Thunderboard EFR32BG22物联网板系统。

4.低功耗设计

电源输入端可以三选一,方便用户使用。

板载4个sensor 和1个flash,共5个器件只用了核心芯片的2个接口,I2C 接口和SPI接口。

开发板为每个sensor都设计了一组电源器件,精细化管理外围器件的电源消耗,从硬件设计上达到极致的节电低功耗目标。

5.目标应用

包括蓝牙网状网络低功耗节点、智能门锁、个人医疗保健和健身设备。资产跟踪标签、信标和室内导航也将受益于 SoC 的多用途蓝牙到达角 (AOA) 和出发角 (AOD) 功能以及亚米级定位精度。

应用

  • 资产标签和信标
  • 消费电子遥控器
  • 便携式医疗设备
  • 蓝牙网状网络低功耗节点
  • 运动、健身和保健设备
  • 互联家居
  • 楼宇自动化和安全

三、软件开发环境

SILICON LABS 产品的软件开发环境是 Simplicity Studio 全家桶,一个软件搞定一切开发环境。

Simplicity Studio v5 很方便安装管理sdk各种组件、查阅芯片资料帮助文档等。

1.预装demo演示

Thunderboard EFR32BG22物联网板配合手机端移动应用,可以把数据实时推送到手机中显示。

先在手机上安装 Silicon Labs 的 Thunderboard app应用后打开,给 Thunderboard EFR32BG22 物联网板上电,手机app能搜索到Thunderboard EFR32BG22 设备,点击Thunderboard EFR32BG22 #51069 设备自动链接打开dashboard界面,显示有三个模块 Motion、Environment、IO。

Motion 模块:实时获取Thunderboard EFR32BG22 物理网板6 轴惯性传感器的数据,3轴方位角和3轴重力加速度,转动开发板的同时,手机上的3D模型实时和实物同步转动。

Environment 模块:实时获取开发板相对湿度和温度传感器、紫外线和环境光传感器、磁性霍尔效应传感器的数据。

IO模块:可以通过手机的开关,控制开发板led,可以通过开发板的button按键,更新手机上switch 开关的状态,实现用户和系统的交互。

2.项目代码分析

Simplicity Studio v5 内含有多个官方项目,稍稍解析一下本开发板出厂预装的项目Bluetooth - SoC Thunderboard EFR32BG22:

从项目代码main函数开始

main函数中先对Thunderboard EFR32BG22系统做初始化sl_system_init

再对应用做初始化app_init

最后一个 while(1)循环

  • 循环中不停的处理系统事件sl_system_process_action

  • 应用事件app_process_action

  • 然后运行 sl_power_manager_sleep让系统休眠省电

如此循环,代码如下:

Main函数中的几个函数逐个分析

  1. 系统初始化sl_system_init 函数中,前两个是平台、驱动初始化, mcu 开发很常见,跳过去不看,看服务初始化sl_service_init() 。

服务初始化 sl_service_init中有:

1.1 休眠时钟初始化sl_sleeptimer_init(),主要是设置频率,初始化。功能大概是在系统休眠后这个时钟还是要工作的,来定时唤醒系统,处理事件。

1.2 IO初始化sl_iostream_init_instances(),初始化uart。可以通过Virtual COM port 端口输出信息。

1.3 sl_mbedtls_init 是空的,没有什么东西。

1.4 mpu 初始化 sl_mpu_disable_execute_from_ram,做一些节能相关的初始化工作。

  1. 系统初始化sl_system_init 中的sl_stack_init()是蓝牙协议栈初始化,蓝牙初始化全都在这里。

  1. 系统初始化sl_system_init 中的sl_internal_app_init() 是空的。

  2. app_init(); 是空的。

  3. sl_system_process_action() 用来处理 platform,service,stack,internel_app 事件,蓝牙事件也是在这里处理。

  4. app_process_action(); 读取uart命令后处理,相当于shell 的交互服务。

  5. sl_power_manager_sleep() 找到最节省电能的模式休眠,有事件就唤醒开始处理,处理完了还来这里休眠省电。

整个项目,先初始化平台、初始化外设、初始化低功耗电源管理,再初始化蓝牙协议栈、设置uart交互,最后进入死循环,不停的处理uart交互,蓝牙协议栈事件,休眠唤醒。
整体项目代码逻辑比较简单,模块化代码,命名清晰明了,对开发者很友好,参考学习意义极其重大,对开发也很重要。

参考文章:https://www.cirmall.com/articles/35334/

EFR32BG22 Thunderboard Kit 学习笔记总结相关推荐

  1. 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记

    最近需要将自定义的TensorFlow模型部署在JETSON XAVIER NX DEVELOPER KIT,这里记录一些如何安装TensorFlow以及OpenCV的方法 英伟达开发板 JETSON ...

  2. CososJS学习笔记(1) 环境配置(填坑版,让你少走弯路!)

    这段时间比较了国外的phaser.pixi.create等h5游戏框架以及国内的egret.cocosjs之后,最后还是决定使用cocosjs进行h5游戏的开发. 先简单地说一下个人的观点:首先pix ...

  3. Liferay Portal学习笔记-coldTear

    [原创]Liferay Portal学习笔记(一):安装 一. 简单安装 1)下载并安装 JDK1.5 1.  下载并安装 Windows Platform J2SE(TM) Development ...

  4. amazeui学习笔记一(开始使用4)--Web App 相关

    amazeui学习笔记一(开始使用4)--Web App 相关 一.总结 1.桌面图标(Touch icon)解决方案:终极方案:link标签的rel和href属性: <link rel=&qu ...

  5. 学习笔记之Java程序设计实用教程

    Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...

  6. linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记

    Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL 我还是做点No paper事情比较在行,正好和老师的课程接轨一下. 以前尝试过在Windows上面 ...

  7. iOS开发的学习笔记

    引言 之前做过半年的iOS开发,从完全不懂的移动开发的菜鸟,到完成前端UI开发的菜鸟,做的一些笔记,希望对大家有用,也希望这些总结的东西对以后会有作用. 开发环境 iOS的系统框架分为四个层次: 核心 ...

  8. Cocoa编程学习笔记一

    Cocoa编程学习笔记一 一.Cocoa的起源 Mac OS X的窗口服务器与UNIX中的X窗口服务器具有相同的功能:从用户那里接受事件,并将时间转发给应用程序,将应用程序发过来的数据显示在屏幕上.N ...

  9. QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决

    QT学习笔记(一):VS2013 +QT 5.8 运行.编译问题解决 jom: E:\C++\4.QT\HelloWord\Makefile.Debug [debug\moc_predefs.h] E ...

最新文章

  1. webform 分页、组合查询综合使用
  2. ModbusPoll及ModbusSlave安装及使用指南
  3. SAP UI5 getHeaderFooterOptions
  4. clickhouse官方文档_clickhouse分析:结合grafana和metabase完成监控和数据分析
  5. mysql if语句后面执行两个语句_MySQL的if,case语句使用总结
  6. mulitpartfile怎么接收不到值_手机有时接收不到微信消息通知,怎么办?超全解决方案...
  7. java爬取单张图片
  8. 体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3
  9. 按计划员自动带出对应任务类型
  10. 惠普n54l gen7 安装linux,惠普N54L安装群晖需要修改的硬件设置
  11. RangeError: Maximum call stack size exceeded
  12. IEEE754-2008 标准详解(五):异常
  13. 信息流广告的发展前景!
  14. [题]走廊泼水节——#最小生成树kru
  15. POWERBUILDER12.6开发实验室管理系统[LIS](四),希森美康XN-350全自动血球计数仪接口
  16. 天池大赛:街景字符编码识别——Part2:数据读取与数据扩增
  17. 嵌入式学习笔记(一)嵌入式操作系统测试
  18. 网络原理:TCP/UDP
  19. 搭建最炫酷的 Windows Terminal 全新命令行更新以及美化指南 微软新版终端工具安装美化教程
  20. Ning: 社会软件建造平台。

热门文章

  1. layui生产管理系统_分享两款Java Spring框架的开源MES制造执行系统
  2. 1.21.3 经典车间生产调度问题智能生产系统中的调度问题
  3. 操作系统_生产者消费者问题
  4. Memory基本debug指令与基础知识(一)
  5. 宁波初级职称证书查询
  6. python excel取列_Python 读取excel指定的列
  7. LINUX NGINX 环境禁止访问指定后缀文件
  8. php laravel 入门教程,Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】...
  9. 我了解到的新知识之----遇到路由器DNS被篡改我该怎么办?
  10. UR机器人通信端口和协议