[经验] 蓝牙4.0必懂知识点总结

[复制链接]

技术员

发表于 2016-4-14 13:43:41   2832 查看 5 回复 显示全部楼层 倒序浏览
分享
蓝牙4.0必懂知识点总结
转载
一、概述

蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接,现在已经成为IEEE802.15标准,得到全球上万家厂商支持。

蓝牙4.0包括三个子规范,即传统蓝牙技术、高速蓝牙和新的蓝牙低功耗技术,这三个规格可以组合或者单独使用。蓝牙4.0的改进之处主要体现在三个方面,电池续航时间、节能和设备种类上。

(一) 特点
ü  超低的峰值、平均和待机模式功耗

ü  使用标准纽扣电池可运行一年乃至数年

ü  低成本

ü  不同厂商设备交互性

ü  无线覆盖范围增强

ü  完全向下兼容

ü  低延迟(APT-X)


注:虽然有着众多优势,不过由于蓝牙传输协议和其他2.4G设备一样,都是共用这一频段的信号,这也难免导致信号互相干扰的情况出现。此外,蓝牙协议并不是一项免费的技术,任何使用这项技术的厂商都要向该组织交纳一笔的专利费,而这部分费用也会体现在成本中,目前蓝牙音频设备价格依旧高于普通产品。

(二) 技术细节
ü  速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个。所有连接都使用蓝牙2.1加入的减速呼吸模式(sniff subrating)来达到超低工作循环。

ü  跳频:使用所有蓝牙规范版本通用的自适应跳频,最大程度地减少和其他2.4GHz ISM频段无线技术的串扰。

ü  主控制:更加智能,可以休眠更长时间,只在需要执行动作的时候才唤醒。

ü  延迟:最短可在3毫秒内完成连接设置并开始传输数据。

ü  范围:提高调制指数,最大范围可超过100米。

ü  健壮性:所有数据包都使用24-bitCRC校验,确保最大程度抵御干扰。

ü  安全:使用AES-128 CCM加密算法进行数据包加密和认证。

ü  拓扑:每个数据包的每次接收都使用32位寻址,理论上可连接数十亿设备;针对一对一连接优化,并支持星形拓扑的一对多连接;使用快速连接和断开,数据可以在网状拓扑内转移而无需维持复杂的网状网络。

(三) 主流无线技术对比
版本
传输速率
传输距离
工作频率
WiFi
802.11A、B、G、N
802.11N 450Mbps
300米
2.4GHz、5GHz
WiMAX
802.16e
70M
50km
2~6GHz
GPRS
GPRS Phase1
171.2kbit/s
手机信号
基于手机
EDGE
EDGE
384kbit/s
手机信号
基于手机
BlueTooth
V1.1/1.2/2.0/2.1
3Mbps
10米
2.4 GHz
中国3G
WCDMA(联通)
下行:14.4Mbps
上行:5.76Mbps
3G基站信号
CDMA2000(电信)
参考联通的数据
TD-SCDMA(移动)
参考联通的数据
二、重要概念(一) 跳频通信1.  背景
在广阔地域使用短波通信,都希望通信话路畅通和保密。然而他们常遇到窃听、电子对抗、信道拥塞等问题。常规短波电台用固定频率发射和接收,因而无法避开窃听、人为干扰、信道阻塞。这些问题必须利用跳频技术才能彻底克服。

2.  原理
跳频的原理是:按全网预设的程序,自动操控网内所有台站在一秒钟内同步改变频率多次,并在每个跳频信道上短暂停留。周期性的同步信令从主站发出,指令所有的从站同时跳跃式更换工作频率


就通信的安全性而言,跳频短波通信比卫星通信更为可靠。这是因为提供卫星服务的机构对其所属国承担了战略责任,必须受到该国政府的控制。而跳频短波通信是完全自主的,因而也是最可信赖的。在涉及国家安全社会安全的场合,跳频短波通信的地位无可取代。


其中Bluetooth Smart Ready设备指的是PC、平板、手机这样的连接中心设备,而Bluetooth Smart设备指的是蓝牙耳机、键鼠等扩展设备。

(二) 蓝牙组网1. 蓝牙组网方式
ü  微微网

ü  分布式网络

2. 微微网
一个蓝牙网络由一个主设备和一个或多个从属设备组成,它们都与这设备的时间和跳频模式同步(以主设备的时钟和蓝牙设备的地址为准)。每个独立的同步蓝牙网络就被称为一个微微网(piconet)。


微微网是通过蓝牙技术以特定方式连接起来的一种微型网络,一个微微网可以只是两台相连的设备,比如一台便携式电脑和一部移动电话,也可以是8台连在一起的设备。在一个微微网中,所有设备的级别是相同的,具有相同的权限。蓝牙采用自组式组网方式(Ad-hoc),微微网由主设备(Master)单元(发起链接的设备)和从设备(Slave)单元构成,有一个主设备单元和最多7个从设备单元。主设备单元负责提供时钟同步信号和跳频序列,从设备单元一般是受控同步的设备单元,接受主设备单元的控制。


在每个微微网中,一组伪随机调频序列被用来决定79个跳频信道,这个调频序列对于每个微微网来说是惟一的,由主设备地址和时钟决定。信道分成时隙,每个时隙相应有一个调频频率,通常调频速率为1600跳/s。


蓝牙系统信道以时间长度625us来划分时隙,根据微微网主设备的时钟对时隙编号。系统使用一个时分双工方案来使主设备和从设备交替传送。主设备只在偶数的时隙开始传送,从设备只在奇数的时隙开始传送,信息包的开始与时隙的开始相对应。

3.分布式网络
蓝牙特殊利益集团(Bluetooth SIG)制定的协议中,尚未对蓝牙微微网网间通信和蓝牙分布式网络的构建等内容作出描述,本文在类比的基础上,对自组网进行改造和扩展,以使其能符合蓝牙分布式网络的特征。



蓝牙技术的提出为短距离低功耗无线通信寻找到一条全新的途径。把一个9mm×9mm芯片嵌入到手机、PDA和数字相机等移动终端中,就可以完成设备之间的无电缆连接,实现无线局域网(WLAN)和信息家电等构想。Bluetooth采用2.4GHz ISM频段,使用小范围射频链路,链路建立在跳频频谱上,可在同一通信带宽内干扰地传输多个信道信息,实现终端之间的信息交换。共存于同一信道的若干设备单元构成一个微微网(piconet)。在微微网中,若某台设备的时钟和跳频序列用于其它设备,则称为主设备(master),否则就称为从设备(slave),一个微微网中只有一个主设备和多个从设备(不多于8个)。在同一微微网中,所有用户均用一跳频序列同步。若干相互独立的微微网连接在一起,构成蓝牙分布式网络(scatternet)。各微微网由不同的跳频序列区分,在一个互连的分布式网络中,一个节点设备可同时存在于多个微微网中,但不能在两个微微网中处于激活状态(active)。

(三) 无线电功率计算
无线电发射机输出的射频信号,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接收下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机。因此在无线网络的工程中,计算发射装置的发射功率与天线的辐射能力非常重要。


Tx是发射(Transmits)的简称。无线电波的发射功率是指在给定频段范围内的能量,通常有两种衡量或测量标准:
功率(W —— 相对1瓦(Watts)的线性水准。
增益(dBm)—— 相对1毫瓦(Milliwatt)的比例水准。
两种表达方式可以互相转换:

dBm = 10 x log[ 功率 mW]

mW = 10 [ 增益 dBm / 10 dBm]

在无线系统中,天线被用来把电流波转换成电磁波,在转换过程中还可以对发射和接收的信号进行“放大”,这种能量放大的度量成为 “增益(Gain)”。 天线增益的度量单位为“dBi”。


由于无线系统中的电磁波能量是由发射设备的发射能量和天线的放大叠加作用产生,因此度量发射能量最好同一度量-增益(dB),例如,发射设备的功率为100mW ,或 20dBm;天线的增益为10dBi,则:

发射总能量     =发射功率(dBm)+天线增益(dBi)

= 20dBm + 10dBi

= 30dBm

或者:              = 1000mW = 1W

在“小功率”系统中每个dB都非常重要,特别要记住“3dB法则”。

每增加或降低3dB,意味着增加一倍或降低一半的功率:

-3 dB = 1/2 功率

-6 dB = 1/4 功率

+3 dB = 2x 功率

+6 dB = 4x 功率

例如,100mW的无线发射功率为20dBm,而50mW的无线发射功率为17dBm,而200mW的发射功率为23dBm。

三、BLE协议栈简述
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/ba121121f9ec4a8684d861af711e2ab1/lip_image002.png

ü 协议栈分为两部分,HOST部分和Controller部分。

ü PHY层是1Mbps的自适应跳频GFSK(高斯频移键控)无线通信设备。PHY在未经许可的2.4 GHz ISM(工业,科学和医疗)频段运行。BLE采用2MHz的带宽。从而更大节省了能耗。
ü LL层的作用是控制设备的射频状态,使其在挂起,广播,扫描,初始化和连接状态。
ü HCI层提供一组标准化接口的,在Host和controller之间的通信的一种方法。
ü L2CAP层向上层提供数据封装服务,从而使逻辑上允许端到端的数据通信。

ü SM层定义了配对和密钥分配的方法,并提供协议栈的其他层与其他设备安全地连接和交换数据。

ü GAP直接提供接口给应用和(或)配置,处理设备发现和连接相关的服务。另外GAP处理初始化安全特性。

ü ATT协议允许设备分享某部分数据给另一个设备。分享数据的设备为“server”,另外一个设备则为“client”。

ü GATT层是一个定义,使用ATT的服务框架。

四、BLE物理层
(一) 关键参数
ü  BLE操作在2.4 GHz的ISM频段,范围2400 ~ 2483.5 MHz。
ü  BLE具有40个RF信道,对应中心频率的2402 + k * 2 MHz(k = 0, ..., 39.)。
ü  BLE发射端输出功率0.01 mW (-20 dBm) ~ 10 mW (+10 dBm)。
五、BLE链路层
(一) 概述

1.状态机


BLE链路层具有五种状态机(部分控制可选的支持多个状态机)

ü  Standby状态
ü  Adverting状态(从该状态进入Connection状态时,作为Slave角色
ü  Scanning状态
ü  Initiating状态(从该状态进入Connection状态时,作为Master角色
ü  Connection状态

五种状态机切换的如下图:
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/729d4e70921141d79f62eeb4118dcf8b/clipboard.png
BLE状态机切换


2.角色


BLE支持两种角色,Master和Slave。Master可以同时与多个设备连接,通信;Slave只能和一个Master通信。

BLE的状态机,角色允许的情况如下:

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/88f2639a690b4d6888e6259d5e841fd8/clipboard.png



3.其他



ü  BLE传输时,统一使用小端对齐方式。
ü  蓝牙采用设备地址识别方式。设备地址可以是公开地址也可以是随机地址。

ü  BLE一共有40个信道。具体使用如下:

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/d298628ce2d349309676ef6c1c625677/clipboard.png

(二)空中接口包
1.包格式

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/30537ce661824051859f7c01d1ff961c/clipboard.png



NOTE:Access Address与设备地址是不一样的。广告和数据有各自不同的PDU。


2.广告PDU
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/4e3fb88dc11d45edaa8f3c3a942fd990/clipboard.png
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/88e44dc1e9e246f78a932181d652ce98/clipboard.png
3.数据PDU

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/ef9e97d868394a91b0c711ddd641739b/clipboard.png
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/4bba808831c14e59b8a2f7215d4d53b0/clipboard.png

六、HCI协议





蓝牙HCI是位于蓝牙系统的逻辑链路控制与适配协议层和链路管理协议层之间的一层协议.HCI为上层协议提供了进入链路管理器的统一接口和进入基带的统一方式.在HCI的主机和HCI主机控制器之间会存在若干传输层,这些传输层是透明的,只需完成传输数据的任务,不必清楚数据的具体格式.蓝牙的SIG规定了四种与硬件连接的物理总线方式,即四种HCI传输层:USB、RS232、UART和PC卡






(一) HCI数据交换格式
HCI规范规定可交换的信息有HCI命令包,HCI异步数据包,HCI同步数据包(BLE不使用同步数据包)和HCI事件包。
1.HCI命令包

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/51af7fa1abdd4dcb980ec63ecd3c0c52/clipboard.png


2.HCI异步数据包





异步数据包有两种类型:可自动刷新和不可自动刷新类型。包格式如下:


file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/2875983e66704920b35c22a675839fc4/clipboard.png
3.HCI同步数据包








file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/198bc90c4c3b4533b9354f1c46f6222d/clipboard.png4.HCI事件包



file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/c4cb934955b14d96adb2ac9802e6f15a/clipboard.png七、L2CAP

L2CAP提供可复用,分割和重组的面向连接或者无连接的数据服务。L2CAP数据包可以达到64K。L2CAP允许每个L2CAP通道流控和重传。


file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/7a9e28715e9a4297a04865d425a2eb8c/lip_image003.png

(一)操作模式

L2CAP的操作模式有五种:


ü  基本模式

ü  在流控模式,重传模式和增强重传模式,PDUs需要标序号以及确认。序号用来控制缓存。TxWindow大小用来限制缓冲区大小和(或者)提供流控的一个方法。


流控模式下,不会发生重传。但会检查PDUs丢失并报告。

ü  重传模式下,需要一个计时器来确保所有PDUs成功传输到对应设备。

ü  增强重传跟重传模式类似。它增加一个POLL位来请求远端设备应答,增加一个SREJ帧来提高错误发现效率,增加一个RNR帧代替R位来报告本地设备忙状态。

ü  流模式是一个等时传输。所有需要发送PDUs都进行标号,但不需要确认。在发送一侧,设定一个有限的超时时间。当超时时间到达,所有缓冲区的包都清除。在接收一侧,接收到一个新的PDU时,如果接收缓冲区满,则覆盖先前接收到的数据。丢失的PDU可以报告为丢失。本模式下,不使用TxWindow。

2. 数据帧
ü  B-frame

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/e8db6ea8170c4f5a8009050f03c1969f/lip_image004.png

ü  G-frame

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/272edf64349d4a12960cc1249cee1ebd/lip_image005.png

ü  S-frame

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/900e58542c9940b99071e47ad10299d9/lip_image006.png

ü  I-frame

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/70a2033045df48648e820ab438fdc6dd/lip_image007.png

B-frame用于面向连接的通道数据传输。G-frame用于无连接的通道数据传输。I-frame和S-frame用于流控,重传和媒体流的数据传输。

3.消息命令帧
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/dd834bef43e24d719bab014af7791106/lip_image008.png

4. 分组和重组
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/dda34629cefc493c9f3b40bac313654d/lip_image009.png
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/8535fd5c125a4f6e89c54fb14096f6de/lip_image010.png

(三) GAP1.设备发现流程

典型的BLE中,外围设备发出包含设备地址(可能还有另外一些数据,例如设备名字)广告。中心设备接收到广告后,对外围设备发出扫描请求。外围设备会回复扫描响应。这就是设备发现流程。

2.设备连接流程
发现设备之后,根据需要会发起连接请求。发起连接有三个重要参数。

ü  Connection Interval        该参数是指使用自适应跳频时,从上个信道传输完成到切换下一个信道的时间。该参数以1.25ms为一个单位,范围是6(7.5ms)到3200(4s)

ü  Slave Latency                    该参数是指从设备在没有数据传输的时候,可以自适应的选择忽略响应几个信道切换的时间。该参数以Connection Interval为参考,范围是从0到499.但是必须满足有效的通道切换时间小于或等于16s。

ü  Supervision Timeout      该参数是指链路监控超时时间。当Supervision Timeout的时间过去后,期间没有有效的信道切换,则中心设备会认为链路丢失,并重新回到非连接状态。


以上三个参数是中心设备发起连接请求时配置。如果外围设备需要重新设置,则通过协议栈的L2CAP层的“Connection Parameter Update Request”完成。

3.设备连接终止
连接的双方可以在任何理由下终止连接。一方初始化终止,另一方必须在双方退出连接状态之前相应地应答。

4.设备连接安全
一旦建立一个链接,双方会执行一个配对的过程。外围设备会要求中心设备提供一个密钥。外围设备收到正确的密钥的时候,双方交换用于数据加密和链路认证的安全密钥。

5.广告和应答数据格式
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/14ad074e9aaa4303b2ecef46c5afa60d/lip_image011.png
(四) GATT

GATT层被软件用来在两个连接的设备进行数据交换。两个设备的角色为:

ü  GATT客户端。作为客户端的设备会读写服务器端的数据。

ü  GATT服务端。作为服务端的设备提供客户端可以读写的数据。


GATT服务端包含很多服务。这里的服务指的是完成特定功能或特性的数据。服务的值为Characteristics。一个服务可以存在多个Characteristics。每个Characteristics具有自身的特性和配置。“Characteristics”和它的特性,配置都存储在“attribute”表格。“attribute”处理数据值本身,它还有关联的handle,type和Permissions。例如:

static gattAttribute_t battAttrTbl[] =

{

// Battery Service

{

{ ATT_BT_UUID_SIZE, primaryServiceUUID },     /* type */

GATT_PERMIT_READ,                                         /* permissions */

0,                                                                          /* handle */

(uint8 *)&battService                                         /* pValue */

},


// Battery Level Declaration

{

{ ATT_BT_UUID_SIZE, characterUUID },

GATT_PERMIT_READ,

0,

&battLevelProps

},


// Battery Level Value

{

{ ATT_BT_UUID_SIZE, battLevelUUID },

GATT_PERMIT_READ,

0,

&battLevel

},


// Battery Level Client Characteristic Configuration

{

{ ATT_BT_UUID_SIZE, clientCharCfgUUID },

GATT_PERMIT_READ | GATT_PERMIT_WRITE,

0,

(uint8 *) &battLevelClientCharCfg

},

         …

};


上述代码中定义了一个gattAttribute_t  battAttrTbl表格。该表格存储了一个名为“battService”的serivce。该serivce包含一个characteristic。该characteristic的properties为battLevelProps;value为battLevel;configuration为battLevelClientCharCfg。

六、TI BLE软件设计
TI BLE的软件分为五个主要部分:OSAL,HAL,BLE Protocol Stack,profile和应用。

(一) OSAL
OSAL(Operating System Abstraction Layer)是一个抽象的操作系统层。它抽象实现了,消息管理,任务同步,时间管理,中断管理,任务管理,内存管理,电源管理和非易失内存管理。BLE Protocol Stack,profile和应用等都是围绕OSAL来建立的。以下是任务管理的调用循环机制。

file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/3827f04910ca4816bc80d0b2262aceb5/lip_image012.png

(二) OSAL开发API

这里所说的开发者API指的是GAP和GATT层的API。

1.一般调用流程


a)         Call API function with appropriate parameters



b)         Stack performs specified action and returns



c)         After action is complete, or whenever the stack has information to report back to calling task,



the stack sends an OSAL message to the calling task



d)         Calling task receives and processes accordingly based on the message



e)         Calling task de-allocates the message



4.消息管理API
消息管理有关的API主要用于处理任务间消息的交换,主要包括为任务分配消息缓存、释放消息缓存、接收消息和发送消息等API函数。


ü  函数:uint8 * osal_msg_allocate(uint16 len)
功能描述:为消息分配缓存空间
输入参数:@len 分配空间大小
返回值: 成功则返回指向分配到的缓存空间地址的指针;否则返回NULL


ü  函数:uint8 osal_msg_deallocate(uint8 *msg_ptr)
功能描述:释放消息的缓存空间
输入参数:@msg_ptr 指向需要释放的消息缓存空间的指针
返回值:状态值SUCCESS或者INVALID_MSG_POINTER


ü  函数:uint *osal_msg_send(unit8 destination_task, uint *msg_ptr)
功能描述:将消息发送给destination_task任务
输入参数:@destination_task 目标任务ID;@msg_ptr指向消息空间的指针
返回值:状态值SUCCESS, INVALID_TASK或者INVALID_MSG_POINTER


ü  函数:uint8 *osal_msg_receive(uint8 task_id)
功能描述:从消息列队接收属于自己的消息
输入参数:@task_id处理消息的任务ID
返回值:成功则返回指向获取到的缓存空间地址的指针;否则返回NULL
5.任务同步API
任务同步API主要用于任务间的同步,允许一个任务等待某个事件的发生。


ü  函数:unint8 osal_set_event(uint8 task_id, uint16 event_flag)
功能描述:为任务task_id设置事件event_flag
输入参数:@task_id处理时间的任务id;@event_flag需要触发的事件
返回值:状态值SUCCESS或者INVALID_TASK
6.时间管理API
时间管理API用于开启和关闭定时器,定时时间一般为毫秒级定时,使用该API,读者不必关心底层定时器是如何初始化的,只需要调用即可,在蓝牙4.0 BLE协议栈物理层已经完成了定时器的初始化。


ü  函数:uint8 osal_start_timerEx(uint8 task_id, uint16 event_id, uint16 timeout_value)
功能描述:设置一个定时器,定时timeout_value之后,触发任务task_id的event_id事件。
输入参数:@task_id需要触发的任务id;@event_id需要触发的时间;@timeout_value定时时间。
返回值:状态值SUCCESS, or NO_TIMER_AVAIL.


ü  函数:uint8 osal_stop_timerEx(uint8 task_id, uint16 event_id)
功能描述:停止已经启动的定时器
输入参数:@task_id设定的触发任务id;@event_id设定触发的事件id
返回值:状态值SUCCESS or INVALID_EVENT_ID
7.中断管理API
中断管理API主要用于控制中断的开启与关闭。
8.任务管理API
ü  函数:uint8 osal_init_system(void)
功能描述:初始化OSAL。应用相关部分初始化需要开发者完成。
输入参数:无
返回值:状态值SUCCESS(必须是成功,失败则没法继续)


ü  函数:void osal_start_system( void )
功能描述:启动调用循环机制。它的流程可以参考OSAL TASK LOOP流程图
输入参数:无
返回值:无(永远不会返回)

9.内存管理API
内存管理API用于在堆上分配缓冲区,这里需要注意两个API函数一定要成对使用,防止产生内存泄漏。


ü  函数:void *osal_mem_alloc(uint16 size)
功能描述:在堆上分配指定大小的缓冲区。
输入参数:@size需要分配的缓冲区的大小
返回值:指向分配到的缓冲区地址的指针。


ü  函数:void osal_mem_free(void *ptr)
功能描述:释放使用osal_mem_alloc()分配的缓冲区
输入参数:@ptr指向分配到的缓冲区地址的指针。
返回值:无
8.电源管理API

电源管理API主要是用于电池供电的蓝牙4.0 BLE设备节点。

9.非易失性闪存管理API
非易失性闪存(Non-Volatile Memory,NV)管理API主要是添加了对非易失性闪存的管理函数,一般这里的非易失性闪存指的是系统的Flash存储器,每个NV条目分配唯一的ID号。


ü  函数:uint8 osal_snv_init( void )
功能描述:初始化NV service。
输入参数:无
返回值:状态值SUCCESS或者FAILURE


ü  函数:uint8 osal_snv_write( osalSnvId_t id, osalSnvLen_t len, void *pBuf )
功能描述:将数据写入条目id
输入参数:@id需要写入的条目;@len需要写入数据的大小;@pBuf指向数据缓存地址的指针。
返回值:状态值SUCCESS或者NV_OPER_FAILED

uint8 osal_snv_read( osalSnvId_t id, osalSnvLen_t len, void *pBuf )
功能描述:从条目id中读取数据
输入参数:@id需要读的条目;@len需要读取数据的大小;@pBuf指向数据缓存地址的指针。
返回值:状态值SUCCESS或者NV_OPER_FAILED
六、附件(一)BR/EDR协议栈1.蓝牙协议栈框图
file:///C:/Users/yixing.zhou/AppData/Local/YNote/data/xkyy19890608@163.com/4249b3d9e5d74d3baef9963be6f2ca67/ip_image001.jpeg

蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作.互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈.并不是任何应用都必须使用全部协议,而是可以只使用其中的一层或多层.但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层.



设计蓝牙协议栈的主要原则是尽可能地利用现有的各种高层协议,保证现有协议与蓝牙技术的融合以及各种应用之间的互通性以及充分利用兼容蓝牙技术规范的软硬件系统.蓝牙技术规范的的开放性保证了设备制造商可自由地选用其专利协议或常用的公共协议,在蓝牙技术规范基础上开发新的应用.蓝牙技术规范包括Core和Profiles两大部分.Core是蓝牙的核心,主要定义蓝牙的技术细节;Profiles部分定义了在蓝牙的各种应用中的协议栈组成,并定义了相应的实现协议栈.



按照各层协议在整个蓝牙协议体系中所处的位置,蓝牙协议可分为底层协议、中间层协议和高层协议三大类.

2.蓝牙底层协议
蓝牙底层协议实现蓝牙信息数据流的传输链路,是蓝牙协议体系的基础,它包括射频协议、基带协议和链路管理协议.





ü  射频协议(Radio Frequency Protoc01)
蓝牙射频协议处于蓝牙协议栈的最底层,主要包括频段与信道安排、发射机特性和接收机特性等,用于规范物理层无线传输技术,实现空中数据的收发.蓝牙工作在2.4GHz ISM频段,此频段在大多数国家无须申须运营许可,使得蓝牙设备可工作于任何不同的地区.


信道安排上,系统采用跳频扩频技术,抗干扰能力强、保密性好.蓝牙SIG制定了两套跳频方案,其一是分配79个跳频信道,每个频道的带宽为1MHz,其二是23信道的分配方案,1.2版本以后的蓝牙规范目前已经不再推荐使用第二套方案.




ü  基带协 (Base Band Protoc01)
基带层在蓝牙协议栈中位于蓝牙射频层之上,同射频层一起构成了蓝牙的物理层.


基带层的主要功能包括:链路控制,比如承载链路连接和功率控制这类链路级路由;管理物理链路,SCO链路和ACL链路;定义基带分组格式和分组类型,其中SCO分组有HVl、HV2、HV3和DV等类型,而ACL分组有DMl、DHl、DM3、DH3、DM5、DH5、AUXl等类型;流量控制,通过STOP和GO指令来实现;采用13比例前向纠错码、23比例前向纠错码以及数据的自动重复请求ARQ(Automatic Repeat Request)方案实现纠错功能;另外还有处理数据包、寻呼、查询接入和查询蓝牙设备等功能.




ü  链路管理协议(Link Manager Protocol,LMP)
链路管理协议(LMP)是在蓝牙协议栈中的一个数据链路层协议.LMP执行链路设置、认证、链路配置和其它协议:链路管理器发现其它远程链路管理器(LM)并与它们通过链路管理协议(LMP)进行通信.

3.蓝牙中间层协议
蓝牙中间层协议完成数据帧的分解与重组、服务质量控制、组提取等功能,为上层应用提供服务,并提供与底层协议的接口,此部分包括主机控制器接口协议、逻辑链路控制与适配协议、串口仿真协议、电话控制协议和服务发现协议.




ü  主机控制器接口协议(Host Controller Interface Protocol,HCI)
蓝牙HCI是位于蓝牙系统的逻辑链路控制与适配协议层和链路管理协议层之间的一层协议.HCI为上层协议提供了进入链路管理器的统一接口和进入基带的统一方式.在HCI的主机和HCI主机控制器之间会存在若干传输层,这些传输层是透明的,只需完成传输数据的任务,不必清楚数据的具体格式.蓝牙的SIG规定了四种与硬件连接的物理总线方式,即四种HCI传输层:USB、RS232、UART和PC卡




ü  逻辑链路控制与适配协议(Logical Link Control and AdaptationProtocol,L2CAP)



逻辑链路控制与适配层协议(L2CAP)是蓝牙系统中的核心协议,它是基带的高层协议,可以认为它与链路管理协议(LMP)并行工作.L2CAP为高层提供数据服务,允许高层和应用层协议收发大小为64 KB的L2CAP数据包.L2CAP只支持基带面向无连接的异步传输(ACE),不支持面向连接的同步传输(sco).L2CAP采用了多路技术、分割和重组技术、组提取技术,主要提供协议复用、分段和重组、认证服务质量、组管理等功能.




ü  串口仿真协议(RFCOMM)



串口仿真协议在蓝牙协议栈中位于L2CAP协议层和应用层协议层之间,基于ETSI标准TS 07.10,在L2CAP协议层之上实现了仿真9针RS232串口的功能,可实现设备间的串行通信,从而对现有使用串行线接口的应用提供了支持.




ü  电话控制协议(Telephony Control Protocol Spectocol,TCS)



电话控制协议位于蓝牙协议栈的L2CAP层之上,包括电话控制规范二进制(TCS BIN)协议和一套电话控制命令(AT Commands).其中,TCS BIN定义了在蓝牙设备间建立话音和数据呼叫所需的呼叫控制信令;AT Commands则是一套可在多使用模式下用于控制移动电话和调制解调器的命令,它SIG在ITU.TQ.931的基础上开发而成.TCS层不仅支持电话功能(包括呼叫控制和分组管理),同样可以用来建立数据呼叫,呼叫的内容在L2CAP上以标准数据包形式运载.




ü  服务发现协议(Service Discovery Protocol,SDP)



服务发现协议(SDP)是蓝牙技术框架中至关重要的一层,它是所有应用模型的基础.任何一个蓝牙应用模型的实现都是利用某些服务的结果.在蓝牙无线通信系统中,建立在蓝牙链路上的任何两个或多个设备随时都有可能开始通信,仅仅是静态设置是不够的.蓝牙服务发现协议就确定了这些业务位置的动态方式,可以动态地查询到设备信息和服务类型,从而建立起一条对应所需要服务的通信信道.

4.蓝牙高层协议

蓝牙高层协议包括对象交换协议、无线应用协议和音频协议.




ü  对象交换协议(Object Exchange Protocol,OBEX)



OBEX是由红外数据协会(IrDA)制定用于红外数据链路上数据对象交换的会话层协议.蓝牙SIG采纳了该协议,使得原来基于红外链路的OBEX应用有可能方便地移植到蓝牙上或在两者之间进行切换.OBEX是一种高效的二进制协议,采用简单和自发的方式来交换对象.它提供的功能类似于帅协议,在假定传输层可靠的基础上,采用客户机.服务器模 式.它只定义传输对象,而不指定特定的传输数据类型,可以是从文件到商业电子贺卡、从命令到数据库等任何类型,从而具有很好的平台独立性.




ü  无线应用协议(Wireless Application Protocol,WAP)



无线应用协议(WAP)由无线应用协议论坛制定,是由移动电话类的设备使用的无线网络定义的协议.WAP融合了各种广域无线网络技术,其目的是将互联网内容和电话债券的业务传送到数字蜂窝电话和其他无线终端上.选用WAP可以充分利用为无线应用环境开发的高层应用软件.




ü  音频协议(Audio)



蓝牙音频(Audio)是通过在基带上直接传输SCO分组实现的,目前蓝牙SIG并没有以规范的形式给出此部分.虽然严格意义上来讲它并不是蓝牙协议规范的一部分,但也可以视为蓝牙协议体系中的一个直接面向应用的层次.


在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈.蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换.按照各层协议在整个蓝牙协议体系中所处的位置,蓝牙协议可分为底层协议、中间层协议和高层协议三大类.



(二) CC2540芯片简介1.概述

CC2540是德州仪器的一款2.4GHz低功率蓝牙系统单晶片。它适用于消费性医疗、行动装置周边、运动及健康应用等产品的超低功率无线连结市场上最具有弹性及成本效益的单模式低功率蓝牙解决方案

德州仪器的CC2540系列产品提供用于感应器应用及行动手持装置周边的低功率蓝牙解决方案,CC2540是一个真正的系统单晶片解决方案,结合德州仪器的协定堆叠、轮廓软体及应用支援,CC2540成为市场上最具有弹性及成本效益的单模式低功率蓝牙解决方案。

2.特性
ü  8051微控制器 - 128KB或256 KB内建快闪记忆体, 8KB SRAM。

ü  完全整合的无线射频功能 - 低功率蓝牙 (1Mbps GFSK ) 。

ü  数位周边 – 21个通用型输出入界面, 2个USART (UART或SPI),全速USB 2.0,2个16位元及2个8位元计时器,专属的连接层计时器用于低功率蓝牙协定时脉,AES-128硬体加密/解密功能。

ü  先进的类比周边 – 8通道 8到12位元 delta-sigma 类比数位转换器,超低功率类比比较器,内建高效能运算放大器。

ü  完整解决方案–2.4 GHz系统单晶片,德州仪器协定堆叠,轮廓软体,及应用支援。

ü  超低消耗功率–感应器应用可使用一个硬币型电池运作超过一年的时间。

ü  领先的无线射频效能–最高达+97dB link budget,可用于大范围通讯,与其它2.4GHz装置优异的共存性。

ü  单晶片整合解决方案 - 微控制器,主机端,及应用程式整合在一个6mm x 6mm的元件中,有效降低所需的印刷电路板面积,应用程式可直接写入CC2540,它支援类比及数位界面。

ü  具备快闪记忆体及具有弹性的元件 - 韧体可在使用场所更新,资料可储存于晶片上。

ü  单一模式及双模式 – 做为一个同时提供单一模式及双模式低功率蓝牙解决方案的厂商,德州仪器提供由智慧型感应器到智慧型手机完整验证及强固的节能系统解决方案。

3.  与CC2541比较
ü  If you’re concerned with active power consumption, use CC2541, as it will save you 30% in TX and around 10% in RX.

ü  If you need +4 dBm output power, you should choose the CC2540.

ü  If you need a USB interface, you should choose the CC2540.

ü  If you need I2C, you should choose the CC2541.

ü  If you want to communicate using a proprietary protocol, you should choose the CC2541.

ü  If none of the above apply, it doesn’t matter which one you choose.

ü  If cost is important, CC2541 is priced slightly lower than CC2540.




标签:CC2540 CC2541

技术员

发表于 2016-8-25 10:48:16  
华强PCB打样
谢谢楼主,顶一下
回复

实习生

发表于 2016-9-6 15:49:59  
谢谢楼主,学知识来了
回复

实习生

发表于 2016-9-6 21:32:06  
学习就要持之以恒,非常感谢楼主分享
回复

点赞

实习生

发表于 2016-9-12 20:53:41  
里面的图片 全部 看不到啊。 能不能修改一下啊。 全部是本地链接。。
回复

点赞

等待验证会员

发表于 2016-9-17 15:37:00  
非常感谢楼主的分享,期待楼主对蓝牙5的分享!
回复

点赞

高级模式
您需要登录后才可以回帖 登录 | 注册

专家问答 查看更多>>
关闭

站长推荐 上一条 /7 下一条

小黑屋|手机版|Archiver| 电子发烧友 ( 粤ICP备14022951号-2 )     

GMT+8, 2017-3-28 08:23 , Processed in 0.492215 second(s), 14 queries , Memcache On.

微信扫描
快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

我的提问

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

单片机论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

-

硬件设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

树莓派论坛

智能硬件论坛

开发快智能硬件开发平台

Intel物联网开发者专区

Waveshare

乐美客SBC专区

Arduino论坛

BeagleBone论坛

机器人论坛

创客神器NanoPi

小钢炮CANNON

比派科技banana pi专区

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

个人版区

阿东Verilog技术专版

直流马达驱动电路设计

LabVIEW英雄联盟

特权同学FPGA专区

-

厂商专区

灵动微电子 MM32

盈鹏飞嵌入式

TI论坛

TI Deyisupport社区

芯灵思嵌入式论坛

Tisan

米尔科技

庆科社区

WIZnet技术专区

Cypress技术论坛

飞凌嵌入式

Qualcomm技术论坛

英创嵌入式

机智云GoKit论坛

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区