QCC3040学习笔记:部署mirror tws earbuds例程

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

⭐⭐⭐⭐⭐【本例程对应源码和固件已加入会员群资料库】⭐⭐⭐⭐⭐
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
技术交流QQ群号:743434463

——————————正文分割线———————————–

1. 引言

今年Q1刚发布的QCC3040是高通的QCC514x/QCC304x系列中的主力型号,其主打的mirror tws功能较上一代relay tws相比有如下优点:

  • 手机上只会显示一个耳机设备,而不是两个耳机设备
  • 耳机在切换主从时更自然流畅,主从耳机耗电更均衡
    QCC3040学习笔记:部署mirror tws earbuds例程_第1张图片

虽然上述优点早已在苹果的airpods上体现,但高通只花了1年多的时间就开发出了完整的解决方案,并解决了专利问题,实在是令人佩服。相信高通的mirrow tws方案可以炸开苹果的tws耳机技术壁垒,使非苹果系的耳机方案向前迈进一大步。

本周刚拿到我爱蓝牙网的QCC3040开发板,我已迫不及待地开始部署官方的earbuds例程。参考官方文档《ADK 20.1 Overview》部署的过程中,遇到了很多问题,好在有技术交流群和我爱蓝牙网论坛的帮助,使我快速排除了各种问题,顺利跑通了例程并适配到开发板。

为了让大家少走一些不必要的弯路,我将部署流程、调试流程、故障解决方案分享出来,大家可以尝试着做一遍,尽早体验到mirror tws的独特魅力。

2. 软件环境

  1. PC: win10
  2. MDE: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \3. 开 发 环 境\qualcomm_mde.win.2.4_installer_2.4.0.158.zip)
  3. ADK Tool: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \4. 官 方ADK\ADK20.1\adk_toolkit.win.1.0_installer_1.0.1.19.zip)
  4. Project: (C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \4. 官 方ADK\ADK20.1\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud.rar)

3. 硬件环境

  1. Debugger Adapter: TRBI200 或 USB
  2. Platform: 我爱蓝牙网 QCC30XX/51XX 开发板 * 2 + QCC3040模块 * 2
  3. Chip: QCC3040

4. 准备步骤

  1. 开发板连接好 TRB 和 USB 供电线,选择 USB 供电
  2. 安装好 TRB 或 USB 驱动
    a) 参考 C:\weiyun\思度科技\QCC30xx_QCC51xx 开发板资料\10.开发板教程\3.USB 驱动安装
    b) 参 考 C:\weiyun\ 思 度 科 技 \QCC30xx_QCC51xx 开 发 板 资 料 \6.debug 工 具\usbtrb\80-cc094-1_ab_transaction_bridge_and_usb_debug_interface_user_guide.pdf)
  3. SYS_CTRL 开关拨到导通位置(SYS_CTRL 灯亮)
  4. Project 解压后路径为 C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud
    QCC3040学习笔记:部署mirror tws earbuds例程_第2张图片

5. 部署流程

5.1. 打开官方例程

  1. 打开 mde2.4,选择 open project
    在这里插入图片描述
  2. 选择 earbud.x2w
    QCC3040学习笔记:部署mirror tws earbuds例程_第3张图片
  3. 选择 ADK tool 1.0.1.19 x64
    QCC3040学习笔记:部署mirror tws earbuds例程_第4张图片

5.2. 修改工程以适配开发板

  1. 修改工程属性,屏蔽电池温度检测
    QCC3040学习笔记:部署mirror tws earbuds例程_第5张图片
    QCC3040学习笔记:部署mirror tws earbuds例程_第6张图片
  2. 修改 ui_prompts.c,使能开机提示音
    QCC3040学习笔记:部署mirror tws earbuds例程_第7张图片
    QCC3040学习笔记:部署mirror tws earbuds例程_第8张图片
    QCC3040学习笔记:部署mirror tws earbuds例程_第9张图片
  3. 修改 kymera_config.h,使能外部 PA 控制脚 PIO3,开机可听到 power on 提示音
    在这里插入图片描述

5.3. 编译 earbud 工程

第一次编译需要较长时间,请耐心等待
QCC3040学习笔记:部署mirror tws earbuds例程_第10张图片

5.4. 烧录固件到 primary 耳机

  1. 选择调试器
    QCC3040学习笔记:部署mirror tws earbuds例程_第11张图片
  2. Deploy 固件,等待完成
    QCC3040学习笔记:部署mirror tws earbuds例程_第12张图片

5.5. 生成 secondary 耳机的固件

  1. 修改蓝牙地址以区分 primary 和 secondary 设备
    在这里插入图片描述
    在这里插入图片描述
  2. build dev_cfg 工程
    QCC3040学习笔记:部署mirror tws earbuds例程_第13张图片
  3. build earbud 工程,等待完成

5.6. 烧录固件到 secondary 耳机

同步骤 5.4。

5.7. 测试固件

耳机插入 AUX OUT 接口,按开发板复位键,可听到 power on 提示音。

6. 调试流程

6.1. 修复 live_log故障

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xbb in position 0: ordinal not in range(128)

  1. 修 改 C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud\adk\tools\packages\tabs\pydbg_tab.py
# Python 2 and 3
from __future__ import print_function
import os
import sys
from xml.etree import ElementTree
import argparse
import glob
from workspace_parse.workspace import Workspace

# 插入下述代码
import sys
reload(sys)
sys.setdefaultencoding('gbk')
  1. 修改 C:\qtil\ADK_Toolkit_1.0.1.8_x64\apps\fw\tools\pydbg.py
import os
import sys
import sys
reload(sys)
sys.setdefaultencoding('gbk')

6.2. 修复 acat 故障

python: can’t open file ‘C:/qtil/qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud/adk/bin/qcc514x_qcc304x/audio/tools/acat/ACAT.py’:
[Errno 2] No such file or directory ), 修 改 C:\qtil\qcc514x-qcc304x-src-1-
0_qtil_standard_oem_earbud\adk\tools\extensions\acat_tab\ext.xml,修改完成后,关闭 qmde 再打开。
QCC3040学习笔记:部署mirror tws earbuds例程_第14张图片

6.3. 打开 win10 cmd 的 ANSI 配色功能

ANSI 转义字符显示为乱码[1m [35m] ,从 cmd.exe 输入(也可以在 PowerShell 中使用):reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
QCC3040学习笔记:部署mirror tws earbuds例程_第15张图片

6.4. 创建 pydbg 调试接口

  1. 在工程路径下创建 pydbg 脚本,用于打开 log 窗口和输入 apptest 命令窗口
    QCC3040学习笔记:部署mirror tws earbuds例程_第16张图片
    这里假设 primary 耳机用 USB,secondary 耳机用 TRB,可自行修改
:: Change variables for your system
set ELFDIR=C:\qtil\qcc514x-qcc304x-src-1-0_qtil_standard_oem_earbud\earbud\workspace\QCC3040-
AA_DEV-BRD-R2-AA\depend_debug_qcc514x_qcc304x
set TOOLS=C:\qtil\ADK_Toolkit_1.0.1.8_x64\apps\fw\tools
set PYTHONDIR=C:\qtil\ADK_Toolkit_1.0.1.8_x64\tools\python27
set DEVICE1=102
set DEVICE2=180210
start cmd.exe "/k %PYTHONDIR%\python %TOOLS%\pydbg.py -d usb:%DEVICE1%,trb:scar:%DEVICE2% -f
apps1:%ELFDIR%\earbud.elf"
start cmd.exe "/k %PYTHONDIR%\python %TOOLS%\pydbg.py -d usb:%DEVICE1%,trb:scar:%DEVICE2% -f
apps1:%ELFDIR%\earbud.elf"
  1. 运行脚本,打开两个 cmd 窗口
    QCC3040学习笔记:部署mirror tws earbuds例程_第17张图片
  2. Cmd 窗口 1,输入 system.apps1.live_log()后回车,可看到左右耳机的 log,A 是primary 耳机,B 是 secondary 耳机
    QCC3040学习笔记:部署mirror tws earbuds例程_第18张图片
  3. Cmd 窗口 2,输入 pydbg 命令,使左右耳机完成配对,并开启与手机的配对模式
    QCC3040学习笔记:部署mirror tws earbuds例程_第19张图片
    i. 【左耳离开耳机盒】apps1A.fw.call.appTestPhyStateOutOfCaseEvent(),primary耳机开始搜索 secondary 耳机
    ii. 【 右 耳 离 开 耳 机 盒 】 apps1B.fw.call.appTestPhyStateOutOfCaseEvent() ,secondary 耳机进入 tws 配对状态,primary 耳机搜索到后,建立 tws 配对
    iii. 【测试左耳 tws role 是否为主】apps1A.fw.call.appTestIsPrimary(),返回 true 说明 A 是 primary 角色
    iv. 【耳机进入手机可配对模式】apps1B.fw.call.appTestPairHandset(),听到提示音 pairing,这里 apps1A 也可以
    v. 手机可搜索到 LE-3040,配对成功后听到提示音 connected,可播放音乐、打电话

7. 总结

新的ADK20.1的进步很明显,从双耳log混合显示功能到pydbg命令行操作功能等种种迹象可以看到,高通方案有在努力降低开发难度,对提升方案的普及度很有帮助。

虽然mirrow tws的例程已经部署成功了,但对mirror tws的实现原理和技术细节相关的知识还比较匮乏,需要专门研究,有成果后会再给大家分享。

你可能感兴趣的:(tws,蓝牙,qcc,耳机,高通)