鸣涧 发表于 2023-11-8 11:23:23

泰凌微电子蓝牙低功耗音频应用流程分析 —— Headset

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场景图
2Ellisys抓包流程分析
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抓包日志欢迎联系我们。
页: [1]
查看完整版本: 泰凌微电子蓝牙低功耗音频应用流程分析 —— Headset