• 正文
  • 相关推荐
申请入驻 产业图谱

STM32和蓝牙的完美融合:再也不用外接蓝牙模块了

09/22 10:11
351
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在以前使用STM32开发的时候,涉及到和手机通信,一般都需要额外使用Wifi模块或者蓝牙模块,通常通过串口来连接蓝牙模块。

在面对设计无线通讯的方案中,有时候通常会选择ESP32,这种蓝牙+MCU一体的方案深得我心。但是ESP32也有它的硬伤,在外设功能上性能又低于STM32系列,于是经常需要做抉择。

在我的毕业设计中,为了完成和手机的蓝牙通讯,特意为单片机添加了一块BLE蓝牙芯片:WS8100,才能让主控STM32U0具有无线通信的功能。

因此STM32和无线通信相结合的方案非常需要。

STM32W系列是拥有无限通信的功能,我手上有一块STM32WL55-Nucleo的板子,这个板子有一个大天线用来通信,但可惜的是WL55并不能用来进行BLE和Wifi通信,它支持的LORA等。

这次去意法半导体的STM32全国研讨会,白嫖到了一块STM32WBA:

STM32WBA支持BLE5.4,这样子这块STM32就可以直接和手机进行通信了,本期我们就来试一下连接STM32WBA。

1、准备工作

WBA的基本外设要开启:串口、Debug下载口(防止二次烧录失败)、外部高速时钟、外部低速时钟以及一个LED灯用于调试。

在拓展包:STM32_WPAN中开启BLE的功能,这里的功能选择有很多,以后单独出一期讲解详细配置。

修改一下BLE设备的名称,之后我们还要设置一些基本广播配置,广播配置将是我们能够搜索到BLE设备的关键信息。

广播信息包含功率信息和广播名称,广播名称我们叫做YIYANG_STM32(自己修改)

我们随意添加一个服务,之后再配置这个服务。

 

随着WPAN开启后,还会随之开启ICACHE、RAMCFG、RTC还有TIM16定时器作为BLE心脏以及RF射频功能。

2、代码修改

在Main.c中添加app_ble.h,这个头文件包含了我们的要调用的应用层函数:

??MX_APPE_Init(NULL);??APP_BLE_Init();

在外设初始化后开启BLE调度,这样子BLE蓝牙就能够正常工作了,在BLE蓝牙开启后,我们还要修改BLE蓝牙权限让它可以被发现。

APP_BLE_Procedure_Gap_Peripheral(PROC_GAP_PERIPH_ADVERTISE_START_FAST);

3、效果查看

运行代码之后,我们就可以在BLE调试助手中看到我们周围的BLE设备,其中可以看到STM32WBA的广播名称:YIYANG_STM32。

我们连接这个设备之后查看它的服务特性:

这里我们对Device Name的内容进行读取,看一下读取的数据是不是我们设置的设备名称:

相关推荐