BLE
文章平均质量分 92
黑刀夜
嵌入式从业者
展开
-
BLE的传输速率
主设备端向从设备传输数据,为了达到最大的传输速率可以采用write cmd(写命令,无需从设备回应)方式向从设备写数据;从设备向主设备发送数据,为了达到最大的传输速率可以使用Notification(通知,无需主设备回应)本文代码以nordic平台为例进行说明影响传输速率的主要因素连接间隔连接间隔传输的数据包数量数据包大小1 连接间隔如果启用了CLE(不受单个连接间隔内,只能发送 4~6个数据包的限制),因此只需要选择一个合适的连接间隔即可,无须使用低功耗蓝牙5.x协议栈中的最小连接间隔(原创 2022-05-11 23:59:22 · 2919 阅读 · 0 评论 -
详解BLE的数据传输过程
如今的社会已经从IT时代过渡到了DT时代,数据的重要性不言而喻。将数据安全快速的传输给对方是一件非常重要的事情,如今诞生了很多不同的传输技术,每一种传输技术都是为了和对方进行数据交互。BLE技术也是这样,它的最终目的就是为了在两个设备间进行数据交互。我们从BLE的本质出发,搞清楚它是如何实现数据交互的,也就真正搞清楚了BLE的工作原理。下面从3个方面,逐步讲解BLE的数据收发过程。本文结合nordic的代码和蓝牙核心规范5.2来进行介绍。本文认为你对BLE协议栈的各个层已经有了一个大概认识,对BLE协议原创 2021-12-29 11:54:26 · 9302 阅读 · 4 评论 -
四 蓝牙低功耗(BLE)协议栈 之 L2CAP层
一 介绍L2CAP(逻辑链路控制和适配协议层)是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割、数据重组、通道多路复用、通道流量控制和错误检测,使得较大的报文可以在底层无线电中传输。L2CAP层提供逻辑通道,即L2CAP通道,这些通道在一条或多条逻辑链路上复用。在经典蓝牙无线电中,L2CAP层提供的功能比这更多,也更为复杂。通道管理器(Channel Manager)提供一个功能控制的控制面板,并负责所有内部信令、L2CAP点对点信令以及高层和低层的信令。重传和流控制块(Retr原创 2021-12-20 16:58:32 · 4481 阅读 · 1 评论 -
BLE主机控制器接口层(HCI)数据结构
HCI上传输的5种数据:HCI Command packet : Host层发送给Controller的命令,只能由Host发出。HCI ACL Data packet: Controller上报给Host的事件,只能由Controller发出。HCI Synchronous Data packet:双向的,Host和Controller都可以发出。HCI Event packet: 发送给对端BLE的数据,双向的。Host和Controller都可以发出。HCI ISO Data packe.原创 2021-12-20 10:23:17 · 2054 阅读 · 0 评论 -
BLE 链路层(LL)的数据结构
一 链路层的数据结构在链路层上传输的数据格式如下图所示:广播报文和数据报文都包含 Preamble(前导码), AccessAddress(接入地址),PDU(数据),CRC。其中Constant Tone Extension是可选的。前导码接入地址PDUHeaderLengthMIC(可选)CRCConstant Tone Extension(可选)1 前导码报文最开始的8bit是01010101(0x55)或者10101010(0xAA)。这是很简单的交替序列。接收机原创 2021-12-16 16:23:00 · 5366 阅读 · 2 评论 -
Direct Test Mode
一 Direct Test Mode直接测试模式。DTM应用程序启用蓝牙规范5.0 vol 6, part F 中描述的DTM测试功能。DTM的目的是在物理层上测试射频的运行情况,例如:Transmission power and receiver sensitivity(传输功率和接收器灵敏度)Frequency offset and drift(频率偏移和漂移)Modulation characteristics(调制特性)Packet error rate(误码率)Intermodu翻译 2020-12-23 11:12:34 · 2992 阅读 · 0 评论 -
七 蓝牙低功耗(BLE)协议栈 之 GAP层
一 介绍GAP(Generic Access Profile, 通用访问规范)定义了设备如何彼此发现、建立连接以及如何实现绑定,同时描述了设备如何成为广播者和观察者,并且实现无需连接的数据传输。还定义了不同类型的地址来实现隐私性和可解析性。GAP内部有两个基本概念用来描述设备的行为,即模式(mode)和规程(procedure)。当一个设备被配置为按照某种方式操作一段较长的时间时,称为模式。当一个设备被配置为在某一段有限的时间内执行某种特定的操作时,称为规程。举个例子,当一个设备正在进行广播时,称原创 2020-08-21 15:24:05 · 5712 阅读 · 0 评论 -
六 蓝牙低功耗(BLE)协议栈 之 GATT层
一 介绍在 ATT 一文中说,属性就相当于是一个类中的各个变量,那么GATT就相当于是将这些变量按照一定规则组合起来就成了一个完整的类。GATT(Generic Attribute Profile, 通用访问规范),自己本身不提供数据,而是将ATT层提供的属性组合起来构成的服务。通过ATT层可以读写对端设备的属性值,各个属性之间有什么联系各个属性之间怎么组合起来的,是由GATT层负责。服务是GATT层的关键字,服务由属性组成。二 服务的结构一个BLE设备可以由多个服务组成,一个服务可以包含多个原创 2020-08-21 14:57:08 · 5299 阅读 · 0 评论 -
五 蓝牙低功耗(BLE)协议栈 之 ATT层
一 介绍ATT全称是Attribute protocol(数据交互协议),这一层的关键词是Attribute(属性)。一个属性其实就是一条数据,属性是BLE数据提供单元,也是蓝牙空中传播数据的最上层,BLE开发过程中接触最多的就是这一层。比如有一个Person的类,这个类有name、age、address属性public class Person{ public String name;//名字属性 private int age;//年龄属性 public String address;//地原创 2020-08-21 11:40:35 · 4963 阅读 · 3 评论 -
四 蓝牙低功耗(BLE)协议栈 之 L2CAP层
一 介绍L2CAP(逻辑链路控制和适配协议层)是一个复用层,可以让低功耗蓝牙复用三条不同的信道。它也支持数据的分割和重组功能,使得较大的报文可以在底层无线电中传输。在经典蓝牙无线电中,L2CAP层提供的功能比这更多,也更为复杂。二 L2CAP的数据格式Length: Information payload的长度Channel ID(CID): 信道Information payload: 有效的数据HCI层的ACL Data packet就是由L2CAP层构建的,或者说是L2CAP层的上原创 2020-08-21 10:12:52 · 4026 阅读 · 0 评论 -
三 蓝牙低功耗(BLE)协议栈 之 HCI层
一 HCI介绍HCI(主机控制器接口),是主机与控制器之间的接口,主要完成两个任务:发送命令给控制器、接收来自控制器的事件发送和接收来自对端设备的数据这里所说的接口既包括两个设备之间的物理接口,也包括逻辑接口。逻辑接口定义了命令、事件和数据的封包格式。而物理接口定义了主机和控制器之前如何传输这些数据。蓝牙规范定义了4种物理接口,3线串口、4线串口、HID、SDIO。这里不做过多介绍。二 HCI的数据格式HCI上主要传输3种数据:cmd : host层发来的命令event : Cont原创 2020-08-20 15:27:16 · 7043 阅读 · 1 评论 -
BLE蓝牙的连接和配对过程
同一款手机,为什么跟某些设备可以连接成功,而跟另外一些设备又连接不成功?同一个设备,为什么跟某些手机可以建立连接,而跟另外一些手机又无法建立连接?同一个手机,同一个设备,为什么他们两者有时候连起来很快,有时候连起来又很慢?Master是什么?slave又是什么?什么又是Connection event和slave latency?希望这篇文章能帮助你回答上述问题。转载 2019-12-24 22:52:19 · 44446 阅读 · 11 评论 -
BLE无线信号的调制方式
一 免费的频段下图展示了各个地区的免费的频段。其中2.4GHz频段在全球都是免费且不用授权,BLE使用的就是这个频段。只要你产品符合一定的规则都可以使用这个频段,规则主要包括发射功率和传输距离。2.4GHz频段范围为 : 2400MHz~2483.5MHz,约83.5MHz。二 BLE调制原理低功耗蓝牙采用了高斯频移键控。高斯滤波器通过增加从一个值到另一个值得频率转换时间,优化了一个符号到下一个符号的转换。如果没有高斯滤波器,频率转换会非常快,从而导致很大的噪声。高斯滤波器的引入,意味着从比特原创 2020-07-16 17:35:29 · 5042 阅读 · 1 评论 -
无线信号的调制方式 OOK、ASK、FSK、GFSK
一 OOKOOK(On-Off Keying),通断键控。如上图所示,Vm(t) 是需要发送的数字信号,Acos(2πfct) 是未经过调制的载波,VAM(t)是经过OOK调制的载波信号。OOK的调制原理就是用来控制把一个幅度取为0,另一个幅度为非0,就是OOK。又名二进制振幅键控(2ASK),它是以单极性不归零码序列来控制正弦载波的开启与关闭。二 ASK幅移键控,amplitude shift keying。如上图所示,载波经过调制之后可以有4个幅度,分别为V0=00、V1=01、V2=1原创 2020-07-16 16:47:47 · 55965 阅读 · 3 评论 -
EIR Data Type, Advertising Data Type (AD Type) and OOB Data Type Definitions
Data Type ValueData Type NameReference for Definition0x01«Flags»Bluetooth Core Specification:Vol. 3, Part C, section 8.1.3 (v2.1 + EDR, 3.0 + HS and 4.0)Vol. 3, Part C, sections 11.1.3 and 18.1 (v4.0)Core Specification Supplement, Part A, sect...原创 2020-07-15 15:26:15 · 929 阅读 · 0 评论 -
二 蓝牙低功耗(BLE)协议栈 之 LL层
一 链路层的状态链路层定义了两个设备如何利用无线电传输信息。它包含了报文、广播、数据信道的详细定义,也规定了发现其他设备的流程、广播的数据、连接的建立、连接的管理以及连接中的数据传输。链路层定义了5种状态:Standby,就绪态Advertising,广播态Scanning,扫描态Initiating,发起态Connection,连接态不过,可以认为扫描态有两个子状态:主动扫描和被动扫描。连接态也有两个子状态:主设备、从设备。链路层状态不但解释了设备间如何发现和连接。也解释了BLE的原创 2020-08-07 17:49:00 · 4198 阅读 · 2 评论 -
一 蓝牙低功耗(BLE)协议栈 之 PHY层
一 2.4GHz物理层相对于软件工作者来说是最简单的一层,几乎不用关心,但是这一层却非常重要,直接体现出蓝牙芯片的好坏。蓝牙工作在2.4GHz的频段,具体的频段范围是2400MHz到2483.5MHz,频段宽度为83.5MHz。BLE将这83.5MHz的宽度分成了0到39共40个通道,每一个通道宽度为2MHz。其中广播通道为37/38/39,对应的中心频率分别为2402MHz、2426MHz、2480MHz。BLE在广播的时候会轮流使用这3个通道进行广播。从图中可以看出BLE的3个广播通道并不是连原创 2020-08-06 19:55:51 · 6144 阅读 · 0 评论 -
蓝牙低功耗(BLE)协议栈
蓝牙协议栈简介如上图所示,蓝牙协议栈至下而上分为:PHY (物理层)LL (链路层)HCI (主机控制器接口层)L2CAP (Logical link Control and adaptation protocol specificaion,逻辑链路与适配协议规范)ATT (Attribute protocol, 属性层)GATT (Generic Attribute Profile, 通用属性规范)SMP (Security Manager Specification, 安全管理器规程原创 2020-08-07 17:58:23 · 3498 阅读 · 0 评论