STM32WB55入门教程

简介

本教程旨在帮助初学者快速上手STM32WB55微控制器,主要是BLE方面的使用。

本次使用的工程代码git可以直接拉取使用。

STM32WB55入门教程https://gitee.com/lei_kkaaa/stm32-wb55-begin

环境搭建

硬件

STM32WB55开发板,这里使用的是笔者自制的MB1355D开发板,在功能使用上和原版的一样。

这块开发板的资料我已经在立创开源,你也可以自己制作,

工程链接https://oshwhub.com/kkaaa/mb1355d

ST官网链接https://www.st.com.cn/zh/evaluation-tools/nucleo-wb55rg.html#overvie

软件

  1. Keil MDK
  2. STM32 CubeMX V6.14.1
  3. STM32 CubeProgrammer V2.17
  4. 串口工具
  5. 手机软件 ST BLE Toolbox
  6. 软件包 STM32Cube_FW_WB_V1.22.1

Hello World,心率服务测试

1.  首先拿到我们的开关板子,先把必要的跳线帽接上,如下图所示   

2. 然后我们将USB 线缆插到ST LINK的USB孔内,就能看到LED5,LED6常亮,这样的话就你可以证明开发板供电正常了。

FUS+STACK烧录

3. 接下来烧录例程HeartRate测试BLE功能。首先我们拿到的开关内部可能是有程序的,我们需要先进行一步全部擦除,使用软件STM32 CubeProgrammer进行全擦除,因为BLE使用的协议栈需要和我们的软件包的版本保持一致,否则容易造成死机,BLE起不来的情况。如果你遇到了BLE不广播的情况,请先检查协议栈的版本。

4. 全部擦除完成以后我们需要进行协议栈的烧录先烧录FUS(FUS烧录说明)再烧录协议栈。注意烧录的版本要和你使用的软件包的版本一致,比如我这里要用的软件包是V1.22.1,那就有这个软件包里的协议栈。

选择好文件以后我们不能直接点击升级FirmwareUpdate,先确认地址,因为地址不对的话烧录会报错的,地址在固件包的目录下有说明,我们打开固件包的说明文件检查地址(虽然Cube Programmer会自动填写地址但是貌似自动填写的有错误),

可以看到我们使用的STM32WB55RGV6,可以看到了两个文件的地址,

          stm32wb5x_FUS_fw.bin                 0x080EE000
 stm32wb5x_BLE_Stack_full_fw.bin                 0x080D0000

选择好文件并且确认地址,以后就点击FirmwareUpdate开始升级,只需要等待即可,期间会后两次弹窗,等完成以后都点击确定即可。

          然后开始升级协议栈,同样的也是先选择文件,

选择好文件以后,同样确认地址就点击FirmwareUpdate开始升级,只需要等待即可,期间会后两次弹窗,等完成以后都点击确定即可。

可以点击Read来确认我们的协议栈是否烧录成功

HreatRate软件烧录和测试

5. 烧录HreatRate软件测试,选择文件直接烧录HEX即可,

6. 使用手机ST BLE Toolbox查看广播,连接测试,都没有问题。

注意点

1.  FUS 2.0的问题 在STM32WB5x/Release_Notes.html文章中提到,

2.  当点击Read FUS的时候显示协议栈是V0.0.0的时候点击升级会出现错误 Warning: FUS_STATE IMG_NOT FOUND 意思就是说内部没有镜像,可以直接下载即可,把NO Delete选上,再次点击升级即可。

CustomService编写

本章将使用CubeMX生成CustomService,演示如何和手机进行通讯,如何读写特征值这些操作。

CubeMX配置

1. 使能HSEM

2. 使能IPCC和对应的中断

3. 配置时钟和时钟树,要使用BLE的话必须使用外部晶振32MHz和32.768KHz

4. 配置SYS,打开调试端口

5. 使能RTC和中断

6.  使能RF

7. 打开USART1和中断,并且打开DMA和其中断,注意在开发板上的USART1的引脚是PB6,PB7

8. 使能STM32_WPAN,并且配置BLE,SERVICE

配置广播数据

配置串口调试,开启SMPS,注意SMPS可以优化功耗,再同样的发射功率下,电流更低,但是接收灵敏度会略有降低,此外需要注意时钟树配置SMPS的是开关频率,如果使用10uH的电感对应4MHz,如果是2.2uH的电感对应8Mz,根据实际测试效果,使用10uH的功耗表现更好,灵敏度也较好。

 

到这里的话BLE部分就已经配置完成了,

最后生成代码即可

keil代码修改

1. 开启microlib,如果不开启的话下载之后会死机的。

2. 将调试初始化的函数添加到进来,不加的话无法打印出调试信息。打印的语句APP_DBG_MSG也就无法使用了。

APPD_Init();

3. 编译并且下载验证是否可以搜索到BLE,链接以后也能看到我们刚刚配置的服务和特征值。串口也正常打印调试的信息。

3.  先编辑读取特征值的功能,在文件custom_stm.c的回调里面添加回调即可,

Notification.Custom_Evt_Opcode = CUSTOM_STM_CRA1_READ_EVT;
Custom_STM_App_Notification(&Notification);

然后再在custom_app.c中进行实际数据的处理工作,

Custom_STM_App_Update_Char(CUSTOM_STM_CRA1,"HELLO");
APP_DBG_MSG("READ OK");

编译下载查看效果,可以正确读到数据,同时串口也打印了信息。

3.  再来编写写入特征值的功能。

同样也是先在custom_stm.c中加入回调,然后在custom_app.c中书写具体的处理工作。

/* 接收到数据 */
aci_gatt_write_resp(write_perm_req->Connection_Handle,
                                  write_perm_req->Attribute_Handle,
                                  0x00,    /* write_status = 0 (no error))*/
                                  0x00,    /* err_code */
                                  write_perm_req->Data_Length,
                                  (uint8_t *)&write_perm_req->Data[0]);

/* 通知应用 */
Notification.Custom_Evt_Opcode = CUSTOM_STM_CRA1_WRITE_NO_RESP_EVT;
Notification.DataTransfered.Length = write_perm_req->Data_Length;  //接收到的数据的长度
Notification.DataTransfered.pPayload = (uint8_t *)&write_perm_req->Data[0];  //接收到的数据的句柄
Custom_STM_App_Notification(&Notification);

在custom_app.c中将数据打印出来, 

APP_DBG_MSG("%s\n\0",pNotification->DataTransfered.pPayload);

 编译下载查看效果,

至此发送和接收数据的功能就已经实现了。

注意点

1. 配置了UART作为调试的串口,一定要记得使用函数APPD_Init()进行初始化,不然不会有信息打印出来

2. 本次使用的是CubeMX生成的Cusom服务,生成的四个文件(custom_stm.c,custom_stm.h,custom_app.c,custom_app.h)是可以直接移植到其他的CubeMX生成的BLE工程里的,不需要过多的修改非常方便。

学习该芯片时搜集的资料。包括英文手册和部分中文资料。 STM32WB系列为意法近年发售的无线MCU系列芯片。并集成了2.4G相关通信协议栈。 目录: 2.4 GHz low pass filter matched to STM32WB55CxRx.pdf 2.4G低通滤波器.docx Bluetooth ⑧Low Energy and 802.15.4 Nucleo pack.pdf Bluetooth low energy and 802.15.4 Nucleo pack.docx en.flstm32wb.pdf en.MB1293-WB55CGU-C02_ schematic.pdf en.MB1355-WB55RGV-C02. schematic.pdf en.stm32wb. marketing_ pres.pdf en.stm32wb. press-pres.pdf en.stm32wb55_ bluetooth certifiate.pdf en.STM32WB-Closing-Session.pdf en.stm32wb-communication-rf-overview-rf.docx en.STM32WB-Communication-RF-Overview-RF.pdf en.stm32wb-ecosystem-stm32wb-board.docx en.STM32WB-Ecosystem-STM32WB-Boards.pdf en.STM32WB-Introduction-Series-Presentation.pdf en.STM32WB-Introduction-Welcome. session.pdf en.STM32WB-Memory-QuadSPl-interface -QUADSPI.pdf en.stm32wb-peripheral-bluetooth-low-energy-bth.docx en.STM32WB-Peripheral-Bluetooth-Low-Energy-BTH.pdf en.STM32WB-System-ARM-Cortex-M0plus-CM0.pdf en.STM32WB-System-ARM-Cortex-M4-CM4.pdf flstm32wb.docx Getting started with STM32CubeWB for STM32WB Series.pdf Getting started with STM32CubeWB for STM32WBseries.docx p-nucleo-wb55.pdf STM32Cube MCU package examples for STM32WB Series.docx STM32Cube MCU Package examples for STM32WB Series.pdf STM32CubeMonRF release 2.3.0.pdf STM32CuBeMonRF release2.3.0.docx STM32CubeWB.docx STM32CubeWB.pdf STM32WB Nucleo-68 pack for wireless solutions.pdf STM32WB ultra-low-power features overview.pdf Usage of SMPS on STM32WB Series microcontrollers.pdf USAGE OF SMPS ON STM32WB.docx 进程组网.docx 开发板Data brief.docx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值