谷动谷力

 找回密码
 立即注册
查看: 1706|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
发表于 2023-11-8 11:23:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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抓包日志欢迎联系我们。

+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-27 22:22 , Processed in 0.088133 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表