你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32WBA52CG评测】三、初识BLE

[复制链接]
Teresa 发布时间:2023-8-15 19:29

前言

上次评测自建了一个工程,但是面对BLE协议栈这种庞然大物,再加上本人是初次接触,完全是不了解的状态,单独跑了几个固件包里面的实例工程,老实说效果非常炫酷,但是实际做起来一窍不通。还好官网的资料丰富,论坛大神给劲,根据提示找到了LAT1309 一步一步创建STM32WBA BLE_Custom。至此,终于是能够建立一个基于CubeMX建立的个人工程了。

建立工程过程

工程的环境如下:

<ul><li>STM32CubeMX 6.9.1</li><li>MDK-ARM 5.38</li><li>STM32Cube FW_WBA V1.1.0</li></ul>

将CubeMX更新到最新版之后它会自动下载需要的固件包,虽然LAT1309中已经说得很详细,但是固件包与开发环境还是有所区别,所以特意说明

建立工程的整体过程可以说是非常的简单无脑,除了最基本的时钟电源等等,但是又因为是官方出品的开发板,所以直接建立一个基于NUCLEO的工程就行,直接把串口按键LED都调通了,也就是说我得工作在CubeMX这里直接点一下就完成了。然后为了建立一个基于BLE的工程,直接在Middleware and Software Packs处跟随"STM32_WPAN"的提示就能完成全部组件的建立

B1C29E81-0E0F-4f9e-AB97-5F4DC4**8E.png

图1 STM32_WPAN

在此处,只需要把鼠标悬停在STM32_WPAN上就可以知道下一步需要什么组件,一共是需要ADC、CRC、RAMCFG、ICACHE、RNG、RF和RTC。这里只需要跟随官方文档依次建立就能启动STM32_WPAN。

最后建立完成STM32_WPAN所需要的依赖项之后就能进行BLE协议栈的设置了。根据最近的学习,大致了解了一个自定义服务一共有三个特征,分别给三个特征建立不同的功能属性之后应该就能跑起来了

KEIL设置

官方文档演示的是基于IAR工程的生成,我是基于KEIL工程的生成,自然而然的遇到了一些小问题

首先是在app_entry.c中第111行CubeMX生成了一个static void SystemPower_Config(void)的函数声明,第267行也生成了static void SystemPower_Config(void)的函数定义,但是这个函数在main.h中又被引用,所以将app_entry.c中该函数的声明定义前的static去除

AD67F5B6-BF01-4163-8F9F-1143D44FDA36.png

图2 main.h中的声明

然后如果生成的代码必须在KEIL的Options中的Asm处Language/Code Generation栏的Assembler Option更改为armclang(Arm Syntax)

B44B8F1C-FE79-4846-ADBC-A7E2EB39E97E.png

图3 更改Asm

最后在编译时会冒出很多关于内存的错误,需要在Options中的Link处更改ScatterFile,我是直接拿了官方例子中的sct文件放在KEIL工程的根目录。

975C4053-EA96-490b-9540-0AA5B167167A.png

图4 更改Linker

更改了ScatterFile之后,还更改了Misc controls为 -diag_suppress 6654 -diag_suppress 6775

至于原因暂时不清楚,没有仔细研究过这方面

更改完上述三个问题之后,就能继续跟着官方文档作者的脚步继续前进了

image.png

图5 编译完毕

实验现象

将编译完成的程序下载到板子之后,可以通过手机进行连接,串口也会输出相应的信息

image.png

图6 初始化串口输出

在使用手机上的 ST BLE ToolBox进行连接之后还会输出更多信息。

image.png

图7 手机连接

然后能够使用ToolBox上的Sevices进行输入输出,但是在实验中发现并没有开启全部的功能,在手机APP上一通乱按之后,程序会直接闪退,应该是遇到没有响应的功能了

总结

因为对BLE协议栈与芯片功能的不熟悉,被迫使用了CubeMX生成代码,但是实际体验下来,效果非常的好,只需要点击就能启动硬件模块,然后还能通过提示来启动工程所需要的硬件依赖项。虽然最后在工程编译的时候遇到了一些问题,但是都无伤大雅,快速的解决之后如愿把工程跑了起来。很方便,争取之后的项目中多多使用。

本次的测验中还存在没有使用的BLE协议栈功能,等待继续深入了解蓝牙之后重新使用CubeMX再次生成工程解决手机APP闪退的问题。

收藏 评论4 发布时间:2023-8-15 19:29

举报

4个回答
STMCU-管管 回答时间:2023-8-17 15:11:31
期待更多分享4 a6 u' E; S$ k1 l0 S9 g
y369369 回答时间:2023-8-17 15:18:10
支持一下
9 O( G2 U* J4 Z9 B8 L
技术宅男250 回答时间:2023-8-18 15:22:23

使用蓝牙的时候,你能把主频调到100MHz吗?我在主频为16M的时候,蓝牙可以正常初始化,主频设置成100MHz的时候,在初始化蓝牙协议栈的时候挂了,蓝牙协议栈又不给开源,只给了一个Lib

bitterheart 回答时间:2023-8-30 09:00:40

牛!!!!

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版