TI-BLE4.0蓝牙概述
BLE4.0教程一蓝牙协议连接过程与广播分析

BLE4.0教程⼀蓝⽛协议连接过程与⼴播分析1.蓝⽛简介什么是蓝⽛4.0蓝⽛⽆线技术是使⽤范围最⼴泛的全球短距离⽆线标准之⼀,蓝⽛4.0版本涵盖了三种蓝⽛技术,即传统蓝⽛、⾼速蓝⽛和低功耗蓝⽛技术,将三种规范合⽽为⼀。
它继承了蓝⽛技术在⽆线连接上的固有优势,同时增加了⾼速蓝⽛和低功耗蓝⽛的特点。
这三个规格可以组合或者单独使⽤。
蓝⽛4.0规范的核⼼是低功耗蓝⽛(Low Energy),即蓝⽛4.0BLE。
该技术最⼤特点是拥有超低的运⾏功耗和待机功耗,蓝⽛低功耗设备使⽤⼀粒纽扣电池可以连续⼯作数年之久。
蓝⽛4.0技术同时还拥有低成本、向下兼容、跨⼚商互操作性强等特点。
蓝⽛4.0 BLE的特点蓝⽛4.0 BLE技术具有如下特点:1.⾼可靠性对于⽆线通信⽽⾔,由于电磁波在传输过程中容易受很多因素的⼲扰,例如,障碍物的阻挡、天⽓状况等。
因此,⽆线通信系统在数据传输过程中,具有内在的不可靠性。
蓝⽛技术联盟(SIG)在制定蓝⽛4.0规范时已经考虑到了这种数据传输过程中的内在的不确定性,所以在射频、基带协议、链路管理协议(LMP)中采⽤可靠性措施,包括:差错检测和校正、进⾏数据编解码、差错控制、数据加噪等,极⼤地提⾼了蓝⽛⽆线数据传输的可靠性。
另外,使⽤⾃适应跳频技术,最⼤程度地减少和其他2.4GHz ISM频段⽆线电波的串扰。
2.低成本、低功耗低功耗蓝⽛⽀持两种部署⽅式:双模⽅式和单模⽅式。
(1)双模⽅式,低功耗蓝⽛功能集成在现有的经典蓝⽛控制器中,或在现有经典蓝⽛技术(2.1+EDR/3.0+HS)芯⽚上增加低功耗堆栈,整体架构基本不变,因此成本增加有限。
(2)单模⽅式,⾯向⾼度集成、紧凑的设备,使⽤⼀个轻量级连接层(Link Layer)提供超低功耗的待机模式操作。
蓝⽛4.0BLE技术可以应⽤于8bit MCU,⽬前TI公司推出的兼容蓝⽛4.0BLE协议的SoC芯⽚CC2540/CC2541,外接PCB天线和⼏个阻容器件构成的滤波电路即可实现蓝⽛⽹络节点的构建。
蓝牙BLE4.2 、BLE4.0、BLE5.0、 BLE5.1、BLE5.2主要区别与对比

蓝牙BLE4.2、BLE4.0、BLE5.0、BLE5.1、BLE5.2主要区别与对比导读蓝牙的核心是短距离无线电通讯,它的基础来自于跳频扩频(FHSS)技术,蓝牙技术于爱立信在1994年创制。
1998年5月20日,爱立信联合IBM、英特尔、诺基亚及东芝公司等5家著名厂商成立「特别兴趣小组」(Special Interest Group,SIG),即蓝牙技术联盟的前身,目标是开发一个成本低、效益高、可以在短距离范围内随意无线连接的蓝牙技术标准。
经过这么些年的发展,蓝牙已经从最初的1.0版本演变到了目前最新的5.2版本。
在历代的版本更迭中,蓝牙技术已经有了非常大的变化。
说起各个版本的特性,可能不少人都一知半解,今天,小亿就目前市面上主要应用到的蓝牙BLE版本特性进行简要的差异介绍。
蓝牙4.2VS蓝牙4.0蓝牙4.2协议是有蓝牙技术联盟在2014年推出的协议版本,对比2010年推出的蓝牙4.0协议,进行了以下几个方面的提升。
>>>>01.速度传输更快与4.0相比,蓝牙4.2标准下,设备之间的数据传输速度提升了约2.5倍,蓝牙智能数据包可容纳的数据量相当于此前的约10倍。
>>>>02.安全性更高此外,蓝牙4.2的安全性也有所提升,如果没有得到用户许可,蓝牙信号将无法尝试连接和追踪用户设备,并且无法进行智能定位。
>>>>03.功能更强大新标准还推动了IPv6协议引入蓝牙标准的进程,蓝牙4.2设备可以直接通过IPv6和6LoWPAN接入互联网,且支持低功耗IP连接。
之后于2016年,蓝牙技术联盟又推出了蓝牙5.0版本。
在之前的4.2版本基础上又进行了进一步的提升。
蓝牙5.0VS蓝牙4.2>>>>01.容量及速度与蓝牙版本4.2相比,蓝牙5.0可以带来两倍的数据传输速度,数据传输容量提高了800%。
换句话说,使用蓝牙5.0,可以以更快的速度传输和接收更多数据。
TI低功耗蓝牙BLE4.0射频片上系统CC2540中文数据手册

WISDOM FUTURE WIRELESS WORLD
智慧未来 无线世界
信驰达简介
信驰达科技(RF-star)是一家集合方案设计功能和核心器件供应的专业本地电子元器件分销商,专注低功 耗射频 LPRF 和低功耗 MCU 领域,公司成立于 2010年,作为中国区唯一具有美国 TI 公司授予的 LPRF Product Reseller 和 Third Party 双重资质的公司,一直引领着 LPRF 技术在国内的推广和应用,是国内唯一 一家可提供 LPRF 软硬件产品、技术支持、解决方案和核心元器件供应一条龙服务的专业化公司;
Shenzhen RF-star Technology Co.,Ltd. TEL: 0755-86329829 FAX:0755-86329413
WISDOM FUTURE WIRELESS WORLD
智慧未来 无线世界
This integrated circuit can be damaged by ESD. Texas Instruments recommends that all integrated circuits be handled with appropriate precautions. Failure to observe proper handling and installation procedures can cause damage. ESD damage can range from subtle performance degradation to complete device failure. Precision integrated circuits may be more susceptible to damage because very small parametric changes could cause the device not to meet its published specifications.
蓝牙4.0模块使用手册

蓝牙4.0 BLE模块使用手册一、模块引脚介绍蓝牙模块引出5个针脚:1、EN:可编程输入输出接口,正常使用没用到2、VCC:电源输入,3.6V--5V3、GND: 地4、TXD:接单片机串口的RX5、RXD:接单片机串口的TX6、STATE: 主机中断指示口,空闲为低,连接上为高。
与手机蓝牙连接上后输出高电平,用于检测是否连接上。
led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口二、蓝牙4.0 BLE介绍从蓝牙4.0开始有两个分支,经典4.0和BLE4.0,经典4.0 就是传统的3.0蓝牙升级而成,向下兼容。
而BLE 4.0是一个新的分支,无法向下兼容。
BLE 是Bluetooth Low Energy 低功耗蓝牙的缩写,顾名思义,其功耗较低。
三、主从模式设置模块已经选择用软件设置主从模式。
两个模块之间的搜索,需要一个设为主,一个为从,用AT+ROLE 进行配置。
然后发送AT 指令进行搜索连接.简单举例:设置模块为主模式:通过串口发送AT+ROLE1(回车或者加\r\n),返回OK,则表示设置成功,此时模块LED灯进入快闪。
主模块连接从模块需要通过AT指令进行连接(详情请参照BT05 AT指令集)。
四 、模块与407开发板(高配版)连接五、实验操作与现象1、板子上电,下载配套的例程程序2、板子断电,插上蓝牙4.0 BLE模块3、板子上电后,蓝牙4.0 BLE模块工作,led灯闪烁4、手机设置中打开手机蓝牙(此处搜不到模块的蓝牙)5、之后打开“启明BLE”app,app会自己搜索蓝牙,此时app 将搜索到名为“BT05”,点击连接后,led灯常亮6、连接成功后手机APP就可以控制开发板了六、常见问题1、支持哪些设备答:苹果手机限定:4s 及以上型号,系统版本 iOS6 及以上, 安卓手机限定:手机蓝牙版本为4.0,系统为4.3版本及以上。
2、为什么在手机设置蓝牙界面下找不到BLE设备答:手机蓝牙默认工作在经典模式下,您需要通过软件程序来实现搜索,配对连接和通迅的整个过程。
蓝牙4.0技术公开课PPT_朱兆祺_第1章

无线广域网
Wireless Wide Area Network
图1. 四种无线网络的传输速度和传输距离对比
2.无线网络中的短距离通信
短距离
无线体域网
距离 <1m <10m <500m 20km~50km
表1. 短距离无线通信的发展过程与特点 标准或技术 推出时间 典型通信距离(m) 最大数据传输速率(Mbps)
定提交其低功耗技术。但是诺基亚的低功耗技术基于蓝牙并不受IEEE青睐,于是
指出诺基亚低功耗无线电仅仅作为一个独立的提案,缺乏跨公司的合作。 2004年中期,诺基亚通过改变标准蓝牙技术规范的设备发现、跳频、双模和单模, 实现了低功耗特性,并且完成了项目开发和演示系统,至此称之为蓝牙低端扩展 (Bluetooth low end extension)。但是当时的诺基亚还没有发现合适的机会进 行技术转让和应用,该技术前景一度暗淡。
“蓝牙”是一种开放的技术规范,它可在世界上的任何地方实现短距离的无线语 音和数据通信。 蓝牙的创始人是瑞典爱立信公司,爱立信早在1994年就已进行研发。1997年, 爱立信与其他设备生产商联系,并激发了他们对该项技术的浓厚兴趣。 1998年2月, 5个跨国大公司,包括爱立信、诺基亚、IBM、东芝及Intel组成了一个特殊兴趣小组 (Bluetooth Special Interest Group —— SIG),他们共同的目标是建立一个全
0.5~4s,传感器类应用程序发送的数据量较平常要少很多,而且所有连接均采用
先进的SSR(Sniff Sub-Rating)功能模式,因此此时的射频能耗几乎可以忽略不计, 综合以上因素,低功耗蓝牙的待机功耗较传统蓝牙大大减少。
c.传输距离、可靠性和安全性的提高
BLE蓝牙 4.0 学习笔记

蓝牙4.0 BLE center与peripheral建立连接绑定过程 (2)蓝牙4.0 BLE peripheral 广播设置 (7)蓝牙4.0 BLE 数据传输(一) (11)蓝牙4.0 BLE 数据传输(二) (12)蓝牙4.0 BLE 数据传输(三) (16)蓝牙4.0 BLE 数据传输(四) (19)蓝牙4.0 BLE 数据传输(五) (23)蓝牙4.0 BLE 程序设计相关问题解答(转载) (25)蓝牙4.0 BLE SimpleBLEPeripheral_添加新CHAR值及UUID (33)蓝牙4.0 BLE peripheral 广播设置学习笔记(转载) (45)蓝牙4.0 BLE key处理过程看任务、事件、消息机制 (50)CC254x 内部存储结构FLASH (53)蓝牙4.0 BLE FLASH 操作 (58)蓝牙4.0 BLE center与peripheral建立连接绑定过程蓝牙主机从机建立连接绑定过程center与simplePeripheral建立连接过程center首先进行osal_init_system()初始化各个任务,SimpleBLECentral_Init->osal_set_event( simpleBLETaskId, START_DEVICE_EVT );进入SimpleBLECentral_ProcessEvent()调用VOID GAPCentralRole_StartDevice( (gapCentralRoleCB_t *) &simpleBLERoleCB );//当初始化完成,会发送GAP_DEVICE_INIT_DONE_EVENT由于注册了simpleBLERoleCB函数,因此发送的event由simpleBLERoleCB函数接收static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )此时pEvent->gap.opcode =GAP_DEVICE_INIT_DONE_EVENT,相应信息存储于pEvent中typedef union{gapEventHdr_t gap; //!< GAP_MSG_EVENT and status.gapDeviceInitDoneEvent_t initDone; //!< GAP initialization done. gapDeviceInfoEvent_t deviceInfo; //!< Discovery device information event structure.gapDevDiscEvent_t discCmpl; //!< Discovery complete event structure.gapEstLinkReqEvent_t linkCmpl; //!< Link complete event structure.gapLinkUpdateEvent_t linkUpdate; //!< Link update event structure.gapTerminateLinkEvent_t linkTerminate; //!< Link terminated event structure.} gapCentralRoleEvent_t;联合体,只有deviceInfo里面的数据是正确的typedef struct{osal_event_hdr_t hdr; //!< GAP_MSG_EVENT and statusuint8 opcode; //!< GAP_DEVICE_INIT_DONE_EVENTuint8 devAddr[B_ADDR_LEN]; //!< Device's BD_ADDRuint16 dataPktLen; //!< HC_LE_Data_Packet_Lengthuint8 numDataPkts; //!< HC_Total_Num_LE_Data_Packets} gapDeviceInitDoneEvent_t;能获得如设备地址等信息设备初始化完成通过串口发送'1'触发设备发现进行设备扫描GAP_DEVICE_INFO_EVENT 0x0D //!< Sent during the Device Discovery Process when a device is discovered.GAP_DEVICE_DISCOVERY_EVENT 0x01 //!< Sent when the Device Discovery Process is complete.当发现一个设备时,触发一个设备info事件同样是在simpleBLECentralEventCB 处理此时pEvent改变为deviceInfo可以获得广告设备的类型,地址。
蓝牙4.0及应用

一、蓝牙4.0技术特点1.1蓝牙的技术特性设备结构原理是把一块小且功耗低的无线电收发芯片嵌入到传统电子设备中。
蓝牙芯片包括无线电收发器和链路控制器(LC)。
无线收发器是蓝牙设备的核心,使用的无线电频段在ISM2.4GHZ到2.48GHZ之间。
控制连接包括两部分:软件连接——链路管理器(LM)和硬件——链路控制器(LC)。
LM执行链路设置、监权、配置;负责连接、建立和拆除链路并进行安全控制。
LC实现数据发送和接受。
逻辑LC和适应协议具有完成数据拆装、控制服务质量和复用协议的功能,该层协议是其它各层协议实现的基础。
(1)射频特性蓝牙设备的工作频段选在全世界范围内都可以自由使用的2.4GHz的 ISM(工业、科学、医学)频段,这样用户不必经过申请便可以在2400~2500MHz范围内选用适当的蓝牙无线电收发器频段。
频道采用23个或79个,频道间隔均为1MHz,采用时分双工方式。
调制方式为时分双工方式。
调制指数为04.210435。
蓝牙的无线发射机采用FM调制方式,从而能降低设备的复杂性。
最大发射功率分为三个等级,100mW(20dBm),2.5mW(4dBm),1mW(0dBm),在4~20dBm范围内要求采用功率控制。
因此,蓝牙设备之间的有效通信距离大约为10~100m。
(2)跳频技术跳频技术是将整个频带分成若干跳频信道,即使在单一链接的情况下,蓝牙芯片所操控的收发器也会按照一定的码序列(即具有规律性的、技术上称为“伪随机码”的数码集)不断地从一个信道“跳”转到另一个信道。
而接收方亦按照同样的跳转规律进行信道切换,这实际上属于一种硬件加密手段,除非第三方掌握了发收双方的切换信道规律,那么从理论上来讲是无法获得完整信息的。
而对干扰来说不可能存在按同样的规律介入的干扰源,跳频的瞬时带宽很窄,但通过扩展频谱技术使这个窄带宽成百倍地扩展成宽频带,使被干扰的可能变得很小,如此便可以保证传送的完整性。
跳频是蓝牙使用的关键技术之一。
蓝牙4.0技术及最新应用

Classic Bluetooth
~100 m (Class 1) 1-3 Mbit/s 0.7-2.1 Mbit/s 7
Security
56/128-bit and application layer defined
Robustness
Adaptive fast frequency hopping, FEC, fast ACK
举例: Heart Rate Profile -Heart Rate Service(HRS) -Device Information Service(DIS) Proximity Profile -Link loss Service -Immediate Alert Service Find Me Profile -Immidiate Alert Service
~50 m 1 Mbit/s 0.2 Mbit/s unlimited
128-bit AES and application layer defined
Adaptive frequency hopping, Lazy Acknowledgement, 24-bit CRC, 32-bit Message Integrity Check No Star 3 advertising channels RF is on for 0.6ms to 1.2ms
1.5 Bluetooth Low Energy协议栈
Application Application Controller Interface ( ACI )
PUI D Re mo te con trol Hea rt rate The rm o Bat tery Stat tu s
...
Generic Attribute Profile ( GATT )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蓝牙设计1. 问:什么是蓝牙通信?答:蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接,现在已经成为IEEE802.15标准,得到全球上万家厂商支持。
2. 问:如果从事蓝牙开发有没有前途?答:严格地说,这不是一个技术问题,而是一个世界观问题。
什么是前途?如果单纯是金钱,从事技术是不太可能暴富的(注意比尔.盖茨是个技术商人);如果想用你所能改善世界,这是可能的,毕竟蓝牙的主要用途是民用。
附带说一句,考虑赚钱和改变世界是中国和西方人世界观的主要差别。
3. 问:蓝牙有什么优势?答:首先是低功耗,以BLE 4.0为例,一节钮扣电池在静态工作状态可以支持一年;其次是低成本,TI公司的CC2540蓝牙SOC方案芯片出售价仅1美元,可以让人们低廉使用蓝牙技术;再次是开放性,2.4GHz的频段全球开放,没有政府监管;最后是适合时代潮流,现在是手机的时代,蓝牙技术本来就为它而生。
4. 问:蓝牙4.0协议和BLE是什么?答:蓝牙4.0协议是2010年6月由SIG(Special Interest Group)发布的最新标准,它有2种模式:BLE(Bluetooth low energy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);BR/EDR(Basic Rate / Enhanced Data Rate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机)。
5. 问:目前支持蓝牙4.0的移动设备有哪些?答:苹果公司的iPhone 4S、iPhone 5、miniPad和iPad 3;小米手机2;三星公司的Galaxy SIII和Note II;HTC ONE系列。
6. 问:如何开始蓝牙4.0的开发呢?答:概括地讲至少以下三方面的准备吧。
硬件方面,需要购买TI公司蓝牙迷你套件,包括蓝牙USB电子狗和KeyFob以及CC Debugger传真器;软件方面,安装IAR for 8051,TI公司BTool软件;技术知识,《CC2540/41 BLE Software Developer’s Guide 1.3》和《CC2540/41 User’s Guide》。
7. 问:刚开始接触蓝牙如何快速上手?答:理论联系实践是比较好的学习方法,建议先学习《CC2540/41 BLE Software Developer’s Guide 1.3》,然后将SimpleBLEPerepheral工程导入IAR for 8051,结合电子狗和BTool,调试蓝牙通讯中的广播/连接/绑定/访问。
光看书不动手,空虚;不看书光动手,浅薄。
8. 问:IAR调试CC2540时程序导入到了芯片的Flash中了吗?答:确实。
CC2540是SOC(System On Chip)芯片,它的内核就是8051,它需要从ROM中取指令,从RAM中取数据来运行。
仿真时,CC Debugger会把程序导入芯片Flash中,再执行仿真。
9. 问:当IAR调试中出现警告“缺少断点,无法运行到main()”?答:出现这个错误的原因是,IAR for 8051最多只能设置3个断点,如果设置过多,当程序下载后,将出现些调试警告。
解决的方法很简单,去掉一些断点,再重新载入程序。
10. 问:为什么IAR调试时有很多变量无法查看它的值?答:主要的原因是IAR编译器设置了优化功能,函数中的自动变量以及一些静态函数都被优化过了,所以没有生成对应的调试信息,无法查看和设置断点。
解决的方法是关闭编译器的优化功能,右键点击工程的Options -> C/C++ Compiler -> Optimizations中的Level设置为None。
11. 问:蓝牙协议分层很多且比较复杂,该如何掌握呢?答:蓝牙协议从应用层到物理层一共分了8层,看上去比较复杂且API函数很多。
首先不必要知道每一层的具体实现,掌握与应用紧密关联GAP/GATT(或者GAP Role和GATT Profiles)层就可以满足大部分设计需要;每一层的软件都是通过OSAL来调用的,因此需要了解OSAL的基本原理:任务/事件/消息/定时器/动态分配内存;最后把蓝牙通讯过程理解,将有助于开发。
12. 问:OSAL是一个操作系统吗?答:OSAL(Operating System Abstraction Layer)操作系统抽象层,它不是一个真正的操作系统(它没有Context Switch上下文切换功能),但它巧妙地组织各任务,支持任务优先级,任务之间可以通过事件和消息来通信,为任务提供软定时器和动态内存分配。
要避免的陷阱是,应用任务的单个函数运行时间不能太长(如操作大批量数据的Flash写),否则它无法及时调度高优先级的LL(Link Layer)任务而导致蓝牙通信中断。
13. 问:蓝牙节点是如何组成微微网的呢?答:蓝牙节点组网中,只能存在一个主节点(Central)和多个从节点(Peripheral),从节点是发出信号者,主节点是扫描且发起连接者。
14. 问:主节点和从节点通信的过程是怎样的呢?答:当从节点发出广告信号(包括设备地址和设备名称之类的附加信息);主节点收到此广告信号后,向从节点发出扫描请求;当从节点回应扫描时,就完成了设备发现过程。
接着主节点向从节点发出连接请求(包括连接时隙、从节点待机次数、连接超时值),从节点回应连接,就完成了建立连接。
为了安全起见,一些数据的访问需要认证,它的完成是这样的:一方(可以是主节点,也可以是从节点)向另一方索要6位数字的密码,之后,两个节点彼此交换安全密钥用于加密和认证,此过程称为配对。
认证的过程比较繁琐,BLE协议支持两节点保存认证的安全密钥(一般是非易失性存储器中),以便于两节点下次连接后快速认证,这就是绑定技术。
15. 问:蓝牙通信中两个节点如何交换数据?答:这是蓝牙通信中最让初学者迷惑的地方。
大部分通信,尤其是TCP/IP,交换数据的婚介是数据包,但蓝牙通信中,工程师找不到数据包访问方式,于是就产生疑问。
其实蓝牙最底层也是基于无线数据包交换,只是通过层层封装,交付给工程师的API接口就变成了Client访问Server的方式。
16. 问:Client和Server节点是如何定义呢?答:通俗地说吧,Server(服务器)就是数据中心,Client(客户端)就是访问数据者。
特别说明,它与主/从设备是独立的概念:一个主设备既可以充当Server,又可以充当Client;从设备亦然。
17. 问:Server是如何提供数据呢?答:Server首先将一个服务按“属性/句柄/数值/描述”这种格式予以组织,然后调用API函数GATTServApp_RegisterService将服务数据进行注册。
举个实例吧,设提供一个电池电量服务字节,它允许Client读取,数据为一个8比特无符号数(0~100%),它的组织如下:02 25 00 19 2A, 这5个数据(小端格式)分别是:0x02=只读属性,0x0025=句柄;0x2A19=服务UUID。
18. 问:不明白Server提供服务中的UUID?答:UUID(Universal Unique Identifier)全球惟一标识符,本来是SIC组织分配给特定蓝牙服务的标识,如分配0x2A25为设备序列号的UUID,这样任意蓝牙设备都可以通过它得到另一个设备的序列号。
打个类比,它就像书名,如《现代操作系统》,所有人一看就知道它是计算机大师Andrew S. Tanenbaum 写的书。
19. 问:什么是Server提供服务中的句柄呢?答:句柄(Handle)就是服务数据在数据中心的地址,当所有的服务数据组织起来后,它总得有个先后顺序,某个服务的位置就是它的句柄。
还是上面的类比,如果想去图书馆借阅《现代操作系统》,需要查明该书在哪一层楼,哪个房间,这就是该书的Hanle。
20. 问:为什么Server提供的服务中有描述?答:有些服务是有描述(Descriptor)的,它是用于Client配置该服务的功能(通知或者显示)。
像某人没有借到《现代操作系统》该书(可能是被别人借光了),他(她)可以打个电话给图书馆工作人员,请求一旦该书可以借阅了给他一个通知,这个过程相当于配置该书的Descriptor。
21. 问:服务的属性与描述有区别吗?答:有区别,服务的属性是Server设置访问权限。
就像图书馆的工作人员可以设置《现代操作系统》仅能在阅览室看不能外借(只读),或者即可以看也可以外借(读/写)。
22. 问:Client如何访问Server的服务呢?答:大致分三类:读取服务的值,需要知道服务的UUID或者Handle;写服务的值,需要知道服务的Hanle;写服务描述符,需要知道该Descriptor的Hanle。
23. 问:如何知道一个服务的Handle?答:根据服务的UUID调用API函数GATT_ReadUsingCharUUID协议栈会返回该服务的Handle。
特别注意的是,一个服务的Descriptor的Handle总是该服务的Handle+1,如电池电量服务的Handle是0x0025,那么它的Descriptor的Handle是0x0026。
24. 问:Server可以访问Client吗?答:蓝牙通信中,Server不能直接访问(读/写)Client,但是可以通知(Notification)Client,通知的前提是Client通过写Descriptor使能通知功能。
例如,某Server发现电池电量已经低于安全阀值,它可以调用GATT_Notification通知所有已连接的Client,但是Client接收后如果处理是它自己的事情。
25. 问:如果得知电池容量?答:任何使用电池供电的设备都必须精确监控电池容量,否则设备可以突然断电而停止工作,它的基本原理是通过ADC(模数转换器)计算电池电压。
以CC2540芯片用一钮扣电池为例,电池电压从2.0v~3.0v,即电量的0%~100%;CC2540有一10比特的ADC,量程范围为0~511,参考电压为1.25v,最大测量电压为3.75v,以上信息可以得知:(v/3)/ 1.25 * 511 = adc,则2.0v=273adc,3.0v=409adc,根据下图可以很容易得知ADC转换为电压的公式:Percentage / (X – 273) = 100 / 136 = 25 / 34,变换后为:Percentage = (X - 273) * 25 / 34,为四舍五入提高计算精度则有:Percentage = [(X - 273) * 25 + 33] / 34。