蓝牙4.0学习要点记录

1,Indication与Notification的区别
GATT_Indication:从机通知主机后,主机需要调用simpleprofile_writeattrcb,读取从机的数据。
GATT_Notification:从机直接发送给主机。


2,server和client
characteristc属性值:read/write/notification/indication。read/write是client主动发起,notification/indication是server端主动发起


3,bluetooth smart 与 bluetooth smart ready
Bluetooth Smart Ready设备包括手机、平板电脑、个人电脑及电视机等处于消费者互联世界核心的电子设备,可以执行蓝牙4.0版本双模无线标准;而Bluetooth Smart设备则涵盖低耗能的蓝牙4.0版本单模无线标准的设备,包括心率监测仪、计步器等使用纽扣式电池,以及用于收集特定信息的感应器类电子设备。
符合Smart Ready设备的条件有:
第一,它一定要基于蓝牙4.0版本所有的规格,也就是说基于通用属性配置文件(GATT)这种框架;
第二, Bluetooth Smart Ready的设备必须是配有双模式无线电,它不但可以连接Bluetooth Classic(蓝牙传统产品)同时也可以连接蓝牙低耗能产品。此外,Smart Ready的设备允许用户更新升级设备软件,这对于蓝牙设备的使用来说是个创新。
对于Bluetooth Smart产品来讲,它主要是进行数据的采集和发送,所以实际就是一个传感器。整个这个技术的革新,它的低耗能特性对我们整个行业来讲非常具有革新意义。

4,基本概念

Generic Attribute Profile (GATT)
通过BLE连接,读写属性类小数据的Profile通用规范。现在所有的BLE应用Profile都是基于GATT的
Attribute Protocol (ATT)
GATT是基于ATT Protocol的。ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据。每个属性都有一个唯一的UUID,属性将以characteristics and services的形式传输。
Characteristic
Characteristic可以理解为一个数据类型,它包括一个value和0至多个对次value的描述(Descriptor)。
Descriptor
对Characteristic的描述,例如范围、计量单位等。
Service
Characteristic的集合。例如一个service叫做“Heart Rate Monitor”,它可能包含多个Characteristics,其中可能包含一个叫做“heart rate measurement"的Characteristic。
Android设备与BLE设备交互有两组角色
a)中心设备和外围设备(Central vs. peripheral);
b)GATT server vs. GATT client.
角色解释如下:
Central vs. peripheral:(有些中文翻译为 集中器 vs 节点设备)
中心设备和外围设备的概念针对的是BLE连接本身。Central角色负责scan advertisement。而peripheral角色负责make advertisement。
GATT server vs. GATT client:
这两种角色取决于BLE连接成功后,两个设备间通信的方式。
举例说明:
现有一个活动追踪的BLE设备和一个支持BLE的Android设备。Android设备支持Central角色,而BLE设备支持peripheral角色。创建一个BLE连接需要这两个角色都存在,都仅支持Central角色或者都仅支持peripheral角色则无法建立连接。
当连接建立后,它们之间就需要传输GATT数据。谁做server,谁做client,则取决于具体数据传输的情况。例如,如果活动追踪的BLE设备需要向Android设备传输sensor数据,则活动追踪器自然成为了server端;而如果活动追踪器需要从Android设备获取更新信息,则Android设备作为server端可能更合适。

5,service与profile区别

Profiles are high level definitions that define how services can be used to enable an application or use case.

6,HCI(Host Controller Interface)

在蓝牙模块的实际应用中,有时需要直接应用HCI层,由HOST主机来完成各种PROFILE,如SPP OPP AV等等,可实现串口通讯、文件传输、FTP、DUN、蓝牙耳机等各种应用。  
HCI通过分组的方式传输数据(Data)、命令(Command)和事件(Event),所有主机和主机控制器之间的通信都以分组的形式进行。在HCI分组中。数据分组是双向的,命令分组只能从主机发往蓝牙模块,事件分组只能从蓝牙模块发向主机。主机发出的大多数命令分组都会由蓝牙模块产生相应的事件分组作为响应。  

蓝牙协议包括多层协 议栈,如下图


其中 Transport Layer  UART/USB )层以下的协议通常都由蓝牙芯片集成,而传输层以上的协议则视芯片的不同而有所不同,以此原则蓝牙芯 片分成了以下几种:

TI 公 司的蓝牙芯片 BRF6150 属于右边的芯片,所以其高级应用的软件工作量将会较大,控制核心的程序需要实现高层的协议,要达到 很好的兼容性有难度。但如果要作专用的蓝牙设备,则可以去除大部分复杂的协议,降低成本。

底层模块是蓝牙技术的核心模块,所有嵌入蓝牙技术的设备都必须包括底层模块。它主要由链路管理层 LMP  Link Manager Protocol )、基带层 BB  Base Band )和射频 RF  Rodio Fraquency )组成。其功能是:无线连接层( RF )通过 2.4GHz 无需申请的ISM 频段,实现数据流的过滤和传输;它主 要定义了工作在此频段的蓝牙接收机应满足的需求;其带层( BB )提 供了两种不同的物理链路(同步面向连接路 SCO Synchronous Connection Oriented 和异步无连接链路 ACL Asynchronous Connection Less ),负责跳频和蓝牙数据及信息帧的传输,且对所有类型的数据包提供了不同层次的前向纠错码 FEC  Frequency Error Correction )或循环沉余度差错校验CTC  Cyclic Redundancy Check ); LMP 层负责两个或多个设备链路的建立和拆除及链路的安全和控制,如鉴权和加密、控制和协商基带包的大小 等,它为上层软件模块提供了不同的访问入口;蓝牙主机控制器接口 HCI  Host Cntroller Interface )由基带控制器、连接管理器、控制和事 件寄存器等组成。它是蓝牙协议中软硬件之间的接口,提供了一个调用下层 BB  LM 、状态和控制寄存器等硬件的统一命令,上、下两个模块接口之间的消息和数据的传递必须通过 HCI 的解释才能进行。 HCI 层 以上的协议软件实体运行在主机上,而HCI 以下的功能由蓝牙设备来完 成,二者之间通过传输层进行交互。

下文仅对 BRF6150  HCI 传输层的控制作一阐述。

三线 UART 传输层用于实现主机和蓝核 之间的数据传输,该层只是数据流经的通路,进行 HCI 命令、事件、 ACL 、同步数据包传输,不对数据流进行任何的编解码。文档内容主要包括 SLIP 层、帧头、数据完整性检验、可靠包、错误包、链路建立、电源控制、帧溢出控制、硬件配置、推荐参数等 几部分内容。

数据包的建立是分两步实现的,第一是给每个 HCI 数 据包加一个头,表示数据包的有效载荷,接着将数据包按 SLIP 协议进行构建。 SLIP 层将不可靠的字节数据流转化为不可靠的包数据流,它在每个包的开头和结尾加一个字节 0xC0 ,同时将数据包中的 0xC0 转 化为 0xDB 0xDC 两个字节,将包内的 0xDB 转 化为 0xDB 0xDD 。解码过程可以想象。

每个包有 4 个字节的包头

//序列码 3//确认码 3//数据完整性校验 1//可靠包1//包类型4//有效载荷 12//

 

当是不可靠包时,发送时序列码为 0 ,接收 时忽略。每个新的可靠包的序列码都等于前一个可靠包的序列码 +1 ,重新传输的数据包将用上次的 序列码。

确认码必须被设置为下一个将接收到的可靠包的序列码。

当一个 16bit  CCITT_CRC 数据完整性校验被附加在有效载荷之后时,这一位置 1 

可靠包位为 1 ,则序 列码和包内数据有效,接收端必须确认接收到的数据,为 0 相反。

UART 传 输层可以传输 4  HCI 包,分别是 HCI 命令包、 HCI 事件包、 HCI ACL 数据包、 HCI

同步数据包  HCI 命令包只能由主机发往蓝牙设备, HCI 事 件包只能从蓝牙芯片发出,其它两个包则是双向的。 HCI 包译码无法区分这 4 种包,所以采用包类型来区分。包类型数据对应如下图。

 

 

HCI 命令包、 HCI 事 件包、 HCI ACL 数据包总是作为可靠包传输。HCI 同 步数据包只有当 HCI 同步流控制打开时才作为可靠包传输。

有效载荷是包内有效数据,不包括包头和完整性校验数据。

头校验是可选的,规则较复杂,还晕。

可靠包:

主机和蓝牙都有检测包内数据是否正确的规则,包头和校验、 SLIP 有效载荷校验(数据个数为去掉 0xC0 , 并将 0xDB 0xXX 转换后的个数)、数据完整性校验(可选)、无序包校验。

当可靠包被接收后,必须进行确认。当一个包准备好发出时,该包的确认码应当是最近预期的数值,若有预 期要求发送确认码,但没有数据包需要发送,则设备可以发送一个确认包,确认包是不可靠包,包类型、有效载荷数据、序列码都设为 0 。一个可靠包只有在确认后才可以再发送。

非可靠包:

要传递非可靠包必须遵循一定的规则。非可靠包的包头的可靠包位、序列码应当是 0 ,其它的与可靠包一样设置。非可靠包若无效则将被忽略。

链路建立:

链路建立必须先被执行,以保证序列码、波特率、以及芯片被正确设置。链路建立是通过包含未初始化、已 初始化、激活三种状态的状态机实现的。第一次传输之前链路是出于未初始化状态,需要 4 条信息 来建立,蓝牙设备在未初始化状态下只发送 SYNC 信息,不管收到任何信息都被忽略, 然后回复 SYNC ,直到收到 SYNC RESPONSE 后进入已初始化状态,已初始化状态蓝牙设备周期发送CONFIG ,若收到 SYNC 信息则回复 SYNC RESPONSE ,若收到 CONFIG RESPONSE 后进入激活状态,这 4 条信息 数据完整校验标志应设为 0 

进入激活状态后,若收到 CONFIG 信息则回复 CONFIG RESPONSE ,收到 CONFIG RESPONSE 则忽略。若收到 SYNC 则 认为对应设备被复位,则复位自身的上层协议栈并进入未初始化状态以重启链路建立过程。在激活模式下,第一个包的序列码和确认码应当是 0 。这 4 种信息的包格式都是 15 

电源控制:

蓝牙设备进入激活模式后,任何一方都可能需要进入节能模式,这种情况下,可以采用链路控制包来相互通 知。节能模式下操作包括睡眠、叫唤、已醒三个信息。三者之间的关系可以想象。

帧溢出控制:

 SLIP 数据流中的 SLIP ESCAPE 参数之后可以加入软件流控,这是在链路配置信息中可商议选择的。软件流被使能后,标准的XON/XOFF  0x11/0x13 )将会被用来控 制数据的流通,而数据包中的 0x11  0x13 将会用 0xDB 0xDE  0xDB 0xDF 代替(设计中应 该不用)。如果流控制没有被使能的话,则 0x11  0x13 不需要被转换。流控应该由类似 HCI 流 控的通道协议提供,采用标准的序列码、确认码。

硬件配置:

硬件连接与普通串口没有不同,如果采用硬件流控,则可以将 RTS  CTS 信号加入。

推荐参数:

时间上的参数与波特率相关,确认、重新发送等必须在合适的时间进行。

附录:

L2CAP  Logical Link Controller and Adaptation Protocol. This protocol supports higher level protocol multiplexing, packet segmentation and reassembly,and the conveying of quality of service information. 即:逻辑链路控制及适配协议,该协议支持高层协议多路,包分割和组合,以及服务信息 的品质传输。 是蓝牙协议栈的核心组成部分,也是其它协议实 现的基础。它位于基带之上,向上层提供面向连接和无连接的数据服务。它主要完成数据的拆装、服务质量控制、协议的复用、分组的分割和重组(Segmentation And Reassembly )及组提取等功能。L2CAP 允许高达64KB 的数据分组。

ACL  Asynchronous ConnectionLess: the links used by Bluetooth technology to send data. These links are also important to voice systems because SCO (voice) links can only be set up after an ACL (data) link has been set up between two devices to allow them to exchange control and configuration data. 即:异步无连接链路,是蓝牙用于发送数据的链路,只有在设备之间的 ACL (数据)链路建立起来传输控制和配置数据后, SCO (声音)链路才可以被建立。

AFH  Adaptive Frequency Hopping, an enhancement in the Bluetooth v1.2 adopted by the SIG in November 2003. AFH co-ordinates the frequency used by Bluetooth and other 2.4GHz radio devices such as WiFi, to reduce the likelihood of interference. 即频率适配,用于自动调整同频段的各个设备,以尽可能减少接口。

SCO Synchronous Connection Oriented link. One of the 2 Bluetooth data link types defined.A synchronous (circuit-switched) connection for reserved bandwidth communications, e.g. voice, between two devices created on the LMP level by reserving slots periodically on a physical channel. This type of link is used primarily to transport SCO packets (voice data). SCO packets do not include a CRC and are never retransmitted. It primarily supports time-bounded information like voice. (Master to single slave.) SCO links can be established only after an ACL link has first been established. See also ACL.  面向同步连接链路,是基带层提供的两个数 据链路之一,一个用于两个设备间的保留的带宽通信如音频通信同步连接 是在 LMP 层的物理通路保留时间槽上创建的,(晕) 。这种链路主要用于传输 SCO 音 频数据包, SCO 数据包不包括CRC 并 且不会被重新传输,它主要处理有时限的类似音频的信息。主对单从 SCO 链 路只有在 ACL 链路被建立以后才可以建立。

eSCO extended Synchronous Connection Oriented channels, as specified in Bluetooth v1.2 (November 2003), are error checking voice channels that allow the retransmission of corrupted voice data. As data rates can be negotiated via eSCO, the overall high quality-of-service connection is improved.  面向扩展同步连接通道,用于重新传输被打断的音频数据,数据速率可以通过 eSCO 进行商议,从而提高连接可靠性。

RFCOMM  Serial Cable Emulation Protocol based on ETSI TS 07.10. 是一个仿真有线链路的无线数据仿真协议,符合ETSI 标 准的TS 07.10 串口仿真协议。它在蓝牙基带上仿真RS-232 的 控制和数据信号,为原先使用串行连接的上层业务提供传送能力。

SDP  Service Discovery Protocol. It is a Bluetooth defined protocol for provided for or available through a Bluetooth device. Essentially provides a means for applications to discover which services are available and to determine the characteristics of those available services. 服务发现协议,用于提供一种发现哪种服务可用及其特性的方法。

HS  Headset 

DUN  Dial-Up Networking 

FHS Frequency Hopping Synchronization. This a special control packet revealing, among other things, the BD_ADDR and the clock of the source device. It contains 144 info bits and a 16-bit CRC code. The payload is coded with a rate 2/3 FEC which brings the total payload length to 240 bits. The FHS packet covers a single time slot. See also Bluetooth packet types.

FHSS Frequency Hop Spread Spectrum: a modulations technique which spreads data across the entire transmission spectrum by transmitting successive data on different channels ("hopping").

7,蓝牙开发模式

http://www.52solution.com/wireless-art/80007645


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值