1
背景介绍
蓝牙低功耗音频(Bluetooth LE Audio,以下简称:LE Audio)代表着下一代智能音频设备的功能趋势,LE Audio技术基于蓝牙核心规范5.2版本引入的连接同步数据流(Connected Isochronous Stream,简称CIS)传输特性。CIS基于设备间建立的低功耗蓝牙ACL连接,在相连设备间建立固定时间间隔(ISO Interval)、点对点的双向数据流传输通道。由Central(手机、电脑或平板等)发起的CIS是CIG (Connected Isochronous Group)的成员,每个CIS对应一个独立的音频流,每个Central设备可以有多个CIG。
耳麦(headset)是耳机(headphone)与麦克风(microphone)的整合体。实际上就是耳机跟麦克风整合成为一体,通常Headset的耳机是播放立体声音频,麦克风采集单声道音频。本文主要介绍基于LE Audio的Headset应用流程分析。
Headset场景图
2
Ellisys抓包流程分析
Headset的音频源设备通过CIG的CIS来传播音频数据,Headset端发送可连接的扩展广播(EA),Central端扫描到Headset端设备信息后先跟其建立ACL连接,两端交互LE Audio的音频能力以及配置ASE端点,然后再由Central发起建立CIS连接。
扩展广播:
ADV_EXT_IND PDU——扩展广播PDU
AUX_ADV_IND PDU——辅助广播PDU
AUX_CHAIN_IND PDU——辅助链广播PDU(可选)
ADV_EXT_IND PDU在37,38,39主频段进行广播,它的扩展头字段包含一个AuxPtr字段,其中包含使其能够与辅助AUX_ADV_IND PDU同步的数据。ADV_EXT_IND PDU的AuxPtr字段指向AUX_ADV_IND,即AuxPtr的值指向ADV_EXT_IND PDU广播所在的其余0~36个频段中的一个。
AUX_ADV_IND PDU包含一个Adv Data字段,其中包含Appearance、RSI(Resolvable Set Identifier)、ASCS(Audio Stream Control Service)、CAS(Common Audio Service)和TAMS(Telephony and Media Audio Service)。Appearance声明Headset设备外观,RSI声明支持CSIS(Coordinated Set Identification Service),TMAS声明设备支持Call Terminal和Unicast Media Receiver。
ASE状态机简介
ASCS中定义了Audio Stream Endpoint(简称 ASE) ,ASE又分为Source ASE和Sink ASE,其状态机流转分别如下图所示,包含以下几个状态:
Idle——待机态,初始化默认处于Idle状态。
Codec Configured——音频参数,如采样率、位宽、帧长等配置完成。
QoS Configured——连接参数,如PHY、Retransmit Num、Max Transport Latency等配置完成。
Enabling——使能态,client和server之间的CIS开始建立或者已经建立完成。
Streaming——流状态,音频流建立完成,音频数据可以在client和server之间传递。
Releasing——释放态,音频资源释放,该状态是一个中间态,可通过除Idle态外的任何一个状态进入。
Disabling——失效态,音频流停止,该状态只是一个中间态,可通过Receive stop ready操作退回到QoS Configured状态。需要注意:该状态只有Source ASE才拥有。
Source ASE状态机流转图
Sink ASE状态机流转图
接下来通过抓包来更加直观的观察上述的的音频流过程:
首先挑选一个ADV_EXT_IND PDU包,通过AuxPtr可以同步到它指向的AUX_ADV_IND PDU所在的频段11和偏移位置1.02ms。
然后通过AUX_CONNECT_REQ和AUX_CONNECT_RSP进行ACL连接,完成加密和服务发现等流程,包括下面要介绍的ASE交互流程。
Central端发现Headset端Sink和Source支持的音频能力,包括采样率、采样周期、编码方式等参数。Sink音频能力是Headset的音频播放(扬声器),Source音频能力是Headset的音频采集(麦克风),下图Source支持的详细音频参数,Sink端与其类似。
这部分通过抓包详细解析CIS配置流程:
下图为CIS配置抓包的完整流程,1是Codec Config流程,2是QoS Config流程,3是建立CIS连接通道,4是Enabling流程,5是Streaming流程。下面详细分析每个流程的具体内容。
1、Central端对Headset端上下行的Codec进行配置,包括上行MIC采样率16kHz、下行双声道音频采样率48kHz,帧长10ms、位宽16bits等参数,Headset端会回复是否配置成功。
2、Central端对Headset端上下行的QoS进行配置,包括2M的PHY、Retransmision Number为13,Max Transport Latency为40ms等参数,Headset端会回复是否配置成功。
3、Central端发起CIS Request进行CIS的建立流程,包括ISO Interval为10ms,Sub Interval为1.410ms和开始建立CIS的锚点等参数。
4、Central端发起Enable控制命令,Headset端回复Enabling成功,回复Sink ASE和Sourc ASE端Enabling的ASE ID、CIS ID等参数。
5、Central端发起Enable控制命令,Headset端回复Streaming成功,回复Sink ASE和Sourc ASE端Streaming的ASE ID、CIS ID等参数。
3
结合代码分析CIS音频流建立过程
下面我们结合Telink的b91_ble_audio_sdk中的LE Audio的应用代码来解析一个CIS音频流建立过程:
CIS Audio服务配置,以及ASE Sink和ASE Source的音频能力参数配置表
设置扩展广播,参数设置可以对应上面抓包
注册profile事件回调函数表,下图仅列出对应ASE Sink和ASE Source配置流程的一些回调函数
设置codec的默认参数
扩展广播配置完成后会在ble协议栈运行起来后开始广播。Central设备在扫描到广播后进行ACL连接,并在完成ASE流程后发起CIS流程建立。
数据的接收和发送处理
将代码烧录到Telink B91 EVK,支持CIS的手机打开蓝牙即可搜索到"tlk_le_headset"设备,点击连接即可与手机进行数据通信,或者采用配套的dongle进行通信测试。
4
展望
蓝牙5.2 LE Audio技术将极大扩展无线音频的应用场景。蓝牙5.2带来的无线多重串流音频技术,将从根本上改变人们对无线音频技术的使用习惯,为用户带来全新的体验,也为用户和市场带来无限可能。如果需要Ellisy抓包日志欢迎联系我们。
关 于 泰 凌
泰凌微电子致力于为客户提供一站式的低功耗高性能无线连接SoC芯片解决方案,包括经典蓝牙,蓝牙低功耗,蓝牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有协议等低功耗2.4GHz多协议无线连接系统级芯片和丰富的固件协议栈。公司产品广泛应用于智能照明,智能家居/楼宇,智能遥控,无线外设,智能零售,穿戴设备,无线音频,智能玩具,物流追踪,智慧城市等各类消费和商业应用场景中。
官网:www.telink-semi.com
微信公众号:telink-semi
泰凌开发者论坛:
https://developers.telink-semi.cn/
销售接洽:
中国大陆(华东、华北) :
+86-21-20281118-8213
中国大陆(华南、香港、音频) :
+86-0755-26614003
telinksales@telink-semi.com
原文标题:【技术专栏】泰凌微电子蓝牙低功耗音频应用流程分析 —— Headset
文章出处:【微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !