qcc514x_qcc304x
文章平均质量分 84
记录笔者实际开发过程中的经验,以及遇到的问题,同时也会分享一些相关资料
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
在云巅
学如逆水行舟,不进则退!
展开
-
qcc514x_qcc304x开发调试笔记
qcc2020年新鲜出炉的蓝牙音频SoC,据说能够提供更稳健的连接、更持久的电池续航、更高的舒适度,同时还集成专用硬件以支持高通的混合主动降噪技术(Hybrid ANC)、语音助手和顶级的无线声音与语音品质。老规矩,边学边记录,每天进步一点点,哈哈~本文仅提供笔记总目录,以及相关资料(本文底部网盘链接),如果要查看对应的文章内容,请点击文章对应链接,持续更新:下面是我整理的相关资料与工具,大家根据自己的需要下载!有些资料暂不能公开,可以私信我!链接:https://pan.baidu..原创 2020-06-09 11:03:56 · 5870 阅读 · 1 评论 -
QCC512X--QCC514X--QCC302X--QCC304X烧录工具
简介下面是我自己开发的烧录工具,支持qcc51xx系列与qcc30xx系列芯片的擦除、烧录、写地址与名称等功能。简单使用说明该工具解压即可使用,支持USB与TRB烧录,但是使用之前电脑中必须已经安装了相关驱动,驱动安装这里不做说明,网上都有相关教程。同时也可将如下四个文件复制到BlueSuite x.x.x目录运行。使用之前要选择芯片系列“QCC512X”支持qcc512x_qcc302x系列芯片的烧录;“QCC514X”支持qcc514x_qcc304x系列芯片的烧录。“.原创 2021-01-23 14:23:56 · 1944 阅读 · 4 评论 -
qcc304x笔记之环境搭建(一)
安装开发环境如果之前装过512x的开发环境,不用担心,版本之间是共存的下载adk到官网clone最新release的adk,解压后如下图所示:打开工程打开MDE WIN 2.4.1.4 _x64.exe,选择open project,由于我这里是qcc3040,所以选择:/earbud/workspace/QCC3040-AA_DEV-BRD-R2-AA/earbud.x2w其他芯片,请选择对应芯片型号下的工程文件。注意尽量使文件路径短一点,路径太深可能导致编译.原创 2020-06-09 11:01:59 · 3268 阅读 · 2 评论 -
qcc304x笔记之按键配置(二)
x_button .c/.h的生成打开ButtonParseXML.py文件,定位到如下位置上面两个接口就是先从x_buttons.buttonxml中读取配置,并把这些配置生成一对应的.c与.h文件,这里拿1_button举例分析。首先我们打开1_buttons.buttonxml与生成的1_button.c如上图,在1_buttons.buttonxml文件中包含了两个消息组"media_message_group"和"voice_assistant_message_group"原创 2020-06-09 19:35:36 · 2968 阅读 · 11 评论 -
qcc304x笔记之按键拓扑(三)
上篇我们介绍了底层按键处理相关的逻辑,这篇我们继续说明按键的拓扑结构,比如按键事件在peer之间如何通知和如何处理代码逻辑分析不管是本地的按键消息还是对端传过来的消息,都会在如下的函数中处理:logicalInputSwitch_HandleMessage /*从对端设备传过来的按键消息*/ PEER_SIG_MARSHALLED_MSG_CHANNEL_RX_IND logicalInputSwitch_HandleMarshalledM...原创 2020-07-11 17:12:16 · 1655 阅读 · 7 评论 -
qcc304x笔记之长按开关机(四)
Earbud工程都没有长按开机的功能,默认是一个上升沿就开机了,需要我们自己设计在程序初始化时,进行拦截,等待条件(比如长按2s)到来在进行开机初始化流程我们先来看下开机初始化的逻辑main() appHandleMessage APPS_COMMON_INIT_CFM appHandleCommonInitCfm /*UI配置初始化*/...原创 2020-07-11 17:14:12 · 2667 阅读 · 21 评论 -
qcc304x笔记之led配置(五)
在实际的项目中,可能需要针对产品的UI去定义led的显示,以提供给客户的提示效果,这篇我们将来解析关于qcc3040的led的逻辑以及如何去配置led代码逻辑分析/*将状态提供者注册给ui_led,这样当该提供者的状态改变时才能发送消息到led模块*/Ui_RegisterUiProvider/*当某一ui provider的状态改变,比如管理与耳机配对的ui_provider_handset_pairing状态由idle转换为active,发送UI_PROVIDER_CONTEXT_UPDA原创 2020-07-11 17:13:43 · 2212 阅读 · 9 评论 -
qcc304x笔记之提示音配置(六)
代码逻辑分析/*处理来自系统和内部的消息*/uiPrompts_HandleMessage /*从earbud_ui_prompts_table匹配当前事件是否设置了提示音*/ uiPrompts_GetPromptIndexFromMappingTable /*提示音播放任务调度*/ uiPrompts_SchedulePromptPlay uiPrompts_PlayPrompt appKymeraPromptPlay /*通知对端同步播放提示音*/Ui_RaiseUiE原创 2020-07-11 17:13:16 · 2003 阅读 · 10 评论 -
qcc304x笔记之tone配置(七)
代码逻辑分析/*处理来自外部的系统消息和内部的消息*/uiTones_HandleMessage /*从earbud_ui_tones_table匹配当前事件是否设置了提示音*/ uiTones_GetToneIndexFromMappingTable /*tone播放任务调度*/ uiTones_SchedulePlay uiTones_PlayTone appKymeraTonePlay /*通知对端同步播放tones*/Ui_RaiseUiEvent(ui_indica原创 2020-07-11 17:12:44 · 1108 阅读 · 0 评论 -
qcc304x笔记之i2c运用(八)
这里以驱动ST的gsensor--lis2dh12为例流程分析首先根据自己的原理图配置pio,注意这里是16进制显示添加一个task以及注册taskHandler用于管理与外设通讯,将task注册给PioMonitor 初始化pio 实现中断处理即taskhandler 配置gsensor的寄存器代码实现gSenorTaskData gSenorTask;/*pio中断处理函数*/static void Lis2dh12InterruptHandler(Task task,原创 2020-07-11 17:13:34 · 2298 阅读 · 4 评论 -
qcc304x笔记之手机端显示电量(九)
默认的sdk有些安卓手机不支持电量显示,所以需要加电量显示的补丁流程分析1. 首先新建一个task,并将task注册给电池模块appBatteryRegister(batteryRegistrationForm)实现handler处理函数,当battery模块电池电量更新后,会将电池百分比值发送到本模块,然后我们就可以在handler中将实时电量同步到手机端了。hfpAtCmdInit atCmdTask.task.handler = appAtCmdHandleM...原创 2020-07-11 17:13:56 · 1954 阅读 · 13 评论 -
qcc304x笔记之ota升级(十)
OTA升级说明生成oem key与之前csr、qcc的芯片一样,ota之前都需要oem key,该key(public,private)固件与ota文件各执一端,当升级的时候进行验证,保证固件与ota文件属于同一发布者。在MDE中选择Tools->Setup DFU security此时会让你选择保存文件夹,直接点确定默认就好,生成完成之后如下图所示:重新编译工程,就会将公钥注入固件中了,Deploy All将固件烧录到板子即可将上述过程重复操作,即可生成新的密钥对,只要d原创 2020-07-23 20:59:56 · 1567 阅读 · 0 评论 -
qcc304x笔记之监听(aec)功能(十一)
高通earbud工程自带环境音拾取功能(aec leakthrough),这里我们将介绍如何开启该功能。首先在工程配置中加入如下两个宏:自定义按键消息用于开启或关闭监听重新编译,并将固件烧录到芯片中。根据按键定义去开启监听,比如这里我定义的是双击切换enable/disable,双击就有可以开启监听环境音的效果了。如果觉得效果不明显,还可以连接QACT工具修改音频参数,如图,将Gain Sink1的参数加大之后,拾音效果就非常明显了,也可以调整其他eq参数,优化拾音效果。.原创 2020-07-23 21:01:18 · 1419 阅读 · 1 评论 -
qcc304x笔记之嵌入EQ模块(十二)
QCC304x_QCC514x默认没有嵌入EQ模块,即打开QACT工具是看不到eq调试界面的,所以需要我们将EQ模块嵌入到音频链路中。打开Earbud->src->chains目录,打开chain_output_voume.chain文件,将CAP_ID_PEQ加入链路中。<chain name="CHAIN_OUTPUT_VOLUME" id="0" generate_operator_roles_enum="False" generate_endpoint_roles_enu原创 2020-08-14 17:48:32 · 1819 阅读 · 10 评论 -
qcc304x笔记之tws mirror技术简述(十三)
本文针对高通tws mirror技术相关文档进行翻译与整理,以求能对新一代tws耳机的一些特性及原理有一个大致的了解。耳机与手机连接场景演变Tws技术发展历史TWS mirror概述如上图所示,该技术涉及的细节包括监听,同步,选择性数据中继,切换等监听:我猜测类似于用sniffer去抓取空中数据,可以获取大部分的数据包,由于没有纠错与重传机制,所以数据可信度不高,数据完整性依赖于数据的中继。同步:主要是同步比如AHF通道映射、加密信息变化等选择性数据中继:中继连接状态原创 2020-09-30 16:00:58 · 1834 阅读 · 1 评论 -
qcc304x笔记之规则(rules)机制详解(十四)
代码逻辑分析(注:由于SDK在持续更新,所以有些接口可能会有些变化,所以仅供参考)/*目前使用的rules 容器有*/Common_rules_setprimary_rules_setsecondary_rules_sethstop_rules_settws_topology_primary_rulestws_topology_secondary_rules/*rules的通用实现,包含创建、注销,执行和取消规则*///rules_engine.c /*创建一个规则容器,将一原创 2020-10-17 18:10:15 · 1774 阅读 · 0 评论 -
qcc304x笔记之目的(goal)机制详解(十五)
goal可以理解为一个模型(可以类比linux的驱动模型),这个模型(代码中的体现为procedure_fns_t)中包含了两个操作:start,cancel。猜测这样做的目的是,可以使上层只以目标为导向,不用关心底层实现,这样上层的逻辑会更加清晰。定义了这样一个模型之后,也有更多的组合使用方式,可以单独使用,也可以将有相关性的模型进行组合形成一个SCRIPT。相关性可以举个例子类比:比如进配对的时候实际上是开启可连接和可发现,将这两个模型组合成一个script,在我们进配对的时候只需要调一个脚本,就原创 2020-10-22 09:26:48 · 1265 阅读 · 0 评论 -
qcc304x笔记之主从切换(handover)机制详解(十六)
主从切换执行条件引起主从切换的原因有PhyState改变,电池的状态,rssi状态,通话音质等方面,这里我们主要是针对PhyState改变引起的切换来举例说明当PhyState状态改变时,交由stateProxy模块进行处理(注:由于SDK在持续更新,有些接口可能会有些变化,所以仅供参考)appPhyStateEnterInCaseappPhyStateEnterInEarappPhyStateEnterOutOfEarAtRestappPhyStateExitInCaseappPh原创 2020-10-24 10:07:25 · 1637 阅读 · 0 评论 -
qcc304x笔记之主从确定(find role)机制详解(十七)
目录对耳配对流程(peer pair - LE)对于server端对于client端主从确定流程(peer find role)对于server端在find role连接过程中的server在执行find role过程的server对于client端在find role连接过程中的client在执行find role过程的client实际项目中,可能会碰到固定某一方为主机类似的需求!或者需要向别人解释,为什么左边首次配对的时候是主机,某次出仓的时候又变成了从机!这原创 2020-11-03 14:58:11 · 1450 阅读 · 0 评论 -
qcc304x笔记之音频链路(chain)机制(十八)
相关概念介绍首先介绍一些相关概念,为了方便理解,引用面向对象思想中class与object描述。类(class):类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,一个类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。对象():对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域与原创 2020-11-19 11:45:33 · 1899 阅读 · 4 评论 -
qcc304x笔记之常用配置(十九)
目录打开cvc打开anc打开aec输出功率调整输出方式选择(class D、class AB)离线log的小技巧MIC配置Panic复位增改eq与充电盒交互配置电池电量等级修改log输出等级配对超时时间设置修改回连手机的次数与间隔打开cvc打开anc在projects中使能anc的宏:ENABLE_ANC打开aec在projects中使能aec的宏:ENABLE_AEC_LEAKTHROUGH输出功率调整音乐:appC原创 2020-11-25 09:42:18 · 4446 阅读 · 16 评论 -
qcc304x笔记之系统消息(二十)
这里我们简单介绍一下系统消息,在sdk中如何定义,使用定义enum message_groups{ FOREACH_DOMAINS_MESSAGE_GROUP(EXPAND_AS_MESSAGE_GROUP_ENUM) FOREACH_SERVICES_MESSAGE_GROUP(EXPAND_AS_MESSAGE_GROUP_ENUM) FOREACH_TOPOLOGY_MESSAGE_GROUP(EXPAND_AS_MESSAGE_GROUP_ENUM) F.原创 2020-11-26 11:44:55 · 2086 阅读 · 2 评论