蓝牙
tws蓝牙
BLE蓝牙
dahailinan
这个作者很懒,什么都没留下…
展开
-
深入浅出低功耗蓝牙(BLE)协议栈
https://blog.csdn.net/iini01/article/details/80140033BLE协议栈为什么要分层?怎么理解BLE“连接”?如果BLE协议只有ATT层没有GATT层会发生什么?协议栈框架一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。在深入BLE协议栈各个组成部分之前,我们先看一下BLE协议栈整体架构。如上图所述,要实现一个BLE应用,首.转载 2020-11-06 16:48:09 · 884 阅读 · 1 评论 -
基于A2DP框架的近距离无线音频通信研究
基于A2DP框架的近距离无线音频通信研究随着蓝牙技术在电子产品中的日益普及,蓝牙音频设备也层出不穷,其中具有免提功能的蓝牙耳机和蓝牙音频网关的应用是最典型的例子。但免提单元与音频网关进行音频传输建立起来的SCO连接,仅能支持64Kb/s电信级语音质量的音频流,这也就限制了蓝牙音频质量的提高,同时也影响了蓝牙的娱乐消费市场。为了满足人们对高质量音频的需求,进一步扩大蓝牙产品市场,蓝牙特殊兴趣小组SIG组织,在蓝牙 1.1规范的应用框架基础上又单独提出了高级音频分发框架(Advanced Audio Di.转载 2020-10-30 15:56:06 · 477 阅读 · 0 评论 -
15 BLE协议GAP层
学习资料:官方手册Vol 3: Core System Package [Host volume] Part C: Generic Access Profile下面这个图是BLE协议各层跟医院的各个科室的类比图:每个医院的大堂都有些约定:① 大堂里有医院的介绍,你可以根据它确定这个医院是否适合你;② 有急救通道③ 要挂号,挂号后你跟医院才建立了联系,才能去找医生看病。重点在于:怎么确定医院(是否适合你)、怎么建立联系。在BLE里,也有一些约定用...转载 2020-10-28 16:57:07 · 944 阅读 · 0 评论 -
14 _BLE协议GATT层
学习资料:官方手册Vol 3: Core System Package [Host volume] Part G: Generic Attribute Profile (GATT)这篇文章格式比较好,基本上就是对GATT官方文档的翻译:Bluetooth GATT介绍https://www.cnblogs.com/hzl6255/p/4158363.html下面这个图是BLE协议各层跟医院的各个科室的类比图:跟医院类比,GATT层就是医务室,通过它可以得到各种服务...转载 2020-10-28 16:56:13 · 562 阅读 · 0 评论 -
13 BLE协议ATT层
下面这个图是BLE协议各层跟医院的各个科室的类比图:跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性。这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由上层来负责。通过ATT层可以读写对端设备的属性,但是属性之间有什么联系、各个属性怎么组合起来提供服务,由上层GATT负责。读写对端设备的属性,就是ATT的关键词。一、属性(Attribute)属性结构如下:属性就是一个值,有那么多属性,这是哪一个属性?用Handle来表示;.转载 2020-10-28 16:55:22 · 670 阅读 · 0 评论 -
12-BLE协议L2CAP层
学习资料:官方手册Vol 3: Core System Package [Host volume]Part A: Logical Link Control and Adaptation Protocol Specification建议先复习《BLE协议各层的形象化理解》,下面是我们之前用来类比的医院结构图:下面这个图是BLE协议各层跟医院的各个科室的类比图:Controller就是快递公司,它知道把数据发给对方哪一个设备,但是它不能进入对方内部。L2CAP是“收发室”,它熟知转载 2020-10-28 16:54:24 · 835 阅读 · 0 评论 -
11-BLE协议HCI层的数据格式
学习资料:1. 蓝牙协议core_v5.0.pdf 《Vol 2: Core System Package [BR/EDR Controller volume]》的“Part E: Host Controller Interface Functional Specification”2. BTStack源码对于被动扫描,周边的外设会给controller发送各种广播包,解析广播包,从而得到设备的信息。对于主动扫描,除了被动的获得广播包外,controller还可以给某个设备发出扫描请求,转载 2020-10-28 16:53:44 · 1403 阅读 · 0 评论 -
10-BLE协议HCI层的硬件接口
本篇博客由韦东山视频整理所得如何控制链路层让其发出广播包、数据包?通过HCI层向它发出命令,也可以通过ATT层、L2CAP层向LL层发出数据。学习资料:蓝牙协议core_v5.0.pdf 《Vol 4: Host Controller Interface [Transport Layer]》BTStack源码回顾一下《开源蓝牙协议栈BTStack框架代码阅读》。BLE协议在硬件上分为上下两部件:主机(Host,PC、单片机、Linux板)、控制器(蓝牙模块),如下图所示:H转载 2020-10-28 16:52:33 · 1006 阅读 · 0 评论 -
09-BLE协议链路层(LL)
本篇博客的学些要结合书籍《低功耗蓝牙开发权威指南,Robin Heydon著》第7章,实际上这书只是对蓝牙原版协议的简化、摘要。回顾以前学过的《BLE协议各层的形象化理解》和《BLE协议各层数据格式概述》一链路层的5种状态:就绪态(Stanby)、扫描态(Scanning)、广播态(Advertsing)、发起态(Initiating)、连接态(Connection)。扫描态有2种子状态:被动扫描(Passive Scanning)、主动扫描(Active Scanning)...转载 2020-10-28 16:51:31 · 905 阅读 · 0 评论 -
第08节-使用BTStack编写蓝牙程序
Bluetooth LE Exploer(微软提供的)可以读取BLE蓝牙设备,可以读写它的值。本篇博客将使用BTStack写出一个精简版的Bluetooth LE Exploer。涉及文件:btstack-master\example\le_data_channel_client.cbtstack-master\example\Makefile.inc注意:在PC上使用软件Bluetooth LE Exploer来操作蓝牙模块时,使用系统自带的驱动; 使用btstack来操作蓝...转载 2020-10-28 16:49:55 · 747 阅读 · 0 评论 -
07-开源蓝牙协议栈BTStack数据处理
本篇博客根据韦东山的视频整理所得。在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后调用hci_power_on函数去打开蓝牙模块。一. 数据类型运行BTStack程序时,会生成hci_dump.pklg文件,可以使用WireShark打开此文件,截图如下:转载 2020-10-28 16:48:36 · 898 阅读 · 1 评论 -
06-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得)。可以从5个方面来理解BTStack的框架:1.硬件操作:hci_transport_tBTStack支持多种接口的蓝牙模块,比如USB口、3线串口、5线串口。对于这些接口,会抽象出对应的hci_transport_t结构体。该结构体成员如下:里面有init、open、send_packet等重要成员。对于3线串口、5线串口,它们在init、open设备...转载 2020-10-28 16:47:02 · 811 阅读 · 1 评论 -
一个连接蓝牙耳机听歌过程中的耗电问题分析
最近在项目中遇到了一个连接蓝牙耳机听歌,手机功耗太大的问题,手机的电流大于参考标椎40ma左右。log分析, 出问题的时间点,avrcp一直在更新歌曲的进度,但是是负值,这个值表示的是下一个播放位置减去当前的播放位置,所以这个值不可能是负的。06-17 21:12:30.839735 21887 21997 D Avrcp_ext: sendPlayPosNotificationRsp: (false) 738445 <=? 792497 <=? 740445 mLastReported转载 2020-10-27 16:27:04 · 3470 阅读 · 0 评论 -
经典蓝牙A2DP介绍解析
原创 2020-10-27 15:54:35 · 2762 阅读 · 0 评论 -
05-开源蓝牙协议BTStack框架代码阅读(上)
首先来看一下,对于硬件操作,它是如何来进行处理的。在上篇文章中曾说过,在main函数里面它会调用硬件相关的代码,调用操作系统相关的代码。在BTStack中,可以搜索一下main.c,将会发现有很多main.c,都是为于port目录下面。 1 Main.c (port\esp32\components\btstack) 2 Main.c (port\ez430-rf2560\src) 3 Main.c (port\libusb) 4 Main.c (port\libusb-转载 2020-10-27 14:37:08 · 1760 阅读 · 0 评论 -
04 开源蓝牙协议BTStack框架分析
本篇博客根据韦东山的视频,整理所得。本篇博客讲解BTStack的框架,首先来看一下硬件的结构:蓝牙模块接在电脑上,或是接在开发板上。不论接在哪,我们都需要编写程序来控制这个蓝牙模块。1.我们需要发送数据给蓝牙模块 需要发送命令给蓝牙模块,比如让它发出无线信号去扫描、识别、连接、读写附近的蓝牙设备2. 需要从蓝牙模块获得数据3. 需要处理获得的数据上述3步骤可以简化为一个循环:1.读取数据:可以读取用户输入的指示,也可以读取蓝牙模块的数据2.处...转载 2020-10-27 11:58:16 · 1004 阅读 · 0 评论 -
03 BLE协议各层数据格式概述
本篇博客根据韦大仙的视频,整理所得。对于BLE系统,它分为上下两块。上面那一块,我们称为host主机。下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片。对于host这一块,它运行于linux android 单片机 ,它是纯软件的概念。它和蓝牙芯片之间通过usb口或串口来传输数据。那么对于host和controller中的各个层,它们是如何表示数据的呢?本篇博客就来讨论这个问题。例子1:打包:甲公司A1想给乙公司A2'发送一封信,于是甲公司A1就...转载 2020-10-27 11:28:41 · 950 阅读 · 0 评论 -
02BLE协议各层的形象化理解
本篇博客根据韦大仙视频,整理所得。先上框图:ATT层从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义。类比的在BLE协议栈里面,ATT定义了各种属性、属性的操作方法,但是这些属性有什么作用,能给用户提供什么服务,它并不知道。举例如下:假设有两个蓝牙设备,一个是手机,一个是手环,此手环戴在手上可以监测心跳。在ATT这一层,手环提供数据,它是一个服务器。另一边的手机从手环获取数据,它是一个client.在手环服..转载 2020-10-27 11:08:13 · 525 阅读 · 1 评论 -
01生活中的实例_医院的结构类比BLE协议
本篇博客学习韦东山的视频,整理所得。参考文章:蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍http://www.wowotech.net/bluetooth/ble_stack_overview.html在网上搜索蓝牙协议栈或者阅读官方文档的话,总能得到下面这样的框图:在上述图中,它将蓝牙协议栈分为好几层,比如说物理层、链路层等等。虽然知道它是哪一层,但是无法形象的理解它。为了可以形象的理解蓝牙协议栈,韦大仙特意写了下面的段子,闲暇时刻可以读读来体会一下各层的作用。..转载 2020-10-27 11:07:19 · 482 阅读 · 0 评论 -
BES2300x笔记-- ANC调试笔记整理
一、前言最近赶项目,一直是996的状态,感觉时间都不够用了,连偷懒的时间都没有~~1024还在加班,今天就把ANC安排上吧,这第三篇我们就来说说ANC调试的流程和相关文档。二、调试笔记1. 软件部分1)根据硬件原理图,配置mic的通道和偏置电压VMIC(多个电压可以位或);2)BES工程默认的spk采用L,改到R的方法是:a. 保持通道配置为L不变;b. 添加宏CODEC_OUTPUT_DEV,芯片最终会将信号推到spk右R,不加宏时信号推到spk左L。通道:tgt_har转载 2020-10-26 10:30:10 · 4015 阅读 · 3 评论 -
BES2300x笔记----TWS组对与蓝牙配对
一、前言看到有“道友”在评论区留言:对TWS组对、BT配对以及回连流程部分很迷糊,那这第二篇我们就来说说BES平台的相关流程和接口。(PS:蓝牙基础部分就不再赘述了,网上有很多资料可以参考)二、Peer or Pair1、组对(Peer)根据以往高通平台上的经验,左右耳互为对方的peer device,因为相对手机而言,左右耳的level是一样的,这一点在relay模式下还不太确切,但是监听模式下就非常形象了;(苹果的snoop、高通的mirror、恒玄的ibrt、络达的MCsync,其实转载 2020-09-02 10:58:38 · 7105 阅读 · 4 评论 -
蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)
蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)一、主机控制接口协议 HCI蓝牙主机-主机控模型蓝牙软件协议栈堆的数据传输过程:1、蓝牙控制器接口数据分组:指令分组、事件分组、数据分组(1)、指令分组如:Accpet Connecti.转载 2020-10-23 15:53:27 · 1069 阅读 · 0 评论 -
蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以.转载 2020-10-23 15:52:09 · 1630 阅读 · 0 评论