低功耗蓝牙(BLE)学习记录
- 格式:doc
- 大小:1.05 MB
- 文档页数:22
低功耗(BLE)蓝牙跳频通信技术原理BLE蓝牙跳频通信技术可以将可用频点扩展开来,可以容纳更多的设备量,另外还能大大的提高保密性能,其中的3个绿色信道是用来搜索设备的时候广播用的,另外剩下的37个信道主要用于数据通信。
它的数据传输间隔从7.5mS到4S即0.25Hz到133.3Hz之间,一般情况下用0.25到1s 的间隔,这个范围比其他同类通信无线技术要大很多。
BLE蓝牙主机和从机会先进行“交流”,共同商议一个双方都认可的连接间隔,这样可以使发射与接收同步进行,从而降低电量和带宽的损耗。
通信频率是2402MHz到2480MHz区间,其中有3个广播信道,37个数据信道,跳频通信在前面提到了,这种方式可以有效提高传输抗干扰能力和空间内同时容纳的设备数量,同时加强了传输保密性能。
识别不同设备的方式是采用48位共可以编号2的48次方即281474976710656,即10的14.45次方个设备而不重号。
打个比喻,比如厚度1cm的心率传感器,叠起来可以从太阳到地球跑9个来回。
也有人大致算过可以给地球上每一粒沙子都编上号还可以用。
这个地址是蓝牙芯片生产厂商预先刻录在芯片里面的,所以是不会存在重号的情况。
所以,在低功耗蓝牙通信这块,基本可以总结出以下结论:BLE蓝牙的跳频技术在抗干扰性、容纳相同设备同时通信、数据安全性方面具有非常好的性能。
此外,在当前BLE蓝牙最新版本中可以实现多对多连接。
扩展到BLE蓝牙模块中也是一样的,如今蓝牙5.0技术已经非常成熟,应用也非常广泛,众多蓝牙模块厂家都已应用上最新蓝牙技术,如云里物里的蓝牙模块MS50SFB就是采用的蓝牙5.0技术。
低功耗蓝牙的优势极为明显,在保密性,数据传输,功耗,主机控制,拓扑结构等等表现都不错。
基于蓝牙技术受众面广,在未来不论是智能家居还是可穿戴设备或是消费电子,都会实现互联互通,创造更多的智能化服务,这也是物联网发展的新趋势。
BLE学习应用笔记1OSAL 学习笔记1-OSAL.C* @fn osal_strlen 计算字符串的长度。
字符串必须空结尾。
* @fn osal_memcpy 一般内存复制* @fn osal_revmemcpy//一般的颠倒内存复制。
从资源缓存的最后开始,通过使用资源地址的指针移动len字节的,然后指针自减。
* @fn osal_memdup//分配一个缓存(和osal_mem_alloc()),并复制这个资源缓存到刚分配好的控件.* @fn osal_memcmp 一般内存比较* @fn osal_memset 设置内存缓存值* @fn osal_rand 产生随机数* @fn osal_msg_allocate 动态分配一个OSAL消息缓存* @fn osal_msg_deallocate 释放一个OSAL消息缓存(接收任务调用)* @fn osal_msg_send 为某个任务发送一个OSAL消息* @fn osal_msg_receive 检索接收命令消息。
* @fn osal_msg_find 发现在一个OSAL消息匹配任务ID和事件参数。
* @fn osal_msg_extract* //从OSAL队列中间提取和移除一个OSAL消息* @fn osal_set_event 为一个任务设置一个OSAL 事件* @fn osal_clear_event 清除一个任务的事件标志。
* @fn osal_init_system OSAL 初始化,必须在主函数中被调用* @fn osal_start_system 开始运行OSAL 主循环* @fn osal_run_system 现至少一个等待事件的第一个任务。
2-OSAL_bufmgr.c* @fn osal_bm_alloc 分配器函数的实现* @fn osal_bm_free 取消分配器函数的实现* @fn osal_bm_adjust_header 调整header* @fn osal_bm_adjust_tail 调整tail3-OSAL_cbtimer.c* @fn osal_CbTimerInit 初始化函数* @fn osal_CbTimerProcessEvent//回调定时器任务事件处理函数* @fn osal_CbTimerStart//当定时器到期,注册调用函数将被调用。
BLE协议栈CC2540 and CC2541 Bluetooth low energy softwaredeveloper’s Reference Guide学习TI CC254xBLE协议栈,参考其软件开发手册。
记录一些重要的概念以及API。
本文主要参考资料《CC2540 and CC2541 Bluetooth low energy software developer’s Reference Guide》。
1、状态:2、连接参数:连接间隔:有效连接间隔= 连接间隔* (1 + 从机延时)Effective Connection Interval = (Connection Interval) × (1 + [Slave Latency])Where:• Connection Interval: 80 (100 ms)• Slave Latency: 4• Effective Connection Interval: (100 ms) × (1 + 4) = 500 msWhen no data is sent from the slave to the master, the slave will transmit during a connection event once every 500 ms.从机延时管理超时连接参数更新,由L2CAP层处理,包括的内容有:最小、最大连接间隔、从机延时、超时。
连接参数更新——从机发出更新请求,主机接受更新或拒绝。
3、连接终断:主机、从机任何时间以任何原因都可以终断连接。
4、GAP Abstraction从图中可知道,绝大部分GAP功能在GAP Role 任务中处理,一小部分必须直接由GAP层处理。
配置GAP层:其大部分函数被定义在库代码中,这一部分TI以Lib的形式提供给开发者,开发者看不到具体的代码;可以从gap.h中找到函数头,并且其中大部分的函数在GAP Role任务中调用,不需要开发者直接调用。
BluetoothLE(低功耗蓝⽛)回顾在本系列的前两篇⽂章中,我们已经了解了⼀些关于Bluetooth LE的背景并建⽴⼀个简单的Activity / Service框架。
在这篇⽂章中,我们将探讨Bluetooth LE的细节以及蓝⽛设备查找的⼀些问题。
扫描并发现蓝⽛设备蓝⽛设备的发现是⼗分简单的,它是⼀个在蓝⽛可见范围内查找设备的过程。
⾸先我们要做的就是在Manifest中添加必要的权限,否则我们将在⼀开始就碰壁。
我们需要的权限是android.permission.BLUETOOTH(⼀般蓝⽛使⽤)和android.permission.BLUETOOTH_ADMIN(额外的任务,如蓝⽛发现)。
在我们深⼊之前,值得说明的是BleService 将作为⼀个状态机,在不同的状态执⾏不同的任务。
这些状态中,我们⾸先要考虑的是扫描状态。
当BleService 接收到⼀个MSG_START_SCAN消息后进⼊扫描状态:private static class IncomingHandler extends Handler {@Overridepublic void handleMessage(Message msg) {BleService service = mService.get();if (service != null) {switch (msg.what) {...case MSG_START_SCAN:service.startScan();Log.d(TAG, "Start Scan");break;default:super.handleMessage(msg);}}}}startScan()⽅法开始扫描:public class BleService extends Service implementsBluetoothAdapter.LeScanCallback {private final Map<String,BluetoothDevice> mDevices =new HashMap<String, BluetoothDevice>();public enum State {UNKNOWN,IDLE,SCANNING,BLUETOOTH_OFF,CONNECTING,CONNECTED,DISCONNECTING}private BluetoothAdapter mBluetooth = null;private State mState = State.UNKNOWN;...private void startScan() {mDevices.clear();setState(State.SCANNING);if (mBluetooth == null) {BluetoothManager bluetoothMgr = (BluetoothManager)getSystemService(BLUETOOTH_SERVICE);mBluetooth = bluetoothMgr.getAdapter();}if (mBluetooth == null || !mBluetooth.isEnabled()) {setState(State.BLUETOOTH_OFF);} else {mHandler.postDelayed(new Runnable() {@Overridepublic void run() {if (mState == State.SCANNING) {mBluetooth.stopLeScan(BleService.this);setState(State.IDLE);}}}, SCAN_PERIOD);mBluetooth.startLeScan(this);}}}⾸先,我们需要确保⼿机上的蓝⽛已启⽤,如果没有则提⽰⽤户打开它。
深入浅出低功耗蓝牙(BLE)协议栈低功耗蓝牙(BLE)协议栈是一种用于低能耗设备间通信的无线通信技术。
它主要用于物联网设备、传感器和其他低功耗设备之间的通信。
本文将深入浅出地介绍BLE协议栈的工作原理和主要组件,以及其在物联网和其他领域的应用。
BLE协议栈由多个层级组成,包括物理层(PHY)、链路层(LL)、主机控制器接口(HCI)、主机层(Host)和应用层(Application)。
每个层级负责不同的功能,并通过各自的接口与上下层通信。
物理层是BLE协议栈的最底层,负责将数据转化为无线信号进行传输。
BLE使用2.4GHz频段进行通信,采用频率跳变技术来抵抗干扰和提高传输稳定性。
链路层建立在物理层之上,负责处理与设备之间的连接和数据传输。
它包括广播(Advertisement)和连接(Connection)两种传输模式。
广播模式用于设备之间的发现和配对,而连接模式用于实际的数据传输。
主机控制器接口(HCI)是链路层与主机层之间的接口,负责传输控制命令和事件信息。
主机层负责处理设备的连接管理、数据传输和高层协议等任务。
应用层则是最上层,负责处理具体的业务逻辑和应用程序。
BLE协议栈的工作流程一般分为广播、扫描、连接和数据传输四个阶段。
在广播阶段,设备会周期性地发送广播包,以便其他设备发现和连接。
扫描阶段是其他设备主动并发现正在广播的设备。
连接阶段是建立起连接后的设备之间进行数据传输。
数据传输阶段则是实际进行数据交换的阶段。
BLE协议栈的优势在于其低功耗、简单易用和成本低廉。
它适用于大量的物联网设备,如健康追踪器、智能家居设备等。
同时,BLE协议栈也在其他领域有着广泛的应用,例如无线鼠标、键盘、耳机等。
总之,低功耗蓝牙(BLE)协议栈是一种用于低能耗设备间通信的无线通信技术,具有低功耗、简单易用和成本低廉等优势。
它在物联网和其他领域有着广泛的应用,为设备间的通信提供了可靠和高效的解决方案。
低功耗蓝牙(BLE)学习记录RW_BLE_CORE记录传输信道BLE的传输信道在2.4G频段有40个channel。
包括2种物理信道:广播信道和数据信道。
数据帧中设置Access Address用于标识该信道,防止信道碰撞。
Channel MAP如下:数据帧通信蓝牙帧结构如下:Preamble:根据Access Address而定,假如AA的LSB(最右bit)bit为1,则前导便是10101010b,反之则为01010101b。
Access Address:广播帧的AA为:0x8E89BED6。
其他情况可以是一个32bit的随机数。
AA需满足以下条件·不超过连续6个1或者0。
·与广播帧的AA不同bit超过1个。
·不能4byte相同。
·0 1跳变不能超过24次·MSB 6bit 0 1跳变超过2次。
以下逐个介绍PDU。
一、Advertising Channel PDU蓝牙广播帧帧结构其中Header的帧格式如下:其中,a、广播帧类型(PDU Type)分为以下几类:• ADV_IND: connectableundirected advertising event• ADV_DIRECT_IND: connectable directed advertising event• ADV_NONCONN_IND: non-connectable undirected advertising event• ADV_SCAN_IND: scannable undirected advertising eventb、Length:3~37bytes广播帧分为很多种,其区别就是payload所代表的意义不同,以下分别对几种广播帧作分别阐释:1、ADV_INDADV_IND的payload格式如下:在广播帧帧头中的TxAdd位是广播地址的标示位:TxAdd==0:AdvA地址为公用地址;TxAdd==1:AdvA地址为随机地址。
Layer,LL)以及主机控制接口层(Host Controller Inter-face,HCI);主机层包括:逻辑链路控制和适配器层(Logical Link Control and Adaptation Protocol,L2CAP)、属性协议层(Attribute Protocol,ATT)、通用属性协议配置规范层(Generic Attribute Profile,GATT)、安全管理层(Security Manager Protocol,SMP)以及通用访问规范层(Generic Access Profile,GAP)。
Controller用来实现与硬件相关的射频接收发送初步数据逻辑协议等工作,Host处理完全纯数据协议逻辑的工作,比较特别的HCI层用于衔接Host和Controller通信的中间层。
本文主要研究和分析BLE建立连接时的配对绑定过程。
BLE协议体系结构如图1所示。
BLE的配对绑定过程分为3个阶段[1],第一个阶段是发起配对绑定请求,实际上是配对特征交换得到临时密钥(Temporary Key,TK)值;第二个阶段使用SMP协议进行各种中间密钥的传送和计算,实际上是身份确认以及短期密钥(Short Term Key,STK)生成;第三个阶段是在第二个阶段的基础上进行密文通信交换各种所需要的密钥,例如:长期秘钥(Long Term Key,LTK)、身份解析秘钥(Identity Root Key,IRK)和连接签名解析秘钥(Connec-tion Signature Resolving Key,CSRK)等。
配对绑定阶段流程如图2所示。
2 安全管理协议■2.1 SMP中加密算法BLE协议规定了SMP中使用的是一个单向函数,用于产生秘钥、加密和提供完整性检查。
这种加密引擎被称为先进加密系统(Advanced Encryption Standard,AES)。
BLE 中使用AES的128位版本[2],也就是明文、秘钥和密文都52 | 电子制作 2020年02-03月软件开发是 128 位的,其加解密的安全函数为e,加解密表达式如(1): 密文=ekey(明文)/密文=e(key,明文) (1)这里的加密引擎函数e为AES标准中的电子密码本模式(Electronic Codebook mode encryption,ECB),计算MAC(Media Access Control)地址时使用到了函数CMAC,它是由Counter with Cipher Block Chaining-Message Au thentication Code (CCM)实现。
RC6621DQ低功耗蓝牙透传模块数据手册文档信息型号RC6621D备注名称低功耗蓝牙透传模块文档类型数据手册文档编号RCBM-H02版本日期V2.0.02020-10-18版本更新版本号文档日期更新内容V2.0.02020/10/18 第一次发布;注:本文档讲不定期更新,在使用此文档前,请确保为最新版本。
文档中的信息仅供深圳市智汉科技有限公司RF Crazy®的授权用户或许可人使用。
没有深圳市智汉科技有限公司RF Crazy®的书面授权,请勿将本文档或其他部分内容印制或者作为电子文档副本传播。
目录1.产品概述 (1)主要特点 (1)模式默认配置 (2)设备状态 (2)2.工作模式示意图 (3)3.模块尺寸及引脚 (3)4.串口透传协议说明 (5)5.BLE协议说明(APP接口) (5)Service UUID (5)BLE数据接收UUID (5)BLE数据发送UUID (6)AT指令操作UUID (6)6.AT指令 (6)AT命令表 (7)进入AT指令模式 (7)退出AT指令模式 (8)设备名称 (8)MAC地址 (8)串口回显 (9)显示设备状态 (9)广播参数 (10)连接间隔 (10)Service (11)断开连接 (12)自定义广播内容 (12)发射功率 (13)休眠模式 (14)串口波特率 (14)用户鉴权 (15)设备重启 (16)恢复出厂设置 (16)固件版本查询 (16)7.用APP测试透传功能 (16)8.IOS APP编程参考 (19)9.主机(MCU)参考代码(透传) (20)10.使用条件及注意事项 (21)联系我们................................................................................................错误!未定义书签。
附录A:BLE模块应用方案提示. (24)附录B:模块射频参数测试报告 (25)附录C:功耗测试截图 (37)1.产品概述智汉科技RF Crazy®RC6621DQ是基于OnMicro的HS6621D SoC设计开发的高性能、高灵敏、低成本的蓝牙5.2(BLE)模块。
蓝牙低能耗蓝牙低能耗((BLE )技术技术简介简介蓝牙低能耗技术简介蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM 射频频段。
它从一开始就设计为超低功耗(ULP)无线技术。
它利用许多智能手段最大限度地降低功耗。
蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。
另外,因为BLE 技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。
BLE 技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。
这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。
超低功耗无线技术蓝牙低能耗技术的三大特性成就了ULP 性能,这三大特性分别是最大化的待机时间、快速连接和低峰值的发送/接收功耗。
无线“开启”的时间只要不是很短就会令电池寿命急剧降低,因此任何必需的发送或接收任务需要很快完成。
被蓝牙低能耗技术用来最小化无线开启时间的第一个技巧是仅用3个“广告”信道搜索其它设备,或向寻求建立连接的设备宣告自身存在。
相比之下,标准蓝牙技术使用了32个信道。
这意味着蓝牙低能耗技术扫描其它设备只需“开启”0.6至1.2ms 时间,而标准蓝牙技术需要22.5ms 时间来扫描它的32个信道。
结果蓝牙低能耗技术定位其它无线设备所需的功耗要比标准蓝牙技术低10至20倍。
值得注意的是,使用3个广告信道是某种程度上的妥协:这是在频谱非常拥挤的部分对“开启”时间(对应于功耗)和鲁棒性的一种折衷(广告信道越少,另外一个无线设备在选用频率上广播的机会就越多,就越容易造成信号冲突)。
不过该规范的设计师对于平衡这种妥协相当有信心——比如,他们选择的广告信道不会与Wi-Fi 默认信道发生冲突(见图1)图1:蓝牙低能耗技术的广告信道是经过慎重选择的,可以避免与Wi-Fi发生冲突蓝牙低能耗技术的广告信道是经过慎重选择的,一旦连接成功后,蓝牙低能耗技术就会切换到37个数据信道之一。
低功耗蓝牙BLE - 学习笔记蓝牙的分类BLE【实操恋爱课-程】协议框架关键术语及概念广播数【扣】据格式广播网【1】络拓扑GAT【О】T 连接的网络拓扑GATT【⒈】通讯事务服务和特【б】征Ser【9】vice?Char【5】acteristic?最近由【2】于项目需求在学习 BLE,网上Android BLE开发的资料相比其他【6】 Android 资料显得有些匮乏,在此记录学习例程,希望能能对学习 BLE 的童鞋有所帮助。
在上手 Android 之前我们需要先搞清楚蓝牙的协议及通讯过程,才不会在调用 Google 提供的 API 时似懂非懂。
蓝牙的分类当前的蓝牙协议分为基础率 - 增强数据率(BR-EDR)和低耗能(BLE)两种类型。
当然现在 BLE蓝牙模块?还有单模和双模之分,单模指的是仅支持BLE ,双模即 Bluetooth Classic + BLE。
蓝牙BD-EDR和蓝牙BLE主要区别BLE协议框架蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙使用层协议(Bluetooth Application)。
蓝牙核心协议关心对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何运用这些机制;蓝牙使用层协议,是在蓝牙核心协议的基础上,根据具体的使用需要定义出各种各样的策略,如 FTP、文件传输、局域网.?蓝牙核心协议(Bluetooth Core)又包含 BLE Controller 和 BLE Host 两部分。
这两部分在不一样的蓝牙技术中(BR-EDR、AMP、BLE),承担角色略有不一样,但大致的功能是相同的。
Controller 负责定义 RF、Baseband?等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host?负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让 Bluetooth Application 更为方便的运用。
赛普拉斯BLE培训要点这次培训主题是赛普拉斯推介针对物联网应用提供的整套解决方案,速率约1Mbps。
主办方现场演示了4个examples并提供了开发套件,会后展示了设计成品(手机端遥控并语音)。
一、开发套件低功耗蓝牙先锋套件(C Y8CKIT-042-BLE,图1和图2)包括:1.调试板:红色大块基板;图 1 图 2图 32.两个单芯片模块(图3):PSoC 4 BLE(红色小模块)和PRoC BLE (黑色小模块);B蓝牙接收器及接线。
●二、两款IC详细介绍1.PSoC 4 BLE:包含48MHz ARM Cortex-M0内核、BLE模块、电容式触摸功能、模拟部分(12位ADC、2个电流型DAC、2个低功耗比较器、4个低功耗运放)、数字模块(4个定时器也可做计数器/PWM用、4个通用数字块、2线串口通讯块)。
2.PRoC BLE:包含48MHz ARM Cortex-M0内核、BLE模块、电容式触摸功能、2线串口通讯块、12位ADC、4个定时器也可做计数器/PWM用、4个额外的PWM、I2S和LCD功能。
●三、会议要点1.BLE当前主要应用于物联网IOT、智能家居领域;2.赛普拉斯采用的蓝牙4.1技术现在支持16个设备;3.赛普拉斯提供可靠且性能优异的电容式触摸按键;4.这两款IC赛普拉斯只量产了128k Flash的型号(不支持蓝牙在线升级),256k还没量产(可支持蓝牙在线升级);5.IC程序本身占用60kb-70kb,更新这些程序用时5min左右;6.BLE主要通过缩短蓝牙轮询时间来降低功耗(待机18.9μA @1sec)7.IC内部集成阻容,简化设计且减小体积;IC外部仍需放置一个1.2pF电容和?H电感;8.这两款IC做了硬件识别,设备名一般识别为:赛普拉斯04b4;9.CapSense Touch Sensing, SmartSense Ato-Tuning;10.I C单价1美元左右,取决于量;11.信号有效范围20米到30米,灵敏度-92dB。
ble手册阅读指南(最新版)目录1.蓝牙低功耗(BLE)技术概述2.蓝牙低功耗(BLE)手册的作用和结构3.如何阅读蓝牙低功耗(BLE)手册4.蓝牙低功耗(BLE)手册中的重要概念和规范5.总结正文蓝牙低功耗(BLE)技术概述蓝牙低功耗(BLE)技术,也称为蓝牙智能(Bluetooth Smart),是蓝牙技术联盟(Bluetooth SIG)在 2010 年推出的一种新型短距离无线通信技术。
相较于传统蓝牙技术,BLE 具有更低的功耗、更远的通信距离和更高的传输速率等特点。
BLE 技术广泛应用于物联网(IoT)、可穿戴设备、智能家居等领域,为用户提供便捷的数据传输和信息交互功能。
蓝牙低功耗(BLE)手册的作用和结构蓝牙低功耗(BLE)手册是蓝牙技术联盟为开发者提供的一份详细的技术指南,旨在帮助开发者快速掌握 BLE 技术的原理、规范和实现方法。
BLE 手册分为以下几个部分:1.基本概念:介绍 BLE 技术的基本原理、通信方式和系统架构等内容。
2.通信协议:详述 BLE 通信的各个层次,包括物理层、链路层、网络层和应用层等。
3.设备角色和操作:介绍 BLE 设备在通信过程中的不同角色,以及各种操作方法和流程。
4.应用示例:通过具体的应用实例,演示如何使用 BLE 技术实现数据传输和信息交互。
5.规范和测试:提供 BLE 技术相关的规范文档和测试方法,确保设备和应用的兼容性和可靠性。
如何阅读蓝牙低功耗(BLE)手册为了更好地阅读和理解蓝牙低功耗(BLE)手册,建议您遵循以下步骤:1.熟悉基本概念:首先阅读“基本概念”部分,了解 BLE 技术的基本原理和优势,为后续阅读打下基础。
2.学习通信协议:接着阅读“通信协议”部分,掌握 BLE 通信的各个层次和关键技术,以便在实际开发中应用。
3.了解设备角色和操作:在“设备角色和操作”部分,学习 BLE 设备的不同角色和操作流程,为设计和开发设备奠定基础。
4.学习应用示例:通过阅读“应用示例”部分,了解 BLE 技术在各个领域的具体应用,为自己的项目寻求灵感。
1.BLE client和server通俗地说吧,Server(服务器)就是数据中心,Client(客户端)就是访问数据者。
特别说明,它与主/从设备是独立的概念:一个主设备既可以充当Server,又可以充当Client;从设备亦然Server首先将一个服务按“属性/句柄/数值/描述”这种格式予以组织,然后调用API 函数GATTServApp_RegisterService将服务数据进行注册。
举个实例吧,设提供一个电池电量服务字节,它允许Client读取,数据为一个8比特无符号数(0~100%),它的组织如下:02 25 00 19 2A, 这5个数据(小端格式)分别是:0x02=只读属性,0x0025=句柄;0x2A19=服务UUID。
句柄(Handle)就是服务数据在数据中心的地址,当所有的服务数据组织起来后,它总得有个先后顺序,某个服务的位置就是它的句柄。
还是上面的类比,如果想去图书馆借阅《现代操作系统》,需要查明该书在哪一层楼,哪个房间,这就是该书的Hanle大致分三类:读取服务的值,需要知道服务的UUID或者Handle;写服务的值,需要知道服务的Hanle;写服务描述符,需要知道该Descriptor的Hanle。
根据服务的UUID调用API函数GATT_ReadUsingCharUUID协议栈会返回该服务的Handle。
特别注意的是,一个服务的Descriptor的Handle总是该服务的Handle+1,如电池电量服务的Handle是0x0025,那么它的Descriptor的Handle是0x0026蓝牙通信中,Server不能直接访问(读/写)Client,但是可以通知(Notification)Client,通知的前提是Client通过写Descriptor使能通知功能。
例如,某Server发现电池电量已经低于安全阀值,它可以调用GATT_Notification通知所有已连接的Client,但是Client接收后如果处理是它自己的事情。
A501 BLE快速入门基础目录A5011.BLE概述2.广播、扫描3.连接4.属性数据库5.对属性的基本操作BLE概述A501 BLE与蓝牙4.0的区别蓝牙4.0实际是个三位一体的蓝牙技术,它将三种规格合而为一,分别是传统蓝牙、低功耗蓝牙和高速蓝牙技术,这三个规格可以组合或者单独使用。
单模设备只支持低功耗蓝牙。
双模设备即支持经典蓝牙,又支持低功耗蓝牙。
仅支持经典蓝牙的设备。
BLE概述A501 BLE的应用(未来五年将有十亿的设备需求量)2.4G蓝牙低功耗系统消费类电子产品移动电话外围扩展设备运动和休闲设备健康医疗用品(血压计、体温计……)汽车电子设备人机接口设备(鼠标、键盘、遥控器……)USB DongleBLE概述A501 BLE的体系结构BLE概述A501 BLE设备链路层状态BLE概述A501 信道频率/MHz 信道编号2402 37(广播信道)2404~2424 0~10(数据信道)2426 38(广播信道)2428~2478 11~36(数据信道)2480 39(广播信道)广播A501设备每次广播时,会在3个广播信道上发送相同的报文。
称为一个广播事件。
广播间隔,2次广播事件之间的时间。
广播间隔的取值范围20ms~10.28s链路层会在每两次广播事件期间产生一个随机广播延时时间(0~10ms),避免数据碰撞凡是在广播信道传输的都是广播报文。
广播A501 广播数据最大长度31个字节数据格式,长度:类型:数据020106 06FF32342E3435 050863636363 00000000000000000扫描A501 每次扫描设备打开接收器去监听广播设备,称为一个扫描事件。
扫描事件交替地发生在三个特定的广播信道:37,38,39扫描的两个参数扫描间隔:扫描设备的扫描频率扫描窗口:每次扫描事件的持续时间连接A501连接A501连接请求参数:接入地址----链路层使用CRC初始值----链路层使用连接间隔传输窗口偏移传输窗口大小从设备延迟监控超时信道图调频算法增量休眠时钟精度连接A501连接间隔:一个连接事件是指主设备和从设备之间相互发送数据包的过程。
BLE技术知识点大全BLE(Bluetooth Low Energy)是一种低功耗的无线通信技术,主要用于物联网设备的远程连接。
以下是关于BLE技术的一些知识点:1.BLE的基本原理:BLE是基于蓝牙技术的一种低功耗通信协议,在2.4GHz频段进行通信,使用GFSK调制方式,传输距离通常在10-100米之间。
2.BLE的应用场景:BLE技术广泛应用于物联网设备、智能家居、健康监测、智能手环、智能手表、无线耳机等领域,可以实现设备之间的远程通信和数据传输。
3.BLE的工作模式:BLE有两种工作模式,一种是广播模式,设备以广播的形式发送数据,其他设备可以接收到数据;另一种是连接模式,设备之间建立连接后进行数据传输。
4.BLE的主从模式:BLE设备可以分为主设备和从设备,主设备发起连接和控制从设备,从设备接收并响应主设备的指令。
5. BLE的数据传输方式:BLE使用GATT(Generic Attribute Profile)协议进行数据传输,通过定义服务、特征和描述符来实现数据的读取、写入和通知。
6.BLE的功耗优势:相比传统蓝牙技术,BLE在传输过程中功耗更低,主要通过降低通信速率、减少连接时间和采用快速连接方式来实现。
7.BLE的安全性:BLE使用128位的AES加密算法来保证数据的安全传输,可以防止数据被窃听和篡改。
8.BLE的频谱共存技术:BLE采用频率跳变技术,将通信频率在不同的时间片段进行跳变,以避免和其他无线设备的干扰。
9.BLE与传统蓝牙的区别:BLE相比传统蓝牙具有更低的功耗、更短的连接时间和更简化的协议栈,适合于低功耗设备和短距离通信。
10. BLE的版本:BLE的技术标准由Bluetooth SIG(SpecialInterest Group)制定,目前最新的BLE版本是5.2,不断更新的版本提供了更高的速率、更低的功耗和更广的覆盖范围。
11. BLE Mesh:BLE Mesh是基于BLE技术的一种网络拓扑结构,可以实现设备之间的多对多通信,适用于大规模物联网设备的部署。
低功耗蓝牙BLE (4.0规范)蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。
一般将蓝牙3.0之前的 BR/EDR 蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE 蓝牙称为低功耗蓝牙。
蓝牙4.0标准包括传统蓝牙模块部分和低功耗蓝牙模块部分,是一个双模标准。
低功耗蓝牙也是建立在传 统蓝牙基础之上发展起来的,并区别于传统模块,最大的特点就是成本和功耗降低,应用于实时性要求 比较r 司oBTWBLE 的对比分析:BLE (Bluetooh Low Energy)蓝牙低能耗技术是短距离、低成本、可互操作性的无线技术,它利用许多智 能手段最大限度地降低功耗。
BLE 技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控 器等其它外设传送数据。
这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如 每秒几次到每分钟一次,甚至更少)。
BLE 协议栈的结构和配置1、协议有两个部分组成:Controller 和Host2、Profiles 和应用总是基于GAP 和GATT 之上传统蓝牙模块(8T vl.0/2.0)高速蓝牙模块(BT v3.0)技术规范 痂电允率 发送散密所* = 响应延时 ⅛MW(BT) 2 4GHZ 10* 100ms 约 100ms低功口魂牙(BLE )2 4GHZ aχιoo* <3ms 6ms安全性 64∕128∙D<t 及用户目定义的应用层128∙bιt AES 及用户目定义的应用层空中传断数品速查1∞% (r ef)1∙3Mt√S1‰50% 1Mb∕S手矶,游戏机.耳机、立体・、邦数JB 流.g PCW手机、游之矶.PC.表、休・0勇、医疗保 使.M 能分金设务,汽至、东用电子等3、在单芯片方案中,Controller和Host, profiles,和应用层都在同一片芯片中4、在网络控制器模式中,Host和Controller是在一起运行的,但是应用和profiles在另外一个器件上,比如PC或者其他微控制器,可以通过UART, USB进行操作5、在双芯片模式中,Controller运行在一个控制器,而应用层,profiles和Host是运行在另外一个控制器上BLE设备连接状态流程图低功耗蓝牙体系结构BLE蓝牙模块主要应用领域1、移动扩展设备2、汽车电子设备3、健康医疗用品:心跳带、血压计等4、定位应用:室内定位、井下定位等5、近距离数据采集:无线抄表、无线遥测等6、数据传输:智能家居室内控制、蓝牙调光、打印机等结语:很多人对蓝牙的认识还很局限于手机领域,其实蓝牙的应用已经远远不止于此。
RW_BLE_CORE记录传输信道BLE的传输信道在2.4G频段有40个channel。
包括2种物理信道:广播信道和数据信道。
数据帧中设置Access Address用于标识该信道,防止信道碰撞。
Channel MAP 如下:数据帧通信蓝牙帧结构如下:Preamble:根据Access Address而定,假如AA的LSB(最右bit)bit为1,则前导便是10101010b,反之则为01010101b。
Access Address:广播帧的AA为:0x8E89BED6。
其他情况可以是一个32bit的随机数。
AA需满足以下条件·不超过连续6个1或者0。
·与广播帧的AA不同bit超过1个。
·不能4byte相同。
·0 1跳变不能超过24次·MSB 6bit 0 1跳变超过2次。
以下逐个介绍PDU。
一、Advertising Channel PDU蓝牙广播帧帧结构其中Header的帧格式如下:其中,a、广播帧类型(PDU Type)分为以下几类:• ADV_IND: connectable undirected advertising event• ADV_DIRECT_IND: connectable directed advertisingevent• ADV_NONCONN_IND: non-connectable undirectedadvertising event• ADV_SCAN_IND: scannable undirected advertising event b、Length:3~37bytes广播帧分为很多种,其区别就是payload所代表的意义不同,以下分别对几种广播帧作分别阐释:1、ADV_INDADV_IND的payload格式如下:在广播帧帧头中的TxAdd位是广播地址的标示位:TxAdd==0:AdvA地址为公用地址;TxAdd==1:AdvA地址为随机地址。
AdvData则是广播HOST的广播数据。
2、ADV_DIRECT_IND这种帧用于直接接入的广播事件。
ADV_DIRECT_IND的payload帧格式如下:其中AdvA的意义与ADV_IND相同。
InitA为广播发起者地址:RxAdd==0:发起者地址是公用地址;RxAdd==1:发起者地址是随机地址。
注意:该帧不包含任何HOST数据。
3、ADV_NONCONN_IND用于不可接入不直达(non-connectable undirected)的网络。
其payload意义与ADV_IND类似。
4、ADV_SCAN_IND用于可扫描不直达网络。
Payload意义与ADV_IND类似。
二、Scaning PDUs1)SCAN_REQ:这是扫描请求帧,处于广播状态的接收设备接收这种帧。
此处,ScanA为扫描者的地址,其地址由TxAdd控制是公共地址还是随机地址。
AdvA为该扫描帧的目的地址。
由RxAdd控制意义。
2)SCAN_RSP扫描确认。
处于广播状态的设备在收到扫描请求后,需要回复扫描确认帧。
AdvA地址意义由TxAdd确定。
ScanRspData为广播端的附带数据。
三、Initiating PDU该部分为连接发起协议。
发起的帧格式仅一种:CONNECT_REQ。
由发起方发送该帧,广播方接收该帧。
1)CONNECT_REQCONNECT_REQ帧格式如下:TxAdd确认InitA地址为公共地址还是随机地址;RxAdd确认AdvA地址为公共地址还是随机地址。
LLData的数据格式如下:AA:AccessAddressCRCInit:CRC校验的初始值,它应该是LinkLayer产生的一个随机值。
WinSize:发送窗长度参数。
transmitWindowSize=WinSize*1.25ms。
WinOffset:发送窗起始偏移量。
TransmitWindowOffset=WinOffset*1.25ms。
上述两个window意义如下:Interval:确定connect interval的时间长度。
connInterval = Interval * 1.25 ms。
Latency:connSlaveLatency =Latency。
TimeOut:connSupervisionTimeout= Timeout * 10 ms(100ms~32s之间),当两帧数据之间的时间间隔超过6*connInterval或者connSupervisionTimeout时,则认为连接丢失。
ChM:即ChannelMAP,一共0~36个信道。
LSB代表channel0,哪一个是1,则哪一个信道有效。
Channel 37~39保留。
Hop:5~16之间的随机值,用于设置HopIncrement。
用于计算不使用的信道编号。
unmappedChannel = (lastUnmappedChannel + hopIncrement) mod 37如果计算结果是属于保留信道,则通过下式计算:remappingIndex = unmappedChannel mod numUsedChannels SCA:设置Master睡眠时钟精确度的最大值。
对应表如下:四、Data Channel PDU数据信道的帧格式如下:其中包括16bit Header,长度可变的Payload,和一个信号完整性确认字段(MIC)。
1、关于Header和MICHeader的数据格式如下:每个字段的意义如下:MIC字段使用的时候,有两个条件:1、不能使用于非加密的数据帧;2、数据帧payload 长度不能为0。
字长为4byte。
2、关于PayloadPayload分为两类,LL Data PDU和LL Control PDU(LLID==11b)。
LL Data PDU里面又分为两类,一类是完整数据帧或帧碎片起始帧(LLID==10b),另一类是帧碎片(LLID==01b)。
其中,帧碎片帧的帧长度可以为0,而完整(起始)帧的长度不可以为0。
下面具体介绍LL Control PDU:LL Control PDU的帧格式如下:其帧长度不能为0,其中包含两个字段:Opcode和CtrData。
Opcode用于确定控制帧类型:假如收到的LLC PDU格式不支持或者是无用帧,则回复LL_UNKNOWN_RSP PDU,此时的Type字段需设置成收到的无用的opcode。
LL_CONNECTION_UPDATA_REQ:该帧的帧格式如下:这些信息的意义在下一章的四中有详述。
LL_CHANNEL_MAP_REQ:LL_TERMINATE_IND:这个ErrorCode在蓝牙协议中有具体制定意义。
[Vol2 Part D] LL_ENC_REQ:和加密相关的请求帧LL_ENC_RSP:和加密相关的回复帧LL_START_ENC_REQ:没有CtrData字段LL_START_ENC_RSP:没有CtrData字段LL_UNKNOWN_RSP:LL_FEATURE_REQ:LL_FEATURE_RSP:LL_PAUSE_ENC_REQ:没有CtrData字段LL_PAUSE_ENC_RSP:没有CtrData字段LL_VERSION_IND:LL_REJECT_IND:关于蓝牙通信协议的理解一、时钟要求Active状态下小于±50ppm。
Sleep Mode下小于±500ppm。
二、设备过滤除了仅支持不可连接的广播系统(non-connectable advertising),其他模式均需支持设备过滤。
广播、扫描、连接发起均具有各自独立的过滤机制。
如果芯片不支持这几种模式的话,那就可以不支持设备过滤。
设备过滤是为了尽量减少不必要的数据通信。
设备过滤时需要具备一个白,白容包括不过滤设备的地址和地址类型(公共或随机)。
白容由HOST设置。
以下对各种过滤模式作一个介绍:1、广播过滤支持过滤方式如下,一次仅支持一种方式:·广播设备仅处理来自白的设备的扫描、连接请求。
·广播设备处理一切设备的扫描、连接请求。
(复位值)·广播设备处理所有设备的扫描请求,仅处理白的连接请求。
·广播设备处理所有设备的连接请求,仅处理白的扫描请求。
2、扫描过滤支持过滤方式如下:·扫描设备仅处理来自白设备的广播帧。
·扫描设备处理一切设备的广播帧。
假如广播方已经过滤该扫描设备的话,通信不能成功。
3、发起过滤支持过滤方式如下:·被发起设备处理来自白所有设备的连接发起请求。
·被发起设备忽略白,仅处理host给出设备的连接发起请求。
三、非连接状态简述1、standbyStandby是复位后的芯片初始状态,由它可以进入广播、扫描和连接状态。
2、advertising进入广播状态后,便开始发送广播帧。
在发送完一帧广播帧以后,advertising event 将被关闭,来适应其他功能。
广播事件有以下几种类型:第一帧广播帧应该在channel index中的最低的广播信道发送。
广播事件是否有回复帧由广播帧类型决定,具体如下表:当收到错误的返回帧时,广播端会在下一个广播信道发送广播帧,或直接停止广播事件。
广播事件间隔必须是625us的倍数,围在20ms~10.24s,其设置方式如下:T_advEvent = advInterval + advDelayscannable 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 Typec)Scannable Undirected Event Typed)Non-connectable Undirected Event Type1、scanning检测状态是用来监听广播帧的,其状态由HOST控制,分为主动扫描和被动扫描。
扫描状态下有两个参数scanWindow、scanInterval用于设置一次扫描的时间。
扫描时间不能长与10.24s,scanWindow<scanInterval。
被动扫描(Passive Scanning):只接收帧,不发送帧。