这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【WBA55CG无线MCU开发大作战】蓝牙数据收发

共1条 1/1 1 跳转至

【WBA55CG无线MCU开发大作战】蓝牙数据收发

菜鸟
2025-01-14 17:54:20     打赏

一、资料收集

NUCLEO-WBA55CG ST官网链接

https://www.st.com.cn/zh/evaluation-tools/nucleo-wba55cg.html

该链接可以下载用户手册 开发板原理图,下图是用户手册,基础开发有这两个资料就够了。

图片1.png

二、初始化蓝牙

个人比较喜欢从头初始化一个干净的工程,不太喜欢直接用例程,因为例程套了一层BSP,把基本的LED IO、串口等再给封装了一套又一套的。

注:以下的流程是个失败的流程,不知道那一步出问题了,奇奇怪怪坑非常多的,难搞!所以后面只能基于例程修改了。

 

1、失败的新建BLE工程

开启SWD调试口(PS:ST官方BLE例程都不初始化SWD接口导致每次都要拉高Boot才能再次下载很恶心)

1736847545120.jpg

配置时钟

1736847567599.jpg

配置RAM

1736847625255.jpg

配置ICACHE

1736847645026.jpg

使能ADC的芯片内置的温度传感器通道

1736847668450.jpg

使能RF

1736847684715.jpg

使能RTC(有大坑)

1736847714067.jpg

1736847736816.jpg

参考例程要设置为31,但是这里只能设置为60。要设成和例程一样的31,就必须要先配置RTC的时钟源,CubeMX中没有任何提示,应用手册也没写怎么改,就坑。

1736847756419.jpg

最后也是搞好了,巨坑

1736847774672.jpg

使能CRC RNG

1736847792409.jpg

1736847802055.jpg

蓝牙成功配置好了,在按照提示使能TIM16

1736847815162.jpg

直接使能TIM16即可

1736847835901.jpg

使能串口

1736847855363.jpg

选择BLE的调试串口

1736847876956.jpg

配置广播名

1736847902978.jpg

配置好广播之后就可以有个初始功能了,但是编译会提示缺少一些定义

1736847937633.jpg

缺少的是UART的一些定义,对比发现需要取配置GDMA

1、为什么串口必须要去配置DMA,并且没有文档提示,也没有生成代码提示,如果必须要就应该提示啊?

2、为什么不允许不用DMA呢?就使用普通串口的话也应该有一套对应的代码。

生成代码后就会出现各种大天坑 和 各种编译报错等问题,非常无语,搞了一个多星期,做了各种尝试都没成功就没记录了,投降。


例如:

一开始GPDMA使能了2

1736848153920.jpg

后面就莫名其妙的好了(大概率是升级了cube mx)好不容易配置好,又有新的报错,不搞了,太废时间了。

1736848178662.jpg

最近STBLE相关的cube mx应该都有大坑,配置了几个系列都是这样的,非常无语,浪费时间!!!

 

2、修改例程

下文是选择P2P数据收发例程,直接修改成我要的服务 和 广播,相当于跳过初始化蓝牙。

修改广播名

1736848195316.jpg

修改短UUID 服务FF01

1736848220522.jpg

添加收数据(writeUUID FF02 的服务

为什么不能不定长接收数据,必须要给定长度,而且必须发送固定长度的才能接收到,不然收不到数据,非常奇葩,为什么原厂要这样设计,不太理解。

个人觉得肯定可以接收不定长的数据的,不可能必须固定长的,但是要去折腾,后面等有空了研究一下。

1736848235541.jpg

添加发送数据(NotifyUUID FF03的服务,这立的长度就无所谓的,后面改发送数据的接口就可以了。

1736848268725.jpg

直接编译通过,最近都不会去手贱从头配置蓝牙工程了,浪费半个月,无语。

1736848305634.jpg

编译烧录

 

三、数据收发实验

书接上文,在完成配置后,编译、烧录后,用手机APP 扫描广播、连接、交互数据。

 

1、扫描广播 与 发现服务

广播名、自定义服务的UUID 和 特征都和上文配置的一致,没有问题,运行正常!!

1736848330476.jpg

2、收发数据

2.1、打印接收数据

 

查阅代码后,找到了下图的位置,并且添加打印代码,将接收的数据都打印出来了。

1736848345676.jpg

接受都到的数据打印LOG如下:

1736848360120.jpg

2.2、发送数据给手机APP

查阅代码后,发现了发送数据的接口,但是这个接口看着不爽,不知道为什么发送数据接口要填OPCode,填handle还能理解,填OPCode不懂为什么,所以直接改造。

1736848382357.jpg


自己DIY的代码

1736848403508.jpg

调用发送数据接口,在接收数据后,回复手机 66 88

1736848422897.jpg

实验后手机APP显示效果如下:

1736848438223.jpg

以上就是蓝牙数据收发的全流程了。


































关键词: WBA55CG     蓝牙    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]