QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机

为了方便大家学习,现与我爱蓝牙网联合推出【QCC300x/CSR867x/QCC30xx/QCC51xx开发板】。

技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
——————————正文分割线———————————–

1. 引言

市面上用CSR8670方案开发的蓝牙对讲耳机有很多,优点是可以同时支持A2DP音乐播放、HFP免提通话、AGHFP CVC对讲,缺点是方案成本太高(在5刀以上),中低端产品无法接受。

QCC300x系列方案是CSR8670的cost down版本,方案成本在2刀左右。QCC300x保留了与CSR8670相同的硬软件架构,经过一段时间的学习和摸索,实现了基于QCC3003平台的AGHFP CVC蓝牙对讲耳机。

2. 主要功能

  • 蓝牙音乐播放 A2DP sink
  • 蓝牙免提通话 HFP sink
  • 蓝牙对讲主从一键切换 AGHFP/HFP

系统框图如下:
QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机_第1张图片

3. 项目难点

在QCC300x对应的ADK中,没有给出source模式和可修改的DSP程序。QCC300x和CSR8670的硬软件架构基本相同,理论上可以将CSR8670的ADK 4.x的source模式移植到QCC300x的1.0.6 ADK。

实践的结论是,QCC300x可以支持source模式下的AGHFP功能,不支持A2DP发射功能,原因是A2DP发射所需的DSP程序没有打包到QCC300x的ADK中。

移植过程要注意几个要点:

  • 只移植所需的文件,否则会浪费Flash空间;
  • source和sink的USER_KEY是有冲突的,需要为source的USER_KEY重新指定key的存储空间;
  • 选择合适的source的ADK版本,因为从ADK 4.2开始USER_KEY的存储方式从绝对寻址改成了相对寻址,增大了移植的工作量,所以我选择了ADK 4.1的source例程。

在移植成功后,需要解决另一个问题,AGHFP并不支持CVC。因此我们需要将AGHFP模式的audio plugin指向sink的CVC plugin,并确保ADK configure tool选择的CVC plugin类型与芯片支持的类型相符,否则程序会死机。300x系列产品每一个型号对应一种特性的CVC plugin:
QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机_第2张图片

最后一步是将按键动作映射到事件:

  • 进入对讲主模式:触发source的状态机由disconnected转移到inquiry,其会搜索一定范围内的sink设备,与其建立HFP连接后,等待sink设备呼叫,自动接听后进入aghfp audio connect状态
  • 进入对讲从模式:触发source的状态机转移到disconnected模式,sink进入conndisc状态,等待source搜索到并发起HFP连接,连接成功后,从机自动呼叫主机,待其接听后,进入voice call状态

主从设备建立HFP连接后,双方均启动CVC plugin,通过SCO管道传输双向语音数据。可在UFE中查看当前的CVC工程以调整参数。

4. 总结和展望

300x系列芯片不支持多人全双工对讲,原因是无法修改DSP程序,多人的语音无法混音。

300x系列是双模芯片,可以连接ble外设作为通话开关遥控器,后续可以在此项目基础上继续拓展。

你可能感兴趣的:(CSR8670蓝牙芯片软件开发,蓝牙方案)