BLE是Bluetooth Low Energy的缩写|BLE入门谈:从空中数据收发理解BLE(上)

BLE是BluetoothLowEnergy的缩写 , 即低功耗蓝牙 , 是蓝牙规范的一个子集 , 从蓝牙4.0版本开始引入 。 BLE技术成功地适应了物联网时代那些需要少量无线数据传输 , 并对功耗很敏感的设备的需求 。 目前已经有为数不少的MCU器件将BLE无线收发电路集成于片内 , 还保持了MCU的低功耗特性 , 实现了单芯片的物联网解决方案 。
近几年我通过论坛的活动 , 陆续接触过NXP、ST、TI、ONSemi支持BLE的MCU产品 , 深感BLE的门槛不低 。 要设计一个充分发挥BLE优点的作品 , 需要对这一技术有比较全面的了解 。 学习理解BLE也需要一个过程 , 如果每次仅仅是把现有的例子拿来改一改 , 获得的经验很有限 。 从什么切入点开始学习比较好?也许不同的人习惯不同 。 我打算从MCU硬件工程师的角度提供一些参考 , 就有了这篇文章的构思 。
在MCU上使用BLE , 目的不外乎发送数据 , 或者是接收数据 。 为什么BLE入门难?对比下最简单的:UART、SPI , 和稍微复杂一点的I2C、CAN这些——它们都是有线连接(废话) , 发送方对接收方有一个单独(至少在传输时候是独占)的、可靠(正常情况下发出1/0就收到1/0)的数据通道;并且数据传递之前主机先发出请求 , 或者数据自身就带有请求标志 。 再看BLE , 数据通过无线电波发出 , 接收者要判断天线收到的电波里面有没有给自己的信号 , 再从有效的信号里解调出数据……复杂程度已经不可比拟了 。 虽然芯片上的无线功能模块已经把调制解调工作做了 , 但它的工作指令仍然是软件下达的 。
BLE要用无线电波传递信息 , 就是将数据编码 , 调制到射频信号中发射 。 通俗地讲BLE使用的电波频率是2.4G , 也就是和Wi-Fi、无线键盘鼠标,还有Zigbee、Thread等协议使用的2.4GHz一个概念 。 那么问题来了 , 这些信号会不会互相干扰?
首先要明确2.4GHz这个说法指的是一个频段而不是单一频率(全称2.4GHzIndustryScienceMedicineband) , 覆盖从2400MHz到2483.5MHz,是一个用于短距离 , 无须执照使用的开放频段 。 还必须明确:任何带有信息的信号传递都要占用一定的带宽 , 不可能是一个单一频率 。 单一的频率只能是一个永久恒定的正弦信号——它无法携带信息 。 例如 , 无线电广播所指的频率是其信号的中心频率 。 AM(调幅)639kHz的中国之声 , 实际信号带宽是它广播音频带宽的2倍 。
BLE在这个2.4GHz频段安排了40个信道(channel) , 中心频率从2402MHz开始 , 以2MHz为间隔 。 如下图上半部分:
BLE是Bluetooth Low Energy的缩写|BLE入门谈:从空中数据收发理解BLE(上)
文章图片
上图的下半部分是2.4GWi-Fi的信道占用频带示意 , 注意Wi-Fi的不同信道频带就很可能存在交叠 。 Wi-Fi和BLE整体的频率覆盖是重叠的 。 至于不同的2.4GHz无线设备是否相互干扰 , 要看实际通信的电波的能量分布:以时间为第一维度 , 以频率为第二维度看 , 只要不交叠 , 就不会产生干扰;但即使存在部分交叠 , 不严重的干扰并不损害被编码的数据;干扰的可能性总是存在的 , 各种无线协议还需要校验和重传机制来保证数据完整性 。
一个BLE设备 , 在任一时刻 , 只能选择40个信道之中的一个进行发射或者监听 。 发射或者试图监听的载波频率 , 就是对应信道的中心频率 。
BLE是Bluetooth Low Energy的缩写|BLE入门谈:从空中数据收发理解BLE(上)】BLE使用的调制方式叫做GFSK , 这是FSK调制的一个改进形式 。 FSK(FrequencyShiftKeying)是一种简单的调制的:就是将输出信号频率从2N个频率中根据调制编码进行选择切换 , 最简单是1-bit调制 , 称为2-FSK(本文不讨论其它的)如下图所示: