1. 课程导学与开发环境搭建

各位同学好,我是你们这门课的老周。做了十几年嵌入式,从8位机一路折腾到双核无线MCU,踩过的坑能绕深圳湾一圈。今天咱们开始第一讲,先把地基打牢。

这一章的目标很明确:搞清楚BLE到底是个啥,为什么选STM32WB,以及怎么把开发环境跑起来。别急着敲代码,先把这些概念理清楚,后面调优时才不会抓瞎。

1.1 BLE技术概览:它到底省电在哪?

低功耗蓝牙,英文叫Bluetooth Low Energy,简称BLE。很多人以为它就是普通蓝牙的省电版,其实不完全对。BLE是蓝牙技术联盟从4.0开始推的一套全新协议栈,跟经典蓝牙(BR/EDR)在底层设计上就有本质区别。

我刚开始接触BLE时也有个疑惑:都是2.4G频段,凭什么BLE就能用纽扣电池跑几个月?后来啃完协议栈才明白,核心在于三个字——不连续。

  • 经典蓝牙:建立连接后持续传输,像打电话,一直占着线。
  • 低功耗蓝牙:大部分时间在睡觉,醒来广播一下或者快速传完数据继续睡。像发微信,发完就挂。

BLE的省电逻辑说白了就是:能不干活就不干活,干活时尽量快。它定义了40个信道(37个数据信道+3个广播信道),采用跳频扩频技术,每次通信时间极短,平均功耗可以做到微安级别。

关键指标对比

特性经典蓝牙 (BR/EDR)低功耗蓝牙 (BLE)
信道数79个,1MHz带宽40个,2MHz带宽
峰值功耗~30mA~15mA
待机功耗~1mA~1μA
连接建立时间~100ms~3ms
应用场景音频流、文件传输传感器、穿戴、IoT

这里有个坑,我提醒一下:BLE虽然省电,但它的数据吞吐量远不如经典蓝牙。如果你要做音频传输或者大文件推送,别选BLE,那是给自己找麻烦。

1.2 为什么选STM32WB系列?

市面上能做BLE的芯片很多,Nordic、Dialog、TI都有成熟方案。但我个人习惯用ST的片子,原因有三:

  1. 双核架构:Cortex-M4跑应用,Cortex-M0+专门跑BLE协议栈。应用代码崩了不影响无线连接,这在调试时太香了。
  2. 生态成熟:STM32CubeMX一键生成工程,HAL库统一,从F系列迁移过来几乎零成本。
  3. 射频性能稳定:我在项目中做过实测,-96dBm的接收灵敏度,空旷地带50米通信毫无压力。

STM32WB系列目前主流型号是WB55和WB35。WB55带USB和全速OTG,WB35砍了USB但更便宜。咱们课程用的是WB55 Nucleo板,资源最全,方便大家折腾。

选型建议:如果产品对成本敏感且不需要USB,选WB35;如果要做原型验证或者需要OTA升级,直接上WB55,省心。

1.3 硬件平台介绍

咱们课程用的硬件是STM32WB55 Nucleo-64板,外加一块传感器扩展板。我简单说一下核心配置:

  • 主控:STM32WB55CGU6,Cortex-M4 @64MHz + Cortex-M0+ @32MHz
  • 内存:1MB Flash,256KB SRAM
  • 无线:BLE 5.0,支持2Mbps、长距离、广播扩展
  • 外设:USB、UART、I2C、SPI、ADC、DAC、RTC
  • 传感器扩展板:集成温湿度(HTS221)、气压(LPS22HB)、加速度计(LSM6DSL)、磁力计(LIS3MDL)

这块Nucleo板有个好处——自带ST-Link调试器,插上USB线就能下载和调试,不用额外买工具。我记得第一次用WB55时,从拆包装到点灯只花了10分钟,体验确实不错。

1.4 开发环境搭建:STM32CubeIDE

工欲善其事,必先利其器。咱们用ST官方推荐的STM32CubeIDE,它集成了CubeMX配置工具和Eclipse IDE,一套搞定。

安装步骤很简单,但我还是把关键点列出来:

  1. 去ST官网下载STM32CubeIDE(建议选最新稳定版,别追beta)
  2. 安装时勾选所有组件,包括STM32WB系列固件包
  3. 安装完成后打开,在Help菜单里更新固件包到最新
  4. 创建新工程,选择STM32WB55RG(Nucleo板对应的型号)
  5. 在Pinout & Configuration里使能BLE,选择P2P Server模板

注意:安装路径不要有中文和空格,否则编译时可能报一些莫名其妙的错误。我曾经因为这个折腾了一下午,最后发现是路径问题,气得想砸电脑。

工程创建完成后,你会看到两个核心文件:main.c(M4应用代码)和 ble_app.c(BLE协议栈回调)。这两个文件就是咱们后面调优的主战场。

1.5 知识体系总览

为了让大家对本章内容有个整体印象,我画了一张结构图。你看一眼就知道这一章讲了什么,以及各部分之间的关系。

第1章 知识体系结构 课程导学与环境搭建 BLE技术概览 省电原理·信道·角色 芯片选型 WB55 vs WB35 硬件平台 Nucleo板·传感器 开发环境 CubeIDE·固件包 广播与连接 功耗对比 双核架构 外设清单 工程模板 本章核心目标 理解BLE省电原理 → 选对芯片 → 搭建开发环境 为后续性能调优打下硬件与工具基础

1.6 快速验证:点个灯,跑个BLE广播

环境搭好后,咱们做个快速验证。新建工程,在main.c里加上LED闪烁代码,同时使能BLE广播。代码很简单:

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_BLE_Init();

  while (1)
  {
    HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
    HAL_Delay(500);
  }
}

编译下载后,用手机打开nRF Connect或者LightBlue,应该能扫描到一个叫"STM32WB_BLE"的设备。能扫到,说明你的环境没问题,BLE协议栈已经跑起来了。

小技巧:如果手机扫不到设备,先检查天线是否接好。Nucleo板默认带天线,但有些开发板需要外接。我遇到过好几次,折腾半天发现是天线没焊,尴尬得很。

好了,这一章的内容就到这里。环境搭好了,板子跑起来了,后面咱们就可以正式开始性能调优的实战了。