文章目录
- 一、预备知识:
- 二、准备工具:
- 三、FUS和无线协议栈更新流程
- 四、广播例程测试
- 五、DEBUG输出调试
一、预备知识:
- 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里面去
- 不同板子的晶振环境不同,比如没有LSE就不要再cubeMX中打开
- 查看有没有卡死在其他地方,比如RTC初始化里面,如果卡死了参考这篇博客:https://blog.csdn.net/a1058191679/article/details/136152359
- 运气好的话打开BLE调试助手,现在可以搜索到蓝牙信号了,仍然搜索不到信号参考下章节。。。
- 下载后先仿真确认程序可以跑到while里面去
五、DEBUG输出调试
-
如果比较倒霉,参考上面的方法仍然没有信号,可能是遇到了第三节中特别注意提到的情况。。。可以使用输出调试测试下,参考文章:https://blog.csdn.net/qq_24312945/article/details/132891223,这个比较灵活,主要的配置如下框选部分,灰色是因为需要配置串口后可选(USART1或LPUART1):
-
主要需要注意一个地方,使用串口作为BLE调试日志口的话要取消对应串口的初始化调用,类似如下位置打钩即可,串口配置好波特率和中断就行,使用DMA就先配置对应串口的发送DMA,无特殊注意事项
-
串口正常的打印类似如下: - 也可以使用RTTview的打印(按需选择打印方式),如果使用RTT下面需要修改成自己对应的打印函数,上面的串口配置依旧相同,生成部分的取消调用那个勾可以不打:
-
如果打印提示类似如下说明需要重新刷入固件,可以多刷几遍尝试(stm32CubeProgrammer提示成功不一定就是真的成功),需要注意刷入无线协议栈后你的程序需要重新刷入
-
如果打印提示类似如下可能是配置有问题,可以多试试:
-
广播正常的打印(包含了连接和断开,和上面的串口一样):
-
祝各位同学顺利跑通!enjoy~