1. 引言苹果airpods在蓝牙耳机市场横扫千军,安卓阵营急需一员大将正面迎敌,高通的qcc302x/512x方案横空出世,成为下一代蓝牙SOC霸主的有力竞争者。 ![]() qcc30xx/51xx在硬软件架构上较上一代CSR867x有了明显的提升,主要体现在如下几点:
软件上增加earbuds例程,可以快速开发出充电盒+耳机的产品形态。 2. earbuds与sink主要区别在开发之前,先对earbuds和sink例程的区别有一个宏观的了解: 3. 跑通例程看得出earbuds例程的开发工具链与sink例程相差很大,配置方式也不够完善,给我们开发带来了一定的挑战。 在安装完工具链,并根据指导手册创建了第一个qcc3020的earbuds工程后,开始了常规的踩坑填坑过程。好在有QQ群里的朋友的帮助,快速完成了earbuds例程的测试,相关源码和固件都会上传到共享组,有需要的朋友可以下载测试。 3.1. 关闭电池温度检测earbuds例程第一次deploy到硬件平台后,TRB调试器突然找不到设备。原因是硬件平台用USB供电,而非电池供电,也没有接热敏电阻。 修改方法是,将earbuds工程属性的DEFS选项中的HAVE_THERMISTOR和INCLUDE_TEMPERATURE这两个宏disable掉,再重新编译。之后TRB工具的link灯会点亮,可以进入调试模式查看运行log。 3.2. 区分左右耳earbuds例程用蓝牙地址区分左右耳,需要修改dev_cfg_filesystem工程下的subsys1_config2.htf,然后rebuild此工程,再re-deploy earbud工程。 我的左耳地址是0x00ff01 0x5b 0x0002,右耳是0x00ff02 0x5b 0x0002。对于TWS来说,左耳是主,右耳是从。 修改完蓝牙地址后,将两个硬件平台同时复位,可以从log窗口中看到两个设备会自行建立TWS连接。 3.3. 理解物理状态机earbuds例程的状态机的示意图如下: ![]() 当左右耳完成TWS配对后,其仍处在IN_CASE状态,即在盒中。此时我们需要通过pydbg调试工具发送状态转移命令,将左右耳都切换到OUT_OF_EAR状态,在这种状态下,左右耳的按键可以工作了,且手机能够搜索到左耳的蓝牙名称;连接手机后,再用pydbg调试工具切换到IN_EAR状态,即进入正常听音状态。 通过pydbg调试工具发送命令的方式有一个局限,即在我们只有一个TRB调试器时,需要反复插拔TRB工具,使用较繁琐。在真实的产品中,状态切换是由传感器(入耳检测和重力加速度)触发的,这里建议可以自定义一个按键来触发,方法很简单。 首先在1_button.buttonxml文件中加入PIO20作为用户自定义按键,并定义按键触发事件:
然后rebuild,MDE会自动将xml转成代码。此时我们打开av_headset_ui.c,在appUiHandleMessage函数中将按键事件关联到状态机:
这样在我们按下此键后,状态机会发生转变,方便测试验证。 3.5. 使能外接功放由于我们的平台使用了外接功放,需要将PIO3映射到功放的使能脚才能听到音乐。修改av_headset_config.h文件,使能外放控制脚:
4. 总结有以下几点直观的感觉:
总体的感觉,earbuds不是很成熟,还需要时间打磨,期待下一个ADK大版本能有惊喜给到开发者们。 来源:https://blog.csdn.net/wzz4420381/article/details/99736922 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
GMT+8, 2025-4-30 22:12 , Processed in 0.414852 second(s), 32 queries , Gzip On, MemCached On.
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.