QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机
Posted NiceBT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
系统框图如下:
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:
最后一步是将按键动作映射到事件:
- 进入对讲主模式:触发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外设作为通话开关遥控器,后续可以在此项目基础上继续拓展。
以上是关于QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机的主要内容,如果未能解决你的问题,请参考以下文章