[分享] 【NUCLEO-WBA52CG STM32无线产品家族新系列】+5、BLE_DataThroughput_Server

dql2016   2023-9-1 21:48 楼主

STM32WBA支持低功耗蓝牙(BLE)5.3应用所需的性能、效率和安全性,特性包括:

  •  高数据速率确保快速可靠的数据传输
  • 远距离能力,扩大通信距离
  • 高输出功率,输出功率+10 dBm扩大了通信距离
  • 低功耗通讯功能可延长电池寿命
  • 基于低功耗蓝牙(BLE)5.3技术打造创新型设备
  • 通过设备通信广播扩展来延长电池寿命
  • 确保快速、可靠的数据传输,空中通信速率高达2Mbps
  • CoreMark评分达到407,确保高效的应用处理

BLE_DataThroughput_Server例程演示了如何作为GATT服务器实现点对点的通信,支持一个数据传输服务和支持通知的传输特征值。基于该例程修改我们很容易开发自己的蓝牙通信程序。通过官方提供的手册,可以了解基本的蓝牙应用构成:

屏幕截图 2023-09-01 210735.png

从图中可以看出,ST将蓝牙应用分为3层,最底层为蓝牙协议栈,中间层为GATT管理模块,提供蓝牙服务,上层为GAP管理模块,包含用户应用。

GAP(Generic Access Profile)用来控制设备连接和广播,GAP 使设备被其他设备可见,并决定了设备是否可以或者怎样与其它设备进行交互。GAP 给设备定义了若干角色,其中主要的两个是:外围设备(Peripheral)和中心设备(Central)。

外围设备:这一般就是非常小或者简单的低功耗设备,用来提供数据,并连接到一个更加相对强大的中心设备。
中心设备:中心设备相对比较强大,用来连接其他外围设备。

在 GAP 中外围设备通过两种方式向外广播数据:广播数据和扫描回复。广播数据是必需的,因为外设必需不停的向外广播,让中心设备知道它的存在。扫描回复是可选的,中心设备可以向外设请求扫描回复,这里包含一些设备额外的信息,例如设备的名字。

GATT(Generic Attribute Profile)定义两个 BLE 设备通过叫做 Service 和 Characteristic 的东西进行通信。GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见。当设备断开,它又开始广播。

中心设备和外设需要双向通信的话,唯一的方式就是建立 GATT 连接。GATT事务是建立在嵌套的Profiles,Services和Characteristics之上的,

每个Service有一个UUID唯一标识。UUID有16bit的,或者128bit的。

Characteristic是最小的逻辑数据单元,每个Characteristic用16bit或者128bit的UUID唯一标识。

官方提供的通过STM32CubeMX生成的程序都具有下图所示的结构:用户不需要关系底层的蓝牙协议是如何实现的,只需要开发自己的特征值和服务应用即可。

屏幕截图 2023-09-01 210649.png

 

串口打印日志,上电后开启广播,手机连接后就停止广播,并提供特征值的访问:

 

屏幕截图 2023-09-01 213021.png

 

连接后可以看到特征值和服务:

微信图片_20230901213118.jpg

通知开启和关闭:

 

微信图片_20230901213126.jpg

 

 

 

回复评论 (1)

我们不需要关心底层的蓝牙协议是如何实现的,也是很方便的

点赞  2023-9-4 07:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复