EFR32BG22 I2C与BLE数据透传实战指南

EFR32BG22 的三种电源设计 EFR32xG22有多个电源轨:DC-DC稳压器输入(VREGVDD)、IO电源(IOVDD)、模拟(AVDD)、RF模拟电源(RFVDD)、RF功率放大器电源(PAVDD)、数字LDO和闪存(DVDD)以及低电压数字电源(DECOUPLE)。每个配置和选项的其他细节将在以下章节给出。 由于片上电路(如二极管)的原因,EFR32的一些电源引脚与一个或多个其他电源引脚有依赖关系。电源引脚有依赖关系。这些应用于EFR32各电源引脚的外部电压的内部关系定义如下。超过下面的限制条件会导致设备的损坏和/或增加电流。 阅读详情

1. 项目背景与硬件选型

最近在做一个智能家居传感器项目,需要将温湿度传感器的数据无线传输到手机端。经过多方比较,我最终选择了Silicon Labs的EFR32BG22作为主控芯片。这款芯片真的让我眼前一亮,它集成了Cortex-M33内核和2.4GHz射频模块,功耗低得惊人,在蓝牙传输时电流只有几毫安。

为什么选择EFR32BG22呢?首先它的性价比很高,一片芯片就解决了MCU和蓝牙射频两个需求,不需要外挂蓝牙模块。其次它的开发环境很友好,Simplicity Studio 5提供了完整的工具链。最重要的是,它支持丰富的通信接口,包括I2C、SPI、UART等,正好满足我连接各种传感器的需求。

在我的项目中,使用了一款常见的I2C接口温湿度传感器,通过两根线(SDA和SCL)与EFR32BG22连接。整个硬件架构非常简洁:传感器负责采集数据,EFR32BG22负责处理并通过蓝牙传输,手机端接收显示。这种设计既节省了PCB空间,又降低了系统复杂度。

2. 开发环境搭建

刚开始接触EFR32BG22时,我在开发环境搭建上花了些时间。Simplicity Studio 5的安装过程比较直接,但需要注意选择正确的SDK版本。我推荐使用Gecko SDK v3.2.0或更高版本,这些版本对EFR32BG22的支持更加完善。

安装完成后,首先要创建新项目。在Simplicity Studio中选择"New Project",然后找到EFR32BG22对应的开发板型号。我使用的是TBRL4184A开发板,如果你用的是其他板子,记得选择对应的型号。创建项目时建议选择"Empty"模板,这样可以从零开始配置,更好地理解整个流程。

SDK组件的选择很重要。除了默认的蓝牙栈之外,还需要添加I2C驱动组件。在Software Components面板中搜索"I2C",选择"I2CSPM"(I2C Simple Polling Mode)组件。这个组件提供了轮询方式的I2C操作接口,对于传感器数据采集来说完全够用,而且比中断方式更简单可靠。

3. 硬件引脚配置

引脚配置是第一个实操环节,也是容易出错的步骤。EFR32BG22的引脚功能很灵活,每个引脚都可以配置为多种功能。我建议先在数据手册中找到I2C对应的引脚映射,避免选到不支持I2C功能的引脚。

打开Pin Tool工具后,可以看到芯片的引脚分布图。我需要将PC0配置为SCL,PC1配置为SDA。在Pin Tool中右键点击PC0引脚,选择"I2C0_SCL"功能,同样的方法将PC1配置为"I2C0_SDA"。配置完成后记得检查引脚模式,I2C引脚需要设置为开漏输出(Open Drain)模式,并启用上拉电阻。

配置完成后,Simplicity Studio会自动生成引脚初始化代码。你可以在autogen目录下的sl_pin_init.c文件中查看生成的代码。这些代码会在系统启动时自动执行,确保引脚工作在正确的模式下。如果后续需要修改引脚配置,只需要在Pin Tool中重新配置即可,不需要手动修改代码。

4. I2C外设初始化

引脚配置完成后,接下来要初始化I2C外设。在Software Components中启用I2C组件后,系统会自动生成初始化函数。主要的初始化工作在sl_i2cspm_init_instances()函数中完成,这个函数会配置I2C的时钟频率、工作模式等参数。

I2C的时钟配置需要特别注意。EFR32BG22支持多种时钟源,我建议使用高频RC oscillator(HFXO)作为时钟源,这样能获得更稳定的I2C时序。时钟频率设置为100kHz是比较稳妥的选择,大多数I2C传感器都支持这个速率。如果需要更高的传输速度,可以设置为400kHz,但要确保传感器支持快速模式。

初始化完成后,可以通过sl_i2cspm_get_handle()函数获取I2C实例的句柄。这个句柄在后面进行数据传输时会用到。我习惯在程序初始化阶段就获取句柄并保存起来,避免每次传输时都要重新获取。

// I2C实例句柄
static sl_i2cspm_t *i2c_handle = NULL;

void init_i2c(void)
{
    /
EFR32BG22蓝牙开发实战:从环境搭建到稳定透传 蓝牙低功耗(BLE)开发本质是协议栈、硬件抽象与工具链的协同工程。理解Gecko SDK组件化构建原理,掌握Simplicity Studio V5作为IDE+SDK管理器+工具链调度中心的三层定位,是打通EFR32BG22开发闭环的前提。GNU ARM Toolchain版本兼容性、双核IPC通信机制、GATT数据库XML静态生成、EM2低功耗下外设唤醒等关键技术点,共同决定了广播稳定性、连接鲁棒性与数据透传可靠性。本文聚焦Silicon Labs BG22平台,覆盖环境精准对齐、GATT服务定义、事件驱 阅读详情

相关推荐

手把手教你用EFR32BG22实现BLE串口透传(附GATT配置全流程)

本文详细介绍了如何使用EFR32BG22芯片实现低功耗蓝牙串口透传功能,涵盖GATT服务配置、数据传输优化及手机端调试全流程。通过实战指南,开发者可快速掌握BLE串口透传技术,提升物联网设备开发效率。

weixin_29161719的博客 254

手把手教你用EFR32BG22实现BLE串口透传:从GATT配置到手机端通信全流程

本文详细介绍了如何使用Silicon Labs的EFR32BG22低功耗蓝牙SoC,从零开始构建一个完整的BLE串口透传服务。内容涵盖从GATT服务与特征值的核心设计、在Simplicity Studio中的可视化配置,到应用层事件处理与数据收发的代码实现,最后通过手机端EFR Connect App进行全流程验证,为物联网设备开发提供了实用的低功耗蓝牙通信解决方案。

weixin_29192365的博客 302

手把手教你用Simplicity Studio配置BG22蓝牙工程(从GATT到温度数据接收全流程)

本文提供了一份详尽的EFR32BG22蓝牙温度监测系统开发指南。通过Simplicity Studio平台,手把手演示了从工程创建、GATT服务图形化配置、应用逻辑代码编写到手机端数据接收验证的全流程。重点讲解了如何利用图形化工具高效定义蓝牙通信协议,并实现从模拟数据到连接真实温度传感器(如TMP117)的进阶实践,帮助开发者快速构建低功耗物联网传感节点。

g9h0i1的博客 490

EFR32BG22电池电压监测实战:从ADC配置到低功耗优化(附完整代码)

本文详细介绍了EFR32BG22低功耗蓝牙SoC在电池电压监测中的实战应用,从ADC配置到低功耗优化。通过解析12位ADC模块架构、分压电路设计及校准技巧,提供完整的代码实现和调试建议,帮助开发者高效实现物联网设备的长期稳定运行。

yhn45678901的博客 664

Bash中数组的操作教程

前言 BASH只支持一维数组,但参数个数没有限制。 如声明一个数组: declare -a array (其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)  一、定义数组 1. 使用[]操作符 names[0]='zrong' names[1]='jacky' 2. 使用()直接赋值 names=('zrong' 'jacky') # 或 names=([0]='zrong' [1]='jacky') 3. 使用declare -a定义数组。这种方法可以将一个空的变量定义成数组类型。 declare -a names 4. 从文件中读取数组 cat>names

EFR32BG22 I2C通讯学习笔记

相关工程源码

vivado安装空间与依赖要求:入门须知要点

准备安装Vivado时,需重点关注系统空间和依赖环境的配置。结合vivado安装教程,详细说明最低磁盘要求、内存配置及操作系统兼容性,帮助新手快速搭建开发环境,避免常见安装失败问题。

weixin_34725745的博客 1580

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。 1、目录结构 zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C . ├──

恍恍惚惚的大穷猫的博客 3万+

华为OD机试真题 - 矩阵匹配 牛客网

2024华为OD机试真题,代码包含语言java、js、python、c 代码基本都有详细注释。 题目描述 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式: N M K N*M矩阵 输出描述 N*M 的矩阵中可以选出 M! / N! 种组合数组,每个组合数组种第 K 大的数中的最小值。无需考虑重复数字,直接取字典排序结果即可。

2301_76543445的博客 499

FPGA实现PI控制

FPGA实现PI控制

m0_57319166的博客 3898

大智慧L2实时api接口的逐笔委托功能执行代码分享

用过l2行情接口的投资者应该都了解大部分的接口都是有逐笔委托功能的,那么大智慧L2实时api接口也有着很强大的逐笔委托功能,投资者可以通过这个逐笔委托功能可以看到一个股票的每天出现的全部委托指令,那么在这个逐笔委托功能里包含了委托价格、委托时间、委托量和委托方向四个要素!那么接下来小编就分享一下大智慧L2实时api接口的逐笔委托功能执行代码!那么在这里提个醒:投资者可以在大智慧L2实时api接口进行设置过滤,在逐笔委托列表里,就仅仅只会显示超过设置委托量或委托额的委托单,而不再显示小单。

Qq_2037696191的博客 3734

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程。包括:无人机航测外业作业流程(像控点布设、航线规划、仿地飞行、航拍)和内业数据处理软件(Pix4d、CC、EPS、PhotoScan、Globalmapper)像控点权重调配、空三加密、DOM、DSM、DEM,DLG生成、等高线生成、高程点提取,点云分类过滤分割、点云生成DEM、三维模型生成等。

智慧空间实验室 3961

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 561

Jetson agx Orin 适配Xenomai4

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

xiaoning132的专栏 468

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 超越步骤:深入理解瑞萨RZ/N2L开发工具链的生态与设计哲学
下一篇: EFR32BG22 I2C与BLE数据透传实战笔记
linux6sysadmin
博客等级 码龄4年 59粉丝 1615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值