锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

低功耗蓝牙开发入门概念科普

时间:2023-05-28 08:07:01 sp2841a502角度传感器a502高精度电位计角度传感器

一、概述

1、缘起
起源于低功耗蓝牙Bluetooth4.到目前为止,0版已经发展到5.3

4.0 bluetooth low enerngy 在这个阶段,低功耗蓝牙的基本框架已经稳定形成。后版主要退出新特性和扩展特性,同时保证和4.0的本土兼容性
4.1 multi role(主从一体)自动回连
4.2 data length extend,le secure connections pair ecdh密钥交换,(legacy pair)
5.0 2M phy,codeed phy(long range),扩展广播(31——>255)
5.1 增加方位和角度(用于定位,cm级),如apple tag
5.2 增加ble audio,
5.3 定期广播增加,加密钥尺寸控制增加,亚速连接(更快更新连接参数),信道分类增强(从设备翻转开始,可以纠正主机发布的信道策略)

二、架构

1、H-C设计(分层分工设计)

1.1、soc

在这里插入图片描述

soc设计是嵌入式开发中常见的开发设计方法,即controller和host在芯片中,典型的例子nordic,ti cc2640 2541,esp32等等

1.2、双芯片

双芯片就是host和controller分别设计在芯片中

2、controller

负责链路层及以下部分

链路层: 链路层定义了如何使用无线电传输信息,包括报纸、广播和数据通道的详细定义,以及发现其他设备的过程、广播数据、连接建立、连接管理和连接中的数据传输。

phy层: 物理层,底层基带信号调制(理解为二进制信号流)

看事少,确实是一切的基石

3、host

l2cap: 逻辑链路控制和适配器

ATT: 属性协议(蓝牙服务中最小的原子单位可以理解为军队中的特定士兵)
GATT: 属性协议配置规范
SM: 安全管理
GAP: 通用访问规范
应用层: 这是开发者展示拳脚的地方

4、hci

全称是host controller interface

VHCI:soc典型的设计方法(可以理解为massage queue)
UART: H4,H5(无流控,SLIP分包)
USB
SPI
SDIO

5.整体层次图

三、连接

1.广播扫描

广播通道

1.1、广播事件

1.2、广播类型

可连接非定向广播(最常用)
可连接定向广播
非定向广播不能连接
扫描广播不能连接

1.3.广播包数据结构

广播包有两种(广播包,广播响应包)
最大长度为31(5).0->数据采用255)LTV格式来组织
L:length 1byre
T:type 1byre
V:value length-1byre

1.4、扫描

扫描分为两种类型
主动扫描和被动扫描

2、连接

扫描设备扫描到自己感兴趣的广播设备时,可以通过广播渠道的广播事件锚点发出连接申请(connection indication),双方可以进入各种连接状态,准备交互数据

连接应用程序包含丰富的内容择几个

①初始连接参数
②选择算法和通道图(用于沟通初始通道和后续跳频)
③双方mac地址
④crc初始值
⑤传输窗口等

3.状态转换关系

4.连接事件和参数

最小连接间隔
最大连接间隔
slave latency
super timeout

四、数据通信

1.数据包格式

感觉和自己设置的串口通信协议很像吗?前导码类似AA用来表示蓝牙数据包的开始

以前感觉串口前加的。AA55这种很土,现在觉得很亲切很自然,因为连续的0101是最理想数字编码数据,连续多bit0和连续多bit1是最差的(容易误码)

蓝牙实际抓包,空中包真的是这样的

2、attribute

attribute table 最小单位的组成包括

attribute handle
attribute type(uuid)
attribute value
attribute permissions


实例

3、character

特征,几个attribute组成一个character,可以理解为一个attribute小组通常只有一个attribute只用于数据通信,只用于其他数据通信attribure基本上要是基本的attribute的辅助

4、service

服务,几个character组成一个service,可以理解为一个attribute该部门持有多个部门character最好一起提供服务A501,A502,A503,A508等共同组成我公司A5服务

5、profile

规范(规则)由一个或多个服务组成profile,可以理解为一个attribute 业务部,几个不同的子部门共同支持业务部,如系统部、应用部等。

6、profile示意图

7.数据发送方式

角色:server or client

注:设备可以是client又是server,例如,我们的手表或苹果手机,苹果手机是作为client访问我们的手表server同时,它也被用作数据server为我们提供ams,ancs等待服务(手表client)

上行:一般指server往client发数据
发:一般指client往server发数据

上行数据方法

notify:无确认包,但保证交付
indicate:保证交互,明确确认包



注意client想后续收到server的notify和indication,必须先打开相应的配置(使能)

发布数据方法
write with rsp:确保交付,并有明确的结果返回
write without rsp:确保交互,没有明确的结果返回(正确对应)ATT_WRITE_REQ,错误对应ATT_ERROR_RSP)



截取一些错误码,请参考完整的错误码 core spec

8.提高数据发送率和原理

1.改变连接参数

影响参数来源、主机、主机或主机(扫描广播并启动连接设备)的方法

①初始connection 包
②gap profile中的Peripheral Preferred Connection Parameters characteristic
③主机主动发出变更通知(中途可随机发出,450ota曾因此引发ota变慢的bug)
④主动申请设备update,等待主机执行(从机只能吹枕边风,主机可以直接拒绝(典型霸道,如ios手机,需要满足公式,可以参考苹果开发者手册),或者欣然接受,然后通过上述方法3具体发送有效值)




从机申请更新连接参数,实例抓包

2、改变mtu和dle(两者合作)
dle <= 251
mtu <= 512
建议mtu <= (dle - 4)

3、使用2M phy(大于等于5.0版本)
传输速度直接翻倍
秘密是什么?改变波特率(参考)口通讯,把9600改成115200)
1M phy(强制):1bit长度1us
2M phy(可选):1bit长度0.5us

4、问题来了,这些参数综合起来究竟如何影响数据传输速度?
连接间隔一定是越小越快?
mtu越大越好?
为啥实际数据传输速率达不到官方号称的1M or 2M?

五、ellisys抓包实战

1、准备硬件

硬件包括ellisys,待测设备(蓝牙主机,从机),电源插电,usb线插电脑

2、开启抓包

点击界面record开启盲抓(ellisys很强大)

3、开启过滤


4、设备广播

5、操作设备

6、结束抓包并分析

7、抓包数据存档

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章