EFR32BG22 Thunderboard Kit 学习笔记总结
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函数中的几个函数逐个分析:
- 系统初始化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,做一些节能相关的初始化工作。
- 系统初始化sl_system_init 中的sl_stack_init()是蓝牙协议栈初始化,蓝牙初始化全都在这里。
系统初始化sl_system_init 中的sl_internal_app_init() 是空的。
app_init(); 是空的。
sl_system_process_action() 用来处理 platform,service,stack,internel_app 事件,蓝牙事件也是在这里处理。
app_process_action(); 读取uart命令后处理,相当于shell 的交互服务。
sl_power_manager_sleep() 找到最节省电能的模式休眠,有事件就唤醒开始处理,处理完了还来这里休眠省电。
整个项目,先初始化平台、初始化外设、初始化低功耗电源管理,再初始化蓝牙协议栈、设置uart交互,最后进入死循环,不停的处理uart交互,蓝牙协议栈事件,休眠唤醒。
整体项目代码逻辑比较简单,模块化代码,命名清晰明了,对开发者很友好,参考学习意义极其重大,对开发也很重要。
参考文章:https://www.cirmall.com/articles/35334/
EFR32BG22 Thunderboard Kit 学习笔记总结相关推荐
- 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT学习笔记
最近需要将自定义的TensorFlow模型部署在JETSON XAVIER NX DEVELOPER KIT,这里记录一些如何安装TensorFlow以及OpenCV的方法 英伟达开发板 JETSON ...
- CososJS学习笔记(1) 环境配置(填坑版,让你少走弯路!)
这段时间比较了国外的phaser.pixi.create等h5游戏框架以及国内的egret.cocosjs之后,最后还是决定使用cocosjs进行h5游戏的开发. 先简单地说一下个人的观点:首先pix ...
- Liferay Portal学习笔记-coldTear
[原创]Liferay Portal学习笔记(一):安装 一. 简单安装 1)下载并安装 JDK1.5 1. 下载并安装 Windows Platform J2SE(TM) Development ...
- amazeui学习笔记一(开始使用4)--Web App 相关
amazeui学习笔记一(开始使用4)--Web App 相关 一.总结 1.桌面图标(Touch icon)解决方案:终极方案:link标签的rel和href属性: <link rel=&qu ...
- 学习笔记之Java程序设计实用教程
Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...
- linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记
Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL 我还是做点No paper事情比较在行,正好和老师的课程接轨一下. 以前尝试过在Windows上面 ...
- iOS开发的学习笔记
引言 之前做过半年的iOS开发,从完全不懂的移动开发的菜鸟,到完成前端UI开发的菜鸟,做的一些笔记,希望对大家有用,也希望这些总结的东西对以后会有作用. 开发环境 iOS的系统框架分为四个层次: 核心 ...
- Cocoa编程学习笔记一
Cocoa编程学习笔记一 一.Cocoa的起源 Mac OS X的窗口服务器与UNIX中的X窗口服务器具有相同的功能:从用户那里接受事件,并将时间转发给应用程序,将应用程序发过来的数据显示在屏幕上.N ...
- QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决
QT学习笔记(一):VS2013 +QT 5.8 运行.编译问题解决 jom: E:\C++\4.QT\HelloWord\Makefile.Debug [debug\moc_predefs.h] E ...
最新文章
- webform 分页、组合查询综合使用
- ModbusPoll及ModbusSlave安装及使用指南
- SAP UI5 getHeaderFooterOptions
- clickhouse官方文档_clickhouse分析:结合grafana和metabase完成监控和数据分析
- mysql if语句后面执行两个语句_MySQL的if,case语句使用总结
- mulitpartfile怎么接收不到值_手机有时接收不到微信消息通知,怎么办?超全解决方案...
- java爬取单张图片
- 体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3
- 按计划员自动带出对应任务类型
- 惠普n54l gen7 安装linux,惠普N54L安装群晖需要修改的硬件设置
- RangeError: Maximum call stack size exceeded
- IEEE754-2008 标准详解(五):异常
- 信息流广告的发展前景!
- [题]走廊泼水节——#最小生成树kru
- POWERBUILDER12.6开发实验室管理系统[LIS](四),希森美康XN-350全自动血球计数仪接口
- 天池大赛:街景字符编码识别——Part2:数据读取与数据扩增
- 嵌入式学习笔记(一)嵌入式操作系统测试
- 网络原理:TCP/UDP
- 搭建最炫酷的 Windows Terminal 全新命令行更新以及美化指南 微软新版终端工具安装美化教程
- Ning: 社会软件建造平台。
热门文章
- layui生产管理系统_分享两款Java Spring框架的开源MES制造执行系统
- 1.21.3 经典车间生产调度问题智能生产系统中的调度问题
- 操作系统_生产者消费者问题
- Memory基本debug指令与基础知识(一)
- 宁波初级职称证书查询
- python excel取列_Python 读取excel指定的列
- LINUX NGINX 环境禁止访问指定后缀文件
- php laravel 入门教程,Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】...
- 我了解到的新知识之----遇到路由器DNS被篡改我该怎么办?
- UR机器人通信端口和协议