【STM32备忘录】【STM32WB系列的BLE低功耗蓝牙】一、测试广播配置搜不到信号的注意事项

一、预备知识:

  • WB系列是双核单片机,用户写M4,无线协议栈使用M0
  • 新买到手的单片机,需要自己刷入使用的无线协议栈
  • 刷入无线协议栈的途径是通过一个叫FUS的东东,类似于bootloader,这个FUS新买的芯片通常已经刷好,但版本不一定是最新的(如果没有需要自己刷入)
  • 刷入FUS和无线协议栈需要使用stm32CubeProgrammer和stlink(这种方式最方便)

二、准备工具:

(其他可行工具亦可)

  • stm32CubeMX
  • stm32CubeProgrammer
  • stlink一个
  • 一个手机端/PC端的BLE调试助手,通常应用商店就有

三、FUS和无线协议栈更新流程

不要被名字吓到了,,并不复杂,这里只写下几个注意事项,,,这篇帖子非常详细:https://shequ.stmicroelectronics.cn/forum.php?mod=viewthread&tid=632638&extra=
注意事项
- 无线协议栈的刷入地址要正确,不同型号单片机不一样
- 无线协议的刷入地址可以从Cube软件包内的SDK文档中查找,自己的是哪个系列就看哪个,一个参考路径(在你第一次使用cubeMX新建工程时软件包会自动下好):C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_WB_V1.17.3\Projects\STM32WB_Copro_Wireless_Binaries
- 特别注意,stm32CubeProgrammer刷入协议栈时即使勾选了校验,即使刷入后可以读取到FUS信息,并且信息没有错误,依然不保证协议栈已经正确刷入。。。异常说明和解决方式见下文第五章。。。

四、广播例程测试

cubeMX配置,开启STM32—WPAN前必须开启的部分:HSEM、IPCC及中断、RCC-HSE、RTC及中断、RF:

  • 外部32M晶振是必须的
    在这里插入图片描述
  • CPU2必须配置为32M
    在这里插入图片描述
  • RTC打开内部唤醒和中断
    在这里插入图片描述
  • 这三个没什么注意的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 最重要的蓝牙配置,打开就好,其他全默认即可,可以看到蓝牙名称
    在这里插入图片描述
  • 最简配置如上,生成代码后注意事项:
    • 下载后先仿真确认程序可以跑到while里面去
    • 运气好的话打开BLE调试助手,现在可以搜索到蓝牙信号了,仍然搜索不到信号参考下章节。。。

五、DEBUG输出调试

  • 如果比较倒霉,参考上面的方法仍然没有信号,可能是遇到了第三节中特别注意提到的情况。。。可以使用输出调试测试下,参考文章:https://blog.csdn.net/qq_24312945/article/details/132891223,这个比较灵活,主要的配置如下框选部分,灰色是因为需要配置串口后可选(USART1或LPUART1):
    在这里插入图片描述

  • 主要需要注意一个地方,使用串口作为BLE调试日志口的话要取消对应串口的初始化调用,类似如下位置打钩即可,串口配置好波特率和中断就行,使用DMA就先配置对应串口的发送DMA,无特殊注意事项
    在这里插入图片描述

  • 串口正常的打印类似如下:在这里插入图片描述 - 也可以使用RTTview的打印(按需选择打印方式),如果使用RTT下面需要修改成自己对应的打印函数,上面的串口配置依旧相同,生成部分的取消调用那个勾可以不打: 在这里插入图片描述

  • 如果打印提示类似如下说明需要重新刷入固件,可以多刷几遍尝试(stm32CubeProgrammer提示成功不一定就是真的成功),需要注意刷入无线协议栈后你的程序需要重新刷入
    在这里插入图片描述

  • 如果打印提示类似如下可能是配置有问题,可以多试试:
    在这里插入图片描述

  • 广播正常的打印(包含了连接和断开,和上面的串口一样):
    在这里插入图片描述

  • 祝各位同学顺利跑通!enjoy~

文章参考推荐

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学习该芯片时集的资料。包括英文手册和部分中文资料。 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
要在STM32配置BLE蓝牙,您可以参考以下步骤: 1. 确保您的STM32芯片支持BLE蓝牙功能。 2. 获取BLE模块并连接到STM32。 3. 配置UART串口。 4. 配置STM32的GPIO以控制BLE模块的状态。 5. 在STM32中编写BLE协议栈代码。 6. 使用BLE协议栈API进行通信。 下面是一些示例代码,以帮助您开始编写BLE协议栈代码: ```c #include "stm32f4xx.h" #include "ble.h" // define BLE module GPIO pins #define BLE_RESET_Pin GPIO_Pin_2 #define BLE_RESET_GPIO_Port GPIOA #define BLE_IRQ_Pin GPIO_Pin_3 #define BLE_IRQ_GPIO_Port GPIOA // define BLE module UART #define BLE_UART USART1 // BLE module IRQ handler void BLE_IRQ_Handler(void) { // handle BLE module IRQ } // initialize BLE module void BLE_Init(void) { // configure BLE module GPIO pins GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = BLE_RESET_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(BLE_RESET_GPIO_Port, &GPIO_InitStruct); GPIO_InitStruct.Pin = BLE_IRQ_Pin; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(BLE_IRQ_GPIO_Port, &GPIO_InitStruct); // reset BLE module HAL_GPIO_WritePin(BLE_RESET_GPIO_Port, BLE_RESET_Pin, GPIO_PIN_RESET); HAL_Delay(100); HAL_GPIO_WritePin(BLE_RESET_GPIO_Port, BLE_RESET_Pin, GPIO_PIN_SET); HAL_Delay(100); // configure BLE module UART UART_HandleTypeDef huart; huart.Instance = BLE_UART; huart.Init.BaudRate = 115200; huart.Init.WordLength = UART_WORDLENGTH_8B; huart.Init.StopBits = UART_STOPBITS_1; huart.Init.Parity = UART_PARITY_NONE; huart.Init.Mode = UART_MODE_TX_RX; huart.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart); // configure BLE module IRQ HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI3_IRQn); // initialize BLE protocol stack ble_init(); } // send data over BLE void BLE_SendData(uint8_t* data, uint16_t len) { ble_send_data(data, len); } // receive data over BLE uint16_t BLE_ReceiveData(uint8_t* data) { return ble_receive_data(data); } // main function int main(void) { // initialize STM32 and BLE module HAL_Init(); BLE_Init(); // send and receive data over BLE uint8_t data[] = "Hello, BLE!"; BLE_SendData(data, sizeof(data)); uint8_t buf[1024]; uint16_t len = BLE_ReceiveData(buf); // do something with received data if (len > 0) { // handle received data } // main loop while (1) { // do something } } ``` 这只是一个简单的示例代码,您需要根据您的具体情况进行修改和优化。该示例代码假设您使用了STM32F4系列芯片和BLE模块,且您已经熟悉了BLE协议栈和STM32的编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值