实战经验|一步一步创建STM32WBABLE_Custom工程

原创 STM32单片机 2023-11-30 13:16


关键词: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 工程,实际用户在配置自己的项目时可以自行根据自己的项目需求而做相应的修改。


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


STM32单片机 ST MCU (产品+工具+资料+技术+市场+活动)x 您的关注x您的支持 = STM32 单片机蝴蝶乐园
评论
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 390浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 100浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 164浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 49浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 41浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 111浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 182浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 183浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 121浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦