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

Posted NiceBT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QCC3040学习笔记:部署mirror tws earbuds例程相关的知识,希望对你有一定的参考价值。

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

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

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

1. 引言

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

  • 手机上只会显示一个耳机设备,而不是两个耳机设备
  • 耳机在切换主从时更自然流畅,主从耳机耗电更均衡

虽然上述优点早已在苹果的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

5. 部署流程

5.1. 打开官方例程

  1. 打开 mde2.4,选择 open project
  2. 选择 earbud.x2w
  3. 选择 ADK tool 1.0.1.19 x64

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

  1. 修改工程属性,屏蔽电池温度检测

  2. 修改 ui_prompts.c,使能开机提示音


  3. 修改 kymera_config.h,使能外部 PA 控制脚 PIO3,开机可听到 power on 提示音

5.3. 编译 earbud 工程

第一次编译需要较长时间,请耐心等待

5.4. 烧录固件到 primary 耳机

  1. 选择调试器
  2. Deploy 固件,等待完成

5.5. 生成 secondary 耳机的固件

  1. 修改蓝牙地址以区分 primary 和 secondary 设备

  2. build dev_cfg 工程
  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 再打开。

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

ANSI 转义字符显示为乱码[1m [35m] ,从 cmd.exe 输入(也可以在 PowerShell 中使用):reg add HKCU\\Console /v VirtualTerminalLevel /t REG_DWORD /d 1

6.4. 创建 pydbg 调试接口

  1. 在工程路径下创建 pydbg 脚本,用于打开 log 窗口和输入 apptest 命令窗口

    这里假设 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 窗口
  2. Cmd 窗口 1,输入 system.apps1.live_log()后回车,可看到左右耳机的 log,A 是primary 耳机,B 是 secondary 耳机
  3. Cmd 窗口 2,输入 pydbg 命令,使左右耳机完成配对,并开启与手机的配对模式

    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的实现原理和技术细节相关的知识还比较匮乏,需要专门研究,有成果后会再给大家分享。

以上是关于QCC3040学习笔记:部署mirror tws earbuds例程的主要内容,如果未能解决你的问题,请参考以下文章

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

QCC304x系列开发教程(实战篇) 之7.3 QCC3040之swift pair

QCC300x学习笔记:自定义一个GATT client

QCC300x学习笔记:自定义一个GATT client

QCC51xx学习笔记:理解CVC Audio Chain

QCC51xx学习笔记:理解CVC Audio Chain