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.图片

EFR32BG22 Thunderboard Kit 学习笔记总结_第1张图片
EFR32BG22 Thunderboard Kit 学习笔记总结_第2张图片

二、核心芯片

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电流。

EFR32BG22 Thunderboard Kit 学习笔记总结_第3张图片

2. 传感器外设

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

  • 相对湿度和温度传感器
  • 紫外线和环境光传感器
  • 磁性、霍尔效应传感器
  • 6 轴惯性传感器
    型号如下
    EFR32BG22 Thunderboard Kit 学习笔记总结_第4张图片

EFR32BG22 Thunderboard Kit 学习笔记总结_第5张图片

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物联网板系统。
EFR32BG22 Thunderboard Kit 学习笔记总结_第6张图片

4.低功耗设计

电源输入端可以三选一,方便用户使用。
EFR32BG22 Thunderboard Kit 学习笔记总结_第7张图片

板载4个sensor 和1个flash,共5个器件只用了核心芯片的2个接口,I2C 接口和SPI接口。
EFR32BG22 Thunderboard Kit 学习笔记总结_第8张图片

开发板为每个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。
EFR32BG22 Thunderboard Kit 学习笔记总结_第9张图片

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让系统休眠省电

如此循环,代码如下:
EFR32BG22 Thunderboard Kit 学习笔记总结_第10张图片

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

  1. 系统初始化sl_system_init 函数中,前两个是平台、驱动初始化, mcu 开发很常见,跳过去不看,看服务初始化sl_service_init() 。
    EFR32BG22 Thunderboard Kit 学习笔记总结_第11张图片

服务初始化 sl_service_init中有:

1.1 休眠时钟初始化sl_sleeptimer_init(),主要是设置频率,初始化。功能大概是在系统休眠后这个时钟还是要工作的,来定时唤醒系统,处理事件。
EFR32BG22 Thunderboard Kit 学习笔记总结_第12张图片

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()是蓝牙协议栈初始化,蓝牙初始化全都在这里。
    EFR32BG22 Thunderboard Kit 学习笔记总结_第13张图片

EFR32BG22 Thunderboard Kit 学习笔记总结_第14张图片

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

  2. app_init(); 是空的。

  3. sl_system_process_action() 用来处理 platform,service,stack,internel_app 事件,蓝牙事件也是在这里处理。
    EFR32BG22 Thunderboard Kit 学习笔记总结_第15张图片

  4. app_process_action(); 读取uart命令后处理,相当于shell 的交互服务。
    EFR32BG22 Thunderboard Kit 学习笔记总结_第16张图片

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

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

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

你可能感兴趣的:(单片机,嵌入式硬件)