关于蓝牙通信协议的理解
一、时钟要求
Active状态下小于±50ppm。 Sleep Mode下小于±500ppm。
二、设备过滤
除了仅支持不可连接的广播系统(non-connectable advertising),其他模式均需支持设备过滤。广播、扫描、连接发起均具有各自独立的过滤机制。如果芯片不支持这几种模式的话,那就可以不支持设备过滤。设备过滤是为了尽量减少不必要的数据通信。 设备过滤时需要具备一个白名单,白名单内容包括不过滤设备的地址和地址类型(公共或随机)。白名单内容由HOST设置。以下对各种过滤模式作一个介绍: 1、广播过滤
支持过滤方式如下,一次仅支持一种方式:
·广播设备仅处理来自白名单的设备的扫描、连接请求。 ·广播设备处理一切设备的扫描、连接请求。(复位值)
·广播设备处理所有设备的扫描请求,仅处理白名单的连接请求。 ·广播设备处理所有设备的连接请求,仅处理白名单的扫描请求。
2、扫描过滤
支持过滤方式如下:
·扫描设备仅处理来自白名单设备的广播帧。 ·扫描设备处理一切设备的广播帧。 假如广播方已经过滤该扫描设备的话,通信不能成功。
3、发起过滤
支持过滤方式如下:
·被发起设备处理来自白名单内所有设备的连接发起请求。
·被发起设备忽略白名单,仅处理host给出设备的连接发起请求。
三、非连接状态简述
1、standby
Standby是复位后的芯片初始状态,由它可以进入广播、扫描和连接状态。 2、advertising
进入广播状态后,便开始发送广播帧。在发送完一帧广播帧以后,advertising event将被关闭,来适应其他功能。广播事件有以下几种类型:
第一帧广播帧应该在channel index中的最低的广播信道发送。
广播事件是否有回复帧由广播帧类型决定,具体如下表:
当收到错误的返回帧时,广播端会在下一个广播信道发送广播帧,或直接停止广播事件。 广播事件间隔必须是625us的倍数,范围在20ms~10.24s,其设置方式如下:
T_advEvent = advInterval+ advDelay
scannable undirected和non-connectable undirected事件,advInterval长度必须大于100ms;connectable undirected事件,advInterval长度必须大于等于20ms 。advDelay
是0~10ms的伪随机数。连续广播帧发送示意图如下:
a)Connectable Undirected Event Type
如图4.5接收到CONNECT_REQ之后,广播方便退出广播状态,进入Slave状态。
b)Connectable Directed Event Type
c)Scannable Undirected Event Type