蓝牙知识小结

2018-09-27 22:01

蓝牙协议知识总结

蓝牙设备 和 主机进行连接和数据通信的 流程如下:

1 外部设备发出广告 (带有UUID信息等其他信息);

2 主机(集中器设备)收到广告信息,进而发送扫描请求;表示我扫描到你的信息; 3 外部设备收到扫描请求后,返回扫描回应,表示我知道你扫描到我的信息; 4 主机进而发送连接请求信息,表示主机要跟设备建立无线连接; 5 设备收到连接请求后,发送相应请求回应;表示已经建立连接;

数据读写流程如下进一步(在建立连接的基础上):

6 主机发送主服务UUID(设备的广告UUID)给设备; 服务发现 7 设备收到后回应服务信息;

8 主机发送特性UUID; 特性发现 9 设备收到后回应特性值句柄;(类似于存储设备的地址)

10 主机发送特性值句柄; 读信息 11 设备收到后回应特性值;

12 主机发送特性值句柄和要写入值; 写信息 13 设备回应写入成功响应;

在睡眠状态,耗电只有1微安(uA),而在连接事件中最高的是10几个毫安

连接建立之后,再进行安全密钥的交换配对,进而进行数据的读写;

主机和从机绑定之后,断开连接后,可以快速的建立连接并进行加密读写,而不需要再次配对; 特点

1 低功耗蓝牙速度只有100bps ,传统蓝牙有3Mbps

2 低功耗蓝牙不需要IOS 的MFI 认证,传统蓝牙必须; 3 低功耗蓝牙能纽扣电池能用1年多,传统蓝牙不行;

频道:

2.4G – 2.48G 总共40个频段,每2M 一个频段;

其中 37(2.40G) ,38(2.426G) ,39(2.48G) 为 3个广播频道;这3个频道避开了wifi 常用的频道,与wifi可以共存; 其他37个为连接频道;

1、BLE中主从机建立连接,到配对和绑定的过程如下图。

正如上图所示,最简单一次蓝牙通信需要以上相关步骤,包括discovery device,connect,pairing,bond等4个主要部分。

1) 广播:广播包可以包含广播数据 ,广播包可以无指定或者对指定的设备发送。可以声明

该器件是可连接的还是不可连接的。在一次广播中,广播包可以在三个广播通道中同时发送。

广播类型 :1 未指定可连接 2 指定可连接 3 未指定 不可见 4 未指定不可连接 #define GAP_ADTYPE_ADV_IND 0x00 //!< Connectable undirected advertisement #define GAP_ADTYPE_ADV_DIRECT_IND 0x01 //!< Connectable directed advertisement

#define GAP_ADTYPE_ADV_DISCOVER_IND 0x02 //!< Discoverable undirected advertisement

#define GAP_ADTYPE_ADV_NONCONN_IND 0x03 //!< Non-Connectable undirected advertisement

#define GAP_ADTYPE_SCAN_RSP_IND 0x04 //!< Only used in gapDeviceInfoEvent_t

在peripheral.c中

GAPRole_Init( taskID++ ); 进行了初始化设置

还有有以下函数bStatus_t GAPRole_SetParameter( uint16 param, uint8 len, void *pValue )

GAPRole_GetParameter(…..)可以调用进行设置。 2) scanning

1) 被动扫描: 扫描者监听广播频道的广播包,收到后将其上传到host层

2) 主动扫描:扫描者监听广播频道的广播包,当收到广播包后扫描者发送一个scan

Request包,广播设备回应一个scan reponse包

3) Connection

在扫描设备扫描到一个可连接的广播消息后,扫描设备可以通过发送 connection reequst 包给广播设备从而成为连接的发起者

Connection resqust 包含从机链路层一系列的参数,这些参数声明连接时的通道

及时序要求。 建立连接

GAPCentralRole_EstablishLink( DEFAULT_LINK_HIGH_DUTY_CYCLE, DEFAULT_LINK_WHITE_LIST, addrType, peerAddr );

广播设备接收了连接请求,就进入了连接状态, 发起者成了主机,广播设备成了从机。 两个已连接的设备的所有通信发生在连接事件中,连接事件周期性的发生,周期由连接间隔参数决定。

连接间隔:使用调频的间隔;两个连接事件之间的时间间隔,蓝牙传数据是在一个频段发送

数据后,然后跳到另一个频段再传数据,从一个频道另一个频段的时间间隔就是连接间隔;即使没有数据发送,也要调频切换测试包是否连接断开;所以,连接间隔是定时的存在;可以认为是一个固定的时序;每隔一段时间就自动调到另一个频道的去建立连接;这个时间中,是很少功耗的,基本没有;

单位是1.25毫秒;范围是 6 ---- 3200个单位;也就是1.25ms到4s的范围 不同的应用 时间间隔不一样,

时间间隔长,功耗就低,传输数据慢; 时间间隔短,功耗就高,传输数据就快。

从机延时: 从机如果没有数据发送,可以跳过连接间隔,不用频繁的定时去建立连接,从

而过一段较长时间再去建立连接;这个时间就是从机延时时间;从而功耗降低很多;单位是和连接间隔一样;范围是 0---499

管理超时 超过这个时间,还没有建立连接,则认为是连接丢失,断开。回到未连接状态; 单位是10ms, 范围是 10(100ms)-----3200(32s)。超时值必须比有效连接间

隔大;有效连接间隔= 连接间隔×(1+从机延时)

如果从机不想使用当前的连接参数,可以向主机发送连接更新请求,从机设备可以在任何时

候发送连接更新请求,使得从机可以动态的调整连接参数。

GAPCentralRole_UpdateLink( simpleBLEConnHandle,

DEFAULT_UPDATE_MIN_CONN_INTERVAL, DEFAULT_UPDATE_MAX_CONN_INTERVAL, DEFAULT_UPDATE_SLAVE_LATENCY, DEFAULT_UPDATE_CONN_TIMEOUT );

无论主机还是从机,都可以无条件的终止当前连接,一方请求终止,另一方必须在断开连接状态之前响应。

连接还可以由超时而终止。超时时间小于32s ,大于有效连接间隔(连接间隔×(1+从机延时))

终止连接函数:

GAPCentralRole_TerminateLink( simpleBLEConnHandle );

主机和从机保存各自的超时计时器,每次收到数据包就清零,一旦达到超时数值,就认为连接已经丢失就会断开连接。

连接超时判断,终止连接在程序中还没找到。

2.BLE中的GAP和GATT

GAP个人认为就是监控上图中的交互状态,比如从广播变成连接,到配对等。

GATT通俗理解为用于主从机之间的客户端和服务器端的数据交互,以Attribute Table来体现。

GAP Role Profile:在GAP所处的4个角色:广播Advertise,主机central,从机Peripheral,观察者Observer。


蓝牙知识小结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2009“高职升本科”高数试卷及参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: