深入理解蓝牙BLE
文章平均质量分 71
文章持续更新,小部分文章是转载的,但是大部分是原创。
优惠券已抵扣
余额抵扣
还需支付
¥49.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
GuoFeng.Wan
这个作者很懒,什么都没留下…
展开
-
(二十九)深入理解蓝牙BLE之“5.1版本新特性”
BLE设备可通过一根天线发射包含测向信息的数据包(CTE信息)使其方向可被对等设备获取。对等设备含有一组射频开关和天线阵列,在接收含有测向信息的数据包时切换天线并采集IQ(I表示In-phase,即同相;Q表示Quardrature,即正交)信号样本。IQ信号样本用于计算天线阵列中不同天线上接收到的无线电信号的相位差,并最终基于相位差及天线阵列中天线间距信息估算出到达角(AoA)。原创 2024-05-10 10:44:47 · 154 阅读 · 0 评论 -
(二十八)深入理解蓝牙BLE之“IOS系统蓝牙BLE的缓存问题和Attribute Caching机制”
原因是ios系统的蓝牙组件,缓存了Step3的“BLE业务2”的BLE服务,所以在Step5时,ios的蓝牙没有真正的通过空口包去读取智能设备的服务集,而直接将缓存的“BLE业务2”的BLE服务集,提供给了应用层,所以当重启手机,或者开关手机蓝牙后,ios系统的蓝牙组件清空了缓存,所以就又好用了,但是一旦进入“BLE业务2”,再进入“BLE业务1”,就又不行了。这里有一个模糊的点需要注意,换句话说,为什么“BLE业务1”的BLE服务集,ios系统的蓝牙不缓存,但是“BLE业务2”的BLE服务集却缓存了。原创 2023-06-15 17:19:00 · 1460 阅读 · 0 评论 -
(二十三)深入理解蓝牙BLE之“bluez协议栈与dongle”
想要快速的学习蓝牙知识,除了阅读官网的spec之外,还可以在Linux系统上插入外置的蓝牙Dongle,通过运行Bluez协议栈的实例程序来学习。当然除了Bluez协议栈的程序,zephyr系统也可以运行在Ubuntu系统之上,它也可以编译出来在ubuntu系统上运行的程序。原创 2023-05-21 21:42:00 · 429 阅读 · 0 评论 -
(九)深入理解蓝牙BLE之“安全管理Part2(SMP legacy pairing)”
本文介绍的内容工作在LE Security mode 1模式下。在4.2版本之前蓝牙BLE的配对方式还是只有legacy pairing方式的,这个方式是比较基础的,目前也有很多设备在使用它。本文只介绍legacy pairing的配对,新增的LESC的方式放在下一篇文章再介绍。配对:配对过程分为三个步骤(排除了建立连接和加密连接的两个过程的话),如图1:建立连接:原创 2023-05-21 15:39:19 · 701 阅读 · 0 评论 -
(二十四)深入理解蓝牙BLE之“H5协议”
蓝牙产品在实际落地中,很多时候采用host+controller的通信模型,其中host负责实现协议栈profile是运行在主控cpu上的。controller为另外一颗单独的蓝牙芯片,负责蓝牙link layer的处理,两个芯片通过hci消息来交互数据。hci定义了消息格式,但只有消息格式是不完整的,还需要定义在什么硬件总线上传输数据。协议规定hci消息可以在usb总线上传输,也可以在uart协议上传输,还可以在sdio协议上传输,这部分是hci的传输层定义的内容。原创 2023-01-30 14:53:04 · 1450 阅读 · 0 评论 -
(一)深入理解蓝牙BLE之“蓝牙的发展历程”
强烈推荐这两篇文章:蓝牙技术|蓝牙的发展历程 - 哔哩哔哩蓝牙5.3来了!为何市面上无线耳机仍停留在4.0?4.2版本:较上一个版本相比,开始支持DLE,将gatt的单包数据,从23个字节的单包传输,提升到247个字节的单包传输。5.0版本:增加扩展广播基础能力,增加2M PHY的调制解调能力,1M的coded PHY,为BLE Audio作准备。5.1版本:支持室内定位基础能力支持。5.2版本: 支持BLE Audio,主要是LC3编码,与传统蓝牙耳机相比,有更好的音质,更低的..转载 2022-04-09 23:20:01 · 5468 阅读 · 0 评论 -
(十六)深入理解蓝牙BLE之“建立连接过程和连接失败分析”
背景:写完《深入理解蓝牙Mesh》的系列文章之后,我想把蓝牙BLE这一部分再深挖一下,本系列文章主要以最基础的4.2版本的蓝牙进行介绍,5.0的扩展广播和广播集,我们最后作为补充项,5.1,5.2,这个朋友写的BLE建立连接的文章,写的太好了,很清晰,我直接引用过来了,详解BLE连接建立过程_Jason.liu17的博客-CSDN博客建连失败分析:...原创 2022-04-11 14:08:13 · 4596 阅读 · 4 评论 -
(十九)深入理解蓝牙BLE之“低功耗蓝牙dongle”
目录什么是蓝牙dongle:为什么要买dongle:为什么最好买nordic的dongle:如何选择dongle:Nordic官方Dongle:国产兼容Dongle:蓝牙SIG官方pts dongle: 其他芯片方案dongle:datasheet下载地址:可以建议理解为一个usb接口的蓝牙Controller,可以理解为一个支持蓝牙的usb接口的“网卡”。一.我们在嵌入式开发的前期,可以通过在ubuntu系统上外接一个usb接口的蓝牙dongle,用dongle来当作controller,然后在ubunt原创 2022-07-05 00:11:08 · 8249 阅读 · 0 评论 -
(八)深入理解蓝牙BLE之“安全管理Part1(GAP)”
security mode 1的内容很容易理解,蓝牙BLE的GATT的Server端的数据,需要根据数据的重要性设置不同的安全等级,有四个安全等级可以选择,分别是不需要加密,使用非认证的配对方式生成的密钥进行加密,使用认证的陪对方式生成的密钥加密,使用LESC更高安全级别的陪对方式生成的密钥进行加密,其中这四个安全等级对应着四种不同安全级别的密钥,密钥的安全级别是根据配对的方式来确定的,最高的安全级别的配对是通过LESC来进行配对的,这种方式生成的密钥安全等级最高。签名数据包的格式如图6。.........原创 2022-08-07 18:37:14 · 2472 阅读 · 0 评论 -
(三)深入理解蓝牙BLE之“信道管理”
AFH(advance frequence hopping)跳频算法仅适用于数据信道的选择(除去37,38,39信道的剩余37个信道),在两个设备建立连接的时候,在CONNECT_IND消息中(connect request)会带着hop值和Channel Map(一共37个bit,为1表示对应的channel可用,为0表示对应的channel不可用)。不一样的是跳频阶跃的值,跳频算法1的跳频阶跃值是固定的,也即是hop是一个固定的值,跳频算法2的跳频阶跃是通过算法计算出来的,也就是hop不是一个固定值。.原创 2022-08-31 22:00:10 · 3643 阅读 · 0 评论 -
(二十七)深入理解蓝牙BLE之“Nordic官网介绍”
目录1. Nordic官网及资料下载2. Nordic infocenter(文档中心) 3. Nordic Devzone(开发者论坛)4. Nordic GithubNordic官网主页:Nordic Semiconductor | Specialists in Low Power Wireless - nordicsemi.com,进入官网后,一般点击“Products”标签页,即进入Nordic产品下载首页,其独立链接为:Nordic产品下载链接:Explore our product portfo转载 2022-10-08 14:13:18 · 1025 阅读 · 0 评论 -
(十三)深入理解蓝牙BLE之“Linux系统搭建zephyr和dongle的环境”
首先将dongle插入linux主机,长按reset按键,使dongle进入loader模式。查看/dev/目录下,dongle对应的tty*,我的dongle显示的是/dev/ttyACM0,然后修改tty的访问权限,使用nrfutil下载pts dongle的固件。网上很多介绍安装nrfutil的方法是github下载nordic的nrfutil源码,然后进行安装,我折腾了半天一直报python相关的错误,对python不是很熟悉,短时间内无法解决,索性直接使用pip安装nrfutil工具,亲测可用。原创 2022-10-10 12:13:21 · 946 阅读 · 0 评论 -
(四)深入理解蓝牙BLE之“ACL Packet格式”
目录背景:包格式:AttributeProtocol层:L2CAP层包格式:HCI ACL Data Packet包格式:背景:网络上有很多介绍蓝牙HCI Command Packet和HCI Event Packet格式的内容,但是关于介绍HCI ACL Data Packet格式的文章很少,我猜测是因为ACL包格式涉及了L2CAP层和更上层数据包格式的缘故,导致ACL包比较难通过文字解释清楚。本人持着抛砖引玉的心态,通过举..原创 2021-08-20 21:31:34 · 2900 阅读 · 0 评论 -
(二)深入理解蓝牙BLE之“调制解调”
这部分内容,需要有《信号处理》和《高等数学》的基础,无奈我早已将所学一点不剩的还给了我大学的老师,转载一篇好文吧。【BLE学习笔记】之 BLE基础知识_临时工(Wireless-Tech)的博客-CSDN博客_ble调制方式......原创 2022-04-09 23:44:57 · 2260 阅读 · 0 评论 -
(六)深入理解蓝牙BLE之“空口包格式”
本来想着写点什么,不过下面的文章写的已经很好了....详解BLE空口包格式—兼BLE Link layer协议解析 - iini - 博客园BLE蓝牙笔记----广播连接过程_shenlong1356的博客-CSDN博客_ble广播连接原创 2022-04-12 00:16:57 · 1074 阅读 · 0 评论 -
(十二)深入理解蓝牙BLE之“移植Bluez 5.18源码到嵌入式平台”
在某嵌入式平台进行蓝牙开发,发现上面居然没有btmon,hciattach,hcitool等蓝牙调试工具,无奈之下,只好移植bluez协议栈到目标嵌入式平台,建议移植5.18版本(最新的5.54版本居然hcitool等工具不是默认编译的,需要修改Makefile才可以)。看到很多讲解移植过程的文章都是需要积分的,觉得写一篇免积分的文章还是有些意义的,欢迎同行来交流。移植环境:Linux ubuntu目标平台:sigmastar 星宸科技配置交叉编译工具链:export PATH=$PATH:原创 2021-07-01 18:39:18 · 2172 阅读 · 6 评论 -
(汇总)深入理解蓝牙BLE协议
背景:前一段时间,编写了《深入理解蓝牙Mesh协议》的系列文章,现在打算趁着这股劲,再把蓝牙BLE的知识点整理起来,汇总为《深入理解蓝牙BLE协议》,知识点比较琐碎,不成什么系统,还是以往的风格,对一知半解的知识点,刨根问底的深入理解。BLE的相关文章,网上有很多,其中不乏有一些特别优秀的文章,因此有一些我就直接在附上原文链接的基础上,附加一些我的详细的理解和举例。前言:本系列文章主要以最基础的4.2版本的蓝牙进行介绍,5.0的“扩展广播”,2M PHY物理层和1M的Coded PHY等,我会最原创 2022-04-09 00:16:08 · 7795 阅读 · 2 评论 -
(七)深入理解蓝牙BLE之“蓝牙GATT服务”
目录引用:学习总结:uuid的定义:GATTService:GATT Unit:GATT Declarations:GATT Descriptor:GATT Characteristic and Object Type:引用:先读一下iini大佬的文章,很赞的一篇:低功耗蓝牙ATT/GATT/Profile/Service/Characteristic规格解读 - iini - 博客园学习总结:根据我的理解,以心率计为例子,详细说明其中一些细节:.原创 2022-04-20 22:24:15 · 8838 阅读 · 2 评论 -
(二十五)深入理解蓝牙BLE之“开源协议栈”
packetcraft:https://github.com/wzd5230/stacksbluez:http://www.bluez.org/Zephyr:https://github.com/zephyrproject-rtos/zephyr/tree/master/samples/bluetoothnimble:https://github.com/RT-Thread-packages/nimblebtstack:https://github.com/bluekitchen/btsta原创 2022-04-28 21:35:47 · 1188 阅读 · 0 评论 -
(十八)深入理解蓝牙BLE之“BQB认证”
什么是蓝牙BQB认证?蓝牙认证也就是BQB认证(Bluetooth Qualification Body),简言之就是如果您的产品具有蓝牙功能并且在产品外观上要标明蓝牙标志,必须通过一个叫做BQB的认证。所有Bluetooth SIG成员公司完成认证之后均可使用蓝牙字标和徽标。蓝牙字标和徽标仅可用于通过蓝牙资格认证流程的相关产品。目前,蓝牙BQB认证测试只接受4.2(含)以上的版本。使用蓝牙品牌需要符合哪些条件?1、公司必须成为Bluetooth SIG的注册会员才能使用蓝牙品牌。2、会员公司原创 2022-05-01 15:20:34 · 4621 阅读 · 0 评论 -
(五)深入理解蓝牙BLE之“Beacon包格式详解”
蓝牙Beacon格式详解本文重点在结合Bluetooth官网spec和几个例子来使beacon帧格式更加容易被理解。广播帧格式:首先beacon是蓝牙BLE广播包的一种,蓝牙广播帧格式如下:PS:其实BLE数据帧除了报头字段和数据字段定义与广播帧不同之外,前导/接入地址/长度/校验格式均相同。广播帧数据字段格式:数据字段最长为37个字节:6个字节的广播设备地址 + 31个字节广播数据。广播数据的格式如下:AD Structure1 +AD Structure2 + .....原创 2021-01-01 01:19:20 · 9659 阅读 · 3 评论 -
(十七)深入理解蓝牙BLE之“多主多从”
链路层状态机:就绪态:初始状态,是链路层状态机的中心状态,尽管是非活动状态,但最为重要。广播态:对外发送广播报文,因此一定要有发射机。同时也可以支持发送扫描响应,需要有接收机。广播态结束后,会停止扫描,进入就绪态;或者收到了连接请求,广播态的设备则进入连接态。广播态也是可以需要扫描能力的,为了接收到“扫描请求”。扫描态:处于该状态的设备能够接收广播信道的报文,有主动扫描和被动扫描的两个子状态,主动扫描支持发送“扫描请求”给广播态设备,并获取附加的扫描响应数据,被动扫描则仅接收广播报文原创 2022-05-08 18:59:37 · 5333 阅读 · 0 评论 -
(二十)深入理解蓝牙BLE之“官方Spec文档中涉及的缩写词”
蓝牙官方Corespec的文档中包含了很多表格,多数情况下表格中的信息是由专有的缩写词来表示的,这样使文档更加的简洁美观,不过也增加了初学者的理解难度,下面我以一个典型的含有缩写词的表格为例,解释每一个缩写字母的含义。图1。.........原创 2022-07-28 17:29:56 · 647 阅读 · 2 评论 -
(二十六)深入理解蓝牙BLE之“无线通信的调制解调”
FSK,英文为Frequency Shift Keying,即一种允许根据数字调制信号改变载波频率而进行数据传输的数字调制技术,比如在BFSK中,二进制1和二进制0期间传输不同频率的载波信号。二进制 FSK (BFSK) 可以用以下数学方程式表示:s(t) = A* cos(2*π*f1*t) 对于二进制1s(t) = A* cos(2*π*f2*t)对于二进制 0。原创 2022-12-24 15:59:50 · 2571 阅读 · 0 评论 -
(十四)深入理解蓝牙BLE之“连接参数更新”
蓝牙BLE之更新连接参数。原创 2022-12-22 17:53:19 · 578 阅读 · 0 评论 -
(十五)深入理解蓝牙BLE之“扩展广播”
目录前言:4.2版本广播:5.0版本广播:实现原理:格式定义:广播事件类型:扩展广播:周期广播:广播集:HCI接口定义:4.2版本:5.0版本:周期广播:疑问与解答:BLE 5.0的扩展广播特性,网上的资料很少,我觉得写一点关于扩展广播的内容是有意义的。蓝牙BLE的4.2版本及其之前版本,有一个很大的限制,就是广播数据的payload太小了,只有31个字节。原因是广播物理信道(37,38,39)只有三个,并且大家都在使用,因此无法像数据信道那样,修改信道上传输的数据包的大小来解决问题(数据信道有一个好处,就原创 2022-12-02 23:49:38 · 2231 阅读 · 0 评论