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

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

3天内不再提示

实战经验 | 一步一步创建STM32WBA BLE_Custom工程

STM32单片机 来源:未知 2023-11-30 13:25 次阅读


关键词:STM32WBA,BLE,定制化


目录预览

1、介绍

2使用CubeMX在STM32WBA上构建 Bluetooth Low Energy 应用

3、服务和特征配置

4、工具

5、NUCLEO-WBA52CG 的 CubeMX 初始化

6、验证蓝牙基本连接

7、使能串口日志追踪

8、小结


01

介绍


STM32WBA 是 ST 最新一代的 BLE 芯片。该芯片已经获得 STM32CubeMX 工具的支持,用户可使用 STM32CubeMX 的图形化界面、快速生成具备 IO 配置、时钟配置、外设配置、中间件使用配置、BLE 服务配置等内容的基础源码工程。


本文档将指导用户如何使用 STM32CubeMX 软件一步步生成基于 STM32WBA52MCU 的一个源码工程;该工程实现了 BLE 外设功能、并具有定制化的 BLE 服务。使用STM32WBA 系列其他芯片也可以参考此文档的步骤构建对应的基础源码工程。



02

使用CubeMX在STM32WBA上构建 Bluetooth Low Energy 应用


将 STM32CubeMX 生成的源码工程进行简单修改后,便可运行在 STM32WBA Nucleo 板上、实现 BLE 外设功能。


BLE 外设充当 GATT 服务器角色,手机 APP(ST BLE ToolBox)充当 GATT 客户端角色,他们之间可以进行数据收发。


图1.通信示意图


03

服务和特征配置


该 GATT 服务器公开了一个定制化的服务(SerialPortService)并包含三个特征:

特征 1 具有 Notify 属性,可发送数据给手机

特征 2 具有 Write without response 属性,可接收手机的数据

特征 3 具有 Read 属性,可接受手机的读请求并发送响应数据包


服务器的服务和特征配置列举如下 :


表1. 服务和特征配置


04

工具


4.1. 软件工具


要制作和使用这个项目,完成应用程序所需的软件工具是:

• STM32CubeMX 软件 (v6.8.0 以上)

• STM32CubeWBA MCU Package (v1.0.0 以上)

• IDE: STM32CubeIDE or IAR

• 串口终端 (TeraTerm)

• 手机应用程序 STBLEToolbox


4.2. 硬件工具


还需要一个 STM32WBA Nucleo 板和一个 micro-B 到 Type-A USB 电缆。


图2.硬件工具


05

NUCLEO-WBA52CG 的 CubeMX 初始化


5.1. CubeMX 初始化


打开 CubeMX 软件及 MCU 选择器,打开的过程可能会进行数据库更新,耐心等待更新完成即可。另外,确保 CubeMX 是 6.8.0 以上版本,否则将找不到 STM32WBA 系列芯片。


图3.芯片开始一个工程配置


进入 MCU 选择器页面后,按照下图的步骤选中我们需要的开发板。


图4.选择对应的芯片型号


  1. 选择系列分类

  2. 选择 STM32WBA 系列

  3. 选择对应的 STM32WBA 芯片型号

  4. 选择 Start Project


图5. 根据应用需求选择是否使能 TrustZone


图6. 切换到“Project Manager”页,命名工程和选择工程保存路径和设置堆栈


用户可以根据自己的应用需求对工程名称路径,IDE 类型以及堆和栈等进行设置,上图给了一个参考示例。配置完成后,选中 File > Save Project 以保存工程配置(保存为.ioc 文件)。


5.2. 基本外设的配置


5.2.1. 切换到配置 SW 调试口


图7. 配置 SW 调试口


5.2.2. 配置基本 RCC


图8. 配置 RCC


5.3. STM32_WPAN BLE 依赖的外设的配置


STM32WBA 的 STM32_WPAN(BLE)的依赖项比较多。在配置的时候,我们无需死记需要配置的项目,可以将鼠标移到 STM32_WPAN 模块中,停留 2 秒钟,则会出现提示信息,用户可根据这些提示信息来依次配置 STM32_WPAN BLE 需要的模块。


STM32_WPAN BLE 模块依赖的模块包括:ADC、CRC、RAMCFG、ICACHE、RNG、RF、和 RTC。当用户完成一个模块的配置后,鼠标光标回到 WPAN 模块时,提示信息会继续指导用户仍然需要配置的模块,直到全部模块配置完毕。


图9. 根据提示信息来依次配置 STM32_WPAN


5.3.1. 配置 ADC


图10. 配置 ADC


5.3.2. 配置 CRC


图11. 根据提示配置下一个模块(CRC)


图12. 配置 CRC


5.3.3. 配置 RAMCFG


图13. 配置 RAM


5.3.4. 配置 ICACHE


图14. 配置 ICACHE


5.3.5. 配置 RNG


图15. 配置 RNG


5.3.6. 配置 RF


图16. 配置 RF


5.3.7. 配置 RTC


图17. 配置 RTC 部分 1


图18. 配置 RTC 部分 2


5.3.8. 配置 STM32_WPAN


当 WPAN 依赖的模块全部配置完毕,我们便可以开始 WPAN 的配置:


图19. 配置 STM32_WPAN


5.4. BLE GAP 和 GATT 配置


5.4.1. 配置 GAP


图20. 配置广播数据


5.4.2. 配置 GATT 服务


图21. 配置 GATT(添加服务)


图22. 配置 GATT(对服务进行定制化配置)


5.4.3. 配置自定义服务的特征 1(上报数据特征)


图23. 配置上报数据特征


5.4.4. 配置自定义服务的特征 2(写数据特征)


图24. 配置写数据特征


5.4.5. 配置自定义服务的特征 3(读数据特征)


图25. 配置读数据特征


5.5. 其他配置与代码生成


5.5.1. 进入“Clock Configuration”页面,按下图进行时钟配置


图26. 配置时钟


5.5.2. 配置初始化函数


图27. 配置初始化函数


5.5.3. 根据配置生成工程代码,点击“GENERATE CODE”按钮,并等待源码工程的生成。点“Open Folder”后,可看到如下代码工程目录:


图28. 根据配置生成工程代码


06

验证蓝牙基本连接


本文演示的是 IAR 工程的生成,用户也可生成 CUBEIDE 工程。


打开 IAR 工程、用户还需要手工增加代码以开启广播,具体为:在 STM32_WPAN > App > app_ble.c > void APP_BLE_Init(void) 函数的尾部增加下图所示的函数:



然后编译、下载并复位,使代码运行起来。


使用 ST BLE ToolBox 扫描,并连接该外设,可验证我们上面的服务配置是否正确:


图29. 验证基本连接


07

使能串口日志追踪


7.1. 当用户需要使能串口 LOG 输出功能时,可重新回到 CubeMX 的界面,进行串口的配置:


图30. 配置串口


图31. 配置串口 DMA


7.2. 为串口配置 GPDMA


图32. 给串口配置 GPDMA TX


图33. 给串口配置 GPDMA RX


图34. 配置串口追踪 1


图35. 配置串口追踪 2


图36. 使能串口中断


图37. 配置串口注册 callback


完成以上配置后,可再次点击“GENERATE CODE”生成新的代码。新的代码会覆盖掉工程中旧的代码,但不会覆盖工程中的用户代码部分。


7.3. 添加代码、开启串口日志追踪


新的代码生成后,还要再手工添加一些代码:


在 app_conf.h 中添加宏定义“CFG_DBG_SUPPORTED”以及在 main.c 中添加函数RNG_KERNEL_CLK_OFF()



7.4. 验证串口日志追踪功能


验证串口日志的方法比较简单,直接打开串口助手,选择好对应的串口,然后设置波特率为 115200,无奇偶校验,数据为 8bit,1 位停止位。


图38. 配置串口终端


7.4.1. 验证读特征


验证读特征可以在代码中添加如下代码(每次读取数据,将数值加一后发送出去)



7.4.2. 验证写和 Notify(上报数据)特征


验证写特征和上报数据特征可以一起进行。当收到写特征的数据时,直接将数据更新到上报数据特征中提交给 Client 端,如下图所示,其中主要修改了两个 case:

一个是允许写,一个是将收到的数据写回去。



7.4.3. 验证日志追踪


图39. 验证蓝牙功能串口日志


08

小结


本文介绍了如何从芯片开始一步一步配置一个 BLE 工程,实际用户在配置自己的项目时可以自行根据自己的项目需求而做相应的修改。


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



原文标题:实战经验 | 一步一步创建STM32WBA BLE_Custom工程

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

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

    关注

    6002

    文章

    43990

    浏览量

    620959
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348872

原文标题:实战经验 | 一步一步创建STM32WBA BLE_Custom工程

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

收藏 人收藏

    评论

    相关推荐

    STM32F207擦除片内FLASH,退出DEBUG无法执行下一步程序是怎么回事?

    由于项目需求,需要擦除片内指定空间,然后从SPI_FLASH中加载程序运行 问题如下:: 在DEBUG模式下,执行擦除程序后,则退出DEBUG,无法执行下一步程序 擦除代码如下: 1
    发表于 04-23 07:46

    mc workbench卡在代码生成这一步不动了是什么原因?

    mc workbench卡在代码生成这一步不动了是什么原因
    发表于 03-27 06:52

    STM32WBA Nucleo-64设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY,为什么?

    使用ST官方的STM32WBA Nucleo-64板子, 当设置主频为100M,发现启动过程中卡死在PWR_VOSR_VOSRDY; 设置主频为16MHz的时候,可以正常完成初始化。 使用的是CodeMx生成的工程 这是啥原因呢?看手册也没找到原因
    发表于 03-14 08:28

    STM32WBA52CG使用BLE的时候,为什么SYSCLK只能设置到16MHz?

    为什么STM32WBA52CG使用BLE的时候,SYSCLK只能设置到16MHz?如果设置到100MHz,那么串口1在初始化蓝牙协议栈后,就会出现乱码?蓝牙协议栈里面到底做了什么操作?如果只要使用了BLE,SYSCLK就只能16
    发表于 03-08 06:20

    有什么方法可以进一步提高AD7714的分辨率啊?

    级放大再加给AD7714时,测得人分辨率还要低些。由于是用干电池得到AD7714的输入信号,该信号相对来说很稳定,而且板上的噪声也不是太大。请问各位大虾,还有什么方法可以进一步提高AD7714的分辨率啊?不胜感激!
    发表于 12-25 06:33

    ad9106如何将波形频率设置为进一步降低到10Hz?

    你好,我有个小问题。我使用100m时钟芯片。每个时钟只有10ns,ad9106寄存器的最小输出波形只有100Hz。如何将波形频率设置为进一步降低到10Hz?我已将配置设置为相关寄存器的最大值。拍
    发表于 12-01 06:12

    请问AD598中(A-B)/(A+B)这一步A和B是直流信号还是交流信号?

    请问AD598中(A-B)/(A+B)这一步中A和B是直流信号还是交流信号?
    发表于 11-14 08:07

    请问如何进一步减小DTC控制系统的转矩脉动?

    如何进一步减小DTC控制系统的转矩脉动?
    发表于 10-18 06:53

    STM8在待机模式如何进一步降低功耗?

    有什么方法可以进一步降低待机模式的功耗
    发表于 10-12 07:23

    请问在将压缩包压到tpu-nnct这一步中,如何知道版本与哈希值?

    一步,我下载的SDK文件名称为“Release_22.10.01-public”,这文件名里只有发布日期呀。
    发表于 09-18 06:47

    STM32WBA无线MCU系列介绍

    本文档为STM32技术日-新品组合线上研讨会第二部分:STM32WBA-新STM32无线MCU的课件。
    发表于 09-06 06:46

    STM32WBA无线MCU系列

    电子发烧友网站提供《STM32WBA无线MCU系列.pdf》资料免费下载
    发表于 07-31 15:00 0次下载
    <b class='flag-5'>STM32WBA</b>无线MCU系列

    【板卡申请】STM32无线家族新品STM32WBA52CG免费申请,助力你的项目开发!

    ,会有什么不同呢?这次为大家准备了 7 块 ,我们一起来看看,或者对比一下本次新品STM32WBA在那些地方有提高?   关于STM32WBASTM32WBA系列32位无线器件为设计师提供了低功耗蓝牙(
    的头像 发表于 07-06 08:15 860次阅读
    【板卡申请】<b class='flag-5'>STM32</b>无线家族新品<b class='flag-5'>STM32WBA</b>52CG免费申请,助力你的项目开发!

    请教大神,根据GIT上SDK配置指导,最后一步构建HELLO_WORD出现失败的原因

    我根据HPM_SDK的说明文档,在WINDOWS下一步一步执行里面的操作,最后尝试“4. 为Ninja-build产生构建文件:”失几,提示截图如下: 哪位大神指导下这是什么问题,是哪一步出错了吗?
    发表于 06-06 22:15

    步进电机接收低到高电平走一步,如果是从高到低呢?也会转一步吗?

    步进电机接收低到高电平走一步,如果是从高到低呢?也会转一步吗?
    发表于 05-10 15:07