上次遇到了无法烧录的事情,回顾程序的配置过程发现是SWD没有开启。MCU在极低功耗模式下也会关闭SWD调试接口,对于这种情况,MCU也有提供低功耗调试的功能。STM32WB09KE引脚较少,Nucleo板在运行 BLE_p2pserver例程进入低功耗后就无法连接了,需要将JP1插针选择为BOOT Loader,在UM3345快速使用文档内有描述 下面来实际操作下,解答之前没有明确用法时的疑惑。对于这个UART类型的BOOT程序,会不自觉的想到ISP用到的串口连接。使用STM32CubeProgramer来完成,BOOT程序也是存储在内部FLASH,用户没有权限访问该地址,也可以理解为以往的串口IAP程序。但有所不同,因为进入BOOT Loader的条件是硬件复位时GPIOA PIN10的电平状态。大同小异,实操一下。( ?& g. F, t' b8 d, ]" x" Z' K 打开Programer程序,选择串口然后点击Connect,然后就出现了以下状态0 t2 ]' }2 V8 e) W! N/ o- A 看Log的内容,就回想起上次解决无法连接芯片的时候瞎搞,看到这个提示以为不行直接放弃了。但现在,不能放弃了,要找找原因。以往STM32的串口烧录,是偶校验的,波特率可以自适应。文档也写了WB09也支持波特率自适应,那么盲猜修改波特率下面的一些参数或许可以。于是,先改校验为NONE。# U [( F% l# ~9 {3 G) B 没想到成功了,连接的自动流程也是握手获取BOOT Loader信息、读取内部FLASH内容。看来就是大家很常见的8-NONE-1配置了。 看到这样的Log,料想已经成功过半了,打开bin文件或hex文件Download,不出意外也正常完成了。& p# Y& U+ @4 t) G- k1 k2 ]) \ 切换JP1的短路帽到用户FLASH模式启动,按下复位按键,程序如期运行。; c* h2 A! }" e, d! Y 自此,该芯片的串口烧录方式已经验证完成。在无法通过JLINK/STLINK连接到芯片的情况下,就可以使用串口来烧录没有开启SWD接口的程序来恢复使用。注意BOOT的选择引脚是PA10。; v0 R9 c; Z- R5 Q 上面是ISP协议文档的截图,那么WB09的这个串口烧录协议是否和其他老款芯片一致呢?毕竟也有不少用户希望自己做的软件能够集成这个简单方便的烧录功能。猜测大概率一致吧,找找官方有没有对应到该芯片的文档,或者直接用串口助手使用现有ISP协议来测试对照。这里不做扩展了。 9 ~* x' Y6 t8 O; E7 e3 J |
STM32WBA55上手BLE点灯
使用STM32WB系列微控制器构建无线应用
STM32WB基于Custom Template实现客户定制BLE私有协议
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED
【NUCLEO-WB09KE评测】+使用STM32CubeMX新建蓝牙工程
【NUCLEO-WB09KE评测】创建BLE工程和开启调试信息
【NUCLEO-WB09KE评测】+基于STM32CubeMX创建工程点灯
【NUCLEO-WB09KE评测】BLE例程HeartRate及工具探索
【NUCLEO-WB09KE评测】+实现读取温湿度传感器SHTC3数据