0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记 | STM32WB基于Custom Template实现客户定制BLE私有协议

STM32单片机 来源:未知 2023-10-08 17:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


关键字:STM32WB,BLE私有协议,定制



目录预览


1.引言

2.STM32CubeMx 实现步骤

3.测试平台搭建及功能测试

4.小结



01

引言


STM32WB55是一款支持BLE5.x的双核高性能MCU,针对BLE的应用固件包STM32Cube_FW_WB_V1.xx.xxProjectsP-NUCLEO-WB55.NucleoApplicationsBLE里面也提供了大量的例程,目前支持的标准GAP服务例程在STM32CubeMX中已有列出,或可以在固件包STM32Cube_FW_WB_V1.xx.xx MiddlewareSTSTM32_WPANlesvc中找到。然而,在实际的STM32WB意向客户中,使用BLE私有协议来开发Profile非标产品的客户占了绝大部分。读者可以去查看BLE_p2pServer、BLE_Custom等例程,对于需要添加自定义ATT属性和服务的应用,现有例程里面STM32CubeMX是无法自定义添加ATT属性和服务。但笔者发现,其实使用STM32CubeMX的Custom Template是能实现上述功能的。


本文的目的旨在使用STM32CubeMX以及Custom Template例程基于STM32WB55-Nucleo实现基于BLE私有协议的通用通信框架,使客户快速上手进行产品开发,且可以直接应用在产品上,应用框架的设计如下图所示。另外,本文还对BLE协议栈的下载和升级注意事项做了详细指导,如果读者不熟悉这些内容,可以先行阅读。



如上图所示,使用手机APP与STM32WB进行BLE私有协议通信,一共设计了4种类型的数据访问:读/写、只写、只读、通知,这4种访问类型基本可以覆盖大部分数据访问场景


02

STM32CubeMX实现步骤


2.1 创建BLE工程添加并配置外设


请在搭建工程之前,下载安装最新的STM32CubeMX和STM32CubeWB


2.1.1 在STM32CubeMX中点击“File”/“New Project”在弹出对话框中输入“STM32WB55RG”创建一个新工程



2.1.2 工程配置如下图所示,配置工程名字、保存路径、选择编译工具、调整堆栈大小和选择需要的STM32CubeWB的库文件(缺省为已安装的最新版本)。



2.1.3 系统配置:调试口



2.1.4 外设配置:添加外部高速晶振(HSE)和低速晶振(LSE)



2.1.5 外设配置:调试打印串口USART,手动将USART1引脚重映射到PB6/PB7



使能USART1的TX的DMA功能和USART1的全局中断



2.1.6 外设配置:使能HESM,它完全由BLE stack管理



2.1.7 外设配置:使能RF,它完全由BLE stack管理。



2.1.8 外设配置:使能IPCC,它完全由BLE stack管理。只需同时使能它的RX/TX中断即可。



2.1.9 外设配置:使能RTC,同时选择WakeUp为“Internal WakeUp”和WakeUp中断。



2.1.10 外设配置:配置时钟



2.1.11 外设配置:NVIC的配置



至此,外设的配置和添加部分已经完成。


2.2 BLE协议栈的添加及配置


2.2.1 协议栈配置:使能BLE协议栈



2.2.2 协议栈配置:禁止“Custom P2P Server”并使能“Custom Template”自定义GATT通用模板



2.2.3 协议栈配置:新建一个GATT服务,其名称为“My_Data_Server"



2.2.4 协议栈配置:GATT服务基本配置



2.2.5 协议栈配置:配置GATT读&写 服务特征及属性值



2.2.6 协议栈配置:配置GATT写 服务特征及属性值



2.2.7 协议栈配置:配置GATT读 服务特征及属性值



2.2.8 协议栈配置:配置GATT通知 服务特征及属性值



2.2.9 协议栈配置:配置GATT广播参数配置



2.2.10 协议栈配置:BLE配对参数设置



2.2.11 协议栈配置:BLE协议栈调试及打印配置(需依次序配置)



2.3 生成工程代码并初步测试


2.3.1 点击“GENERATE CODE”生成工程代码



2.3.2 在生成的代码中添加BLE Trace&Debug初始化代码


2.3.3 在“main.c”文件中取消“MX_UART_Init(void)”的“static”属性


2.3.4 在“app_entry.c”文件中增加“Debug”模块的初始化代码“APPD_Init()”。



2.3.5 下载代码到STM32WB55-NUCLEO中运行。此时,在手机的蓝牙列表中,已经能成功地搜索添加的BLE设备。说明Debug和BLE协议栈已经成功运行。



2.4 添加BLE Stack应用代码


为了便于对后续添加代码的理解,我们先将Central(手机)与STM32WB进行BLE通信的数据交互概括如下。所以需要将用户代码添加到Custom_STM_Event_Handler()、Custom_STM_App_Notification()中。



BLE应用代码添加:定义用户数据缓存。

在“custom_app.c”文件中定义4个用户缓存区数组。



BLE事件驱动代码添加:


在“custom_stm.c”文件中的“Custom_STM_Event_Handle r(void*Event)”中依次为WRITE_READ_DATA_BUF、WRITE_DATA_BUF、NOTIFY_DATA_BUF特征和属性添加stack层的事件驱动代码,以使BLE数据从stack层传递到app层。


添加特征1 Events:WRITE_READ_DATA_BUF(即User_Write_Read_Data[]对应的写&读操作句柄)请求驱动代码。



上图对应的代码文本如下所示:




上图对应的代码文本如下图所示:



添加特征2 Events驱动:WRITE_DATA_BUF(即User_Write_Data []对应的写操作句柄)代码。



上图对应的代码文本如下图所示:



添加特征3 Events驱动:READ_DATA_BUF(即User_Read_Data[]对应的写操作句柄)代码



上图对应的代码文本如下图所示:



添加特征4 Events驱动:NOTIFY_DATA_BUF(即User_Notify_Data[]对应的写操作句柄)请求驱动已经由STM32CubeMX自动完成了。NOTIFY_DATA_BUF不用再手动添加。



BLE应用数据代码添加:


在“custom_app.c”文件中的Custom_STM_App_Notification(Custom_STM_App_Notification_evt_t*pNotification)”添加代码,以将BLE数据上传到4个User_xxx_Data[]缓冲区,依次添加代码如下。



2.5 修改BLE最大数据包传输长度


如果不修改,BLE单包长度最大仅为23字节


1. 在“app_conf.h”中修改BLE stack最大数据包长度(CFG_BLE_MAX_ATT_MTU)



2. 在“app_ble.c”文件SVCCTL_UserEvtFlowStatus_t_SVC CTL_App_Notification(void*pckt)中添加红色部分代码。



至此,所有代码更改完成。


03

测试平台搭建及功能测试


3.1 使用STM32CubeProgrammer BLE协议栈安装(升级)


升级ST-LINK固件以保证与STM32CubeProgrammer驱动是匹配的



查看当前FUS版本,并将FUS升级到最新版本



如果当前FUS版本是0.5.3,FUS固件使用“stm32wb5x_FUS_fw_for_fus_0_5_3.bin”,否则FUS固件使用“stm32wb5x_FUS_fw.bin”,强烈建议阅读BLE协议栈及FUS升级详细说明“STM32Cube_FW_WB_V1.13.3Projects STM32WB_Copro_Wireless_BinariesSTM32WB5xRelease_Notes.html”。



升级(安装)BLE协议栈,根据MCU型号选择相应的固件和下载地址



3.2 测试平台搭建及验证


3.2.1 在Android安卓应用市场下载安装“BLE调试助手”



3.2.2 可发现设备“MY_STM32WB”,并点击“CONNECT”后可以发现application特征和属性访问服务,如下图所示。



3.2.3 设置BLE最大单包传输长度为256字节,否则L2CAP层传输超过23字节将自动分包。



3.2.4 手机app写数据访问(User_Write_Read_Data[64])测试



3.2.5 手机App读数据访问(User_Write_Read_Data[64])测试



3.2.6 手机App写User_Write_Data[64]测试



3.2.7 手机App读User_Read_Data[64]测试。



3.2.8 通知数据访问(User_Notify_Data[64])测试



至此,整个验证和测试过程完成。


04

小结



BLE经过多年的发展和迭代,BLE协议本身已是一个很复杂和庞大的协议族,如果希望开发自定义Service和GATT应用时,若对底层协议不熟悉的话还是较为困难的。但是由于STM32良好的生态,特别是借助于我们的STM32CubeMX+STM32Cube_FW_ WB固件包,使得我们可以快速、高效地开发出各种BLE应用。



完整内容请点击“阅读原文”下载原文档。


订阅号

关注STM32

视频号


B站账号


原文标题:应用笔记 | STM32WB基于Custom Template实现客户定制BLE私有协议

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6078

    文章

    45629

    浏览量

    675330
  • STM32
    +关注

    关注

    2313

    文章

    11206

    浏览量

    375230

原文标题:应用笔记 | STM32WB基于Custom Template实现客户定制BLE私有协议

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OM6627C—针对蓝牙低功耗 (BLE) 及 2.4GHz 私有协议应用

    OM6627是一款针对蓝牙低功耗(BLE)及 2.4GHz私有协议应用而优化的低功耗真系统级芯片(SoC)解决方案。它集成了高性能、低功耗的射频收发器、蓝牙基带以及丰富的外部外设IO扩展接口
    发表于 05-13 17:11

    AN5289 使用 STM32WB 系列微控制器构建射频应用笔记

    本文档一步一步地指导设计人员基于 STM32WB 系列微控制器构建特定 Bluetooth低功耗或802.15.4 应用。它汇集了最重要的信息,并且列出了需要处理的方面。为了充分利用本文档中的信息
    发表于 01-09 14:13 0次下载

    LAT1215+如何让 STM32WB 在没有 LSE 时运行 BLE 应用程序

    首先 LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准确,不需要校准
    发表于 01-09 10:55 0次下载

    STM32WB 系列微控制器 OTA 和无线固件更新应用笔记

    本文档介绍了通过低功耗蓝牙连接在 STM32WB 设备上进行 OTA 固件更新的过程。它讲解如何使用 STM32Cube 固件包中提供的 OTA 应用程序,实现用户应用程序、无线固件和固件升级服务的更新。
    发表于 01-08 14:50 0次下载

    MLPF-WB55-01E3:2.4 GHz低通滤波器的卓越之选

    STM32WB55Cx/Rx、STM32WB50Cx、STM32WB35Cx和STM32WB30Cx系列微控制器设计的2.4 GHz低通滤波器。它集成了阻抗匹配网络和谐波滤波器,旨在最
    的头像 发表于 12-31 17:20 2193次阅读

    MLPF - WB55 - 01E3:2.4 GHz低通滤波器的深度解析

    的是STMicroelectronics推出的一款2.4 GHz低通滤波器——MLPF - WB55 - 01E3,它专为匹配STM32WB系列微控制器而设计,具有诸多出色特性。 文件下载: MLPF-WB55-01E3.pdf
    的头像 发表于 12-17 17:35 877次阅读

    SIP协议私有协议广播区别

    电子发烧友网站提供《SIP协议私有协议广播区别.docx》资料免费下载
    发表于 11-06 16:31 2次下载

    MLPF-WB-02D3低通滤波器技术解析与应用指南

    STMicroelectronics MLPF-WB-02D3 2.4GHz低通滤波器集成了阻抗匹配网络和谐波滤波器。匹配阻抗网络经过量身定制,可最大限度地提高采用WLCSP和UFBGA封装
    的头像 发表于 10-27 15:21 798次阅读
    MLPF-<b class='flag-5'>WB</b>-02D3低通滤波器技术解析与应用指南

    STM32WB1MMC蓝牙低功耗模块技术解析与应用设计

    微控制器,具有出色的接收器灵敏度和高输出功率信号,因此可提供同类最佳的射频性能。其低功耗特性可延长电池寿命、小纽扣电池或能量采集。STMicroelectronics STM32WB1MMC无需射频专业知识,是加快应用开发和降低相关成本的理想方法。该模块完全免协议堆栈版税
    的头像 发表于 10-25 16:20 1865次阅读
    <b class='flag-5'>STM32WB</b>1MMC蓝牙低功耗模块技术解析与应用设计

    STM32WB连接扩展板技术解析:从硬件架构到开发实践

    STMicroelectronics B-WB1M-WPAN1连接扩展板设有板载STM32WB1MMCH6。STMicro B-WB1M-WPAN1连接扩展板提供母头-母头STMOD+
    的头像 发表于 10-23 09:40 893次阅读
    <b class='flag-5'>STM32WB</b>连接扩展板技术解析:从硬件架构到开发实践

    STM32WB09xE蓝牙低功耗MCU技术解析

    STMicroelectronics STM32WB09 BLUETOOTH® 低功耗5.4 32位MCU嵌入最先进的2.4GHz射频无线电外设,优化用于实现超低功耗和出色的无线电性能,可实现
    的头像 发表于 10-20 09:29 943次阅读
    <b class='flag-5'>STM32WB</b>09xE蓝牙低功耗MCU技术解析

    STM32WB09KE评估板技术解析与应用指南

    STMicroelectronics NUCLEO-WB09KE STM32WB09评估板是一款蓝牙® 低功耗无线和超低功耗板,内置功能强大、超低功耗无线电,符合蓝牙低功耗SIG规范v5.4
    的头像 发表于 10-17 18:07 1479次阅读
    <b class='flag-5'>STM32WB</b>09KE评估板技术解析与应用指南

    使用不同的Bluetooth®适配器时,BLE速率较慢怎么解决?

    我已经在CYW20829中编写了一个BLE服务器程序。 当我使用 Python 脚本将其连接到我的计算机时,它可以达到 800 Kbps,该脚本生成使用 Bleak 的 BLE 客户端,并使
    发表于 06-27 06:28

    GPDV6624C应用笔记1.0版

    电子发烧友网站提供《GPDV6624C应用笔记1.0版.pdf》资料免费下载
    发表于 06-06 17:20 0次下载

    STM32WB5MMG模块能否支持Thread转WIFI?

    请帮忙推荐一款可以WIFI转Sub-G/Zibber协议的芯片,希望做了无线认证。非常感谢。 1.STM32WB5MMG模块能否支持Thread转WIFI; 2.Nucleo-WBA55RG(主控
    发表于 06-04 07:21