CH579 BLE开发学习(1)
介绍
最近实验室安排了一个动物智能耳标的开发项目,沟通需求之后选择用低功耗蓝牙芯片CH579来做,因为是第一次接触BLE,所以记录一下完整的学习过程,当作笔记,这也是我第一次写博客,希望多多指点。
CH579协议栈
协议栈由 Host(主机协议层)和 Controller(控制协议层)组成,结构如下:
链路层(Link Layer)
RF 控制器。它控制设备处于准备(standby)、广播(advertising)、监听/扫描(scanning)、初始化(initiating)、连接(connected)这五种状态中一种。围绕这几种状态,BLE 设备可以执行广播和连接等操作,链路层定义了在各种状态下的数据包格式、时序规范和接口协议。
物理通道
BLE设备有3个广播通道,37个数据通道
广播信道分别分布于前中后三个不同的段,避免广播扫描过程中相邻信道干扰。
链路层操作的5个状态描述:
准备就绪状态(Standby State):不接收和发送任何数据
广播状态(Advertising State):发出广播通道包
扫描状态(Scanning State):监听其它设备发出的广播包
初始化状态(Initiating State):监听连接过的设备的广播包,同时做出回应从而开始连接
连接状态(Connection State):从Initiating State进入此状态为主,从Advertising State进入此状态为从
链路层只能处于上述状态中的一种。
BLE Packet格式
preamble(前导帧)为1个字节,为交替的0 1格式,根据Access Address第一个Bit,有两种取值情况:0x55或者0xAA(纯PHY层行为)
Access Address用来标示接收者ID或者空中包身份,如前所示,BLE只有一种packet格式,根据Access Address的不同,又区分两种Packet类型:广播包和数据包:
广播包Access Address: 固定为0x8E89BED6,广播包只能在广播信道(channel)上传输,即只能在37/38/39信道上传输(注:从蓝牙5.0开始广播包可以在其它信道上传输)。广播包发送给附近所有的observer(扫描者