Thunderboard™ BG22 开发套件是Silicon Labs提供的一个小型原型平台,适用于电池供电的蓝牙应用。
上面搭载的EFR32BG22 蓝牙低功耗 5.2 SoC可提供低功耗蓝牙、网状网络和误差一米以内的测向精度。
我需要制作一个集成UWB、蓝牙5.2、惯导的定位标签。
做蓝牙定位的师兄推荐了EFR32BG22C224F512IM40
这款蓝牙芯片。
从官网查询有两块评估板:
第一块从立创商城海外购买,第二款没货从某宝买的,还顺带买了五片芯片。
百度百科:
Silicon Labs是由Nav Sooch、Dave Welland和Jeff Scott在1996年于美国德州奥斯汀 (Austin, Texas) 成立,专门开发世界级的混合信号器件。今天,公司已成为营运、销售和设计活动遍及世界各地资本额约5亿美元的上市跨国公司,并且在各种混合信号产品领域居于领先地位。
SILICON LABS多年来专注于性能、节能、连接性和简便性的产品,为实现更智能、更互联的世界提供芯片、软件和解决方案。他们近期推出了一款物联网开发板Thunderboard EFR32BG22,它是一个小型单芯片理想蓝牙物联网开发平台,具有丰富的功能可以当作产品原型机来演示,也可以当作开发平台测试调试和验证。
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电流。
Thunderboard EFR32BG22物联网板板载丰富的外设:
Thunderboard EFR32BG22物联网板体积小巧迷你只有30.4mm X 45.4mm ,却是一个完整的硬件开发平台,作为开发板该有的功能一点也不少,比如:
开发板板载2.4 GHz 陶瓷 chip 天线;带有功率控制器件控制开发板功耗;板上预置8Mbit OTA flash存储可用做在线升级或者数据登录;
开发板系统框架如下图,整个开发板基于EFR32BF22蓝牙单芯片,添加必要的2.4GHz天线、flash Memory,增加开发调试模块Debugger 和用户IO,增加各种sensors,构成Thunderboard EFR32BG22物联网板系统。
板载4个sensor 和1个flash,共5个器件只用了核心芯片的2个接口,I2C 接口和SPI接口。
开发板为每个sensor都设计了一组电源器件,精细化管理外围器件的电源消耗,从硬件设计上达到极致的节电低功耗目标。
包括蓝牙网状网络低功耗节点、智能门锁、个人医疗保健和健身设备。资产跟踪标签、信标和室内导航也将受益于 SoC 的多用途蓝牙到达角 (AOA) 和出发角 (AOD) 功能以及亚米级定位精度。
应用:
SILICON LABS 产品的软件开发环境是 Simplicity Studio 全家桶,一个软件搞定一切开发环境。
Simplicity Studio v5 很方便安装管理sdk各种组件、查阅芯片资料帮助文档等。
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 开关的状态,实现用户和系统的交互。
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_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_internal_app_init() 是空的。
app_init(); 是空的。
sl_system_process_action() 用来处理 platform,service,stack,internel_app 事件,蓝牙事件也是在这里处理。
sl_power_manager_sleep() 找到最节省电能的模式休眠,有事件就唤醒开始处理,处理完了还来这里休眠省电。
整个项目,先初始化平台、初始化外设、初始化低功耗电源管理,再初始化蓝牙协议栈、设置uart交互,最后进入死循环,不停的处理uart交互,蓝牙协议栈事件,休眠唤醒。
整体项目代码逻辑比较简单,模块化代码,命名清晰明了,对开发者很友好,参考学习意义极其重大,对开发也很重要。
参考文章:https://www.cirmall.com/articles/35334/