文化人Sugar
也许我们都不是天才的程序员,但至少我们都可以成为一个理想的程序员。
展开
-
一篇文章带你搞懂BES平台,提供全网最全的开发调试笔记和文档下载(更新:2022.11.09)
本文章目的:1)系统整理BES平台的开发调试笔记2)给广大的“道友”提供一个资料下载的渠道3)通过学习BES,搞清楚TWS耳机类消费电子的开发套路这里是所有的文章内容导读,大家可以根据需要点击相应的文章进行学习,也可以点击 学习笔记索引进行查看。文章标题内容导读“道友”们,如果原创 2021-02-23 21:08:30 · 15956 阅读 · 85 评论 -
BES2300x笔记(0) -- 学习笔记索引
博文索引关于作者哈喽大家好,我是书哥Sugar, 从事蓝牙行业风雨数载,近期正在学习恒玄平台的开发,小白一个呢。在当前形势下,国内的芯片发展定会进入加速期,国产芯片厂商需要奋发图强,加速芯片国产化。恒玄算是国产蓝牙SOC芯片厂商里比较出色的一枝,这个【笔记】系列是作者学习的笔记整理,希望能与正在使用BES平台的“道友”们相互探讨。该系列会不断更新,如果作者没有偷懒的话~“道友”们,如果有任何问原创 2020-07-03 17:39:26 · 12766 阅读 · 21 评论 -
BES2300x笔记(1) -- SDK代码架构与Battery模块
哈喽大家好,这是该系列博文的第一篇~ 篇~首先上一个链接:参考链接一、前言拿到恒玄的SDK源码之后,结合文档花了一些时间研究,这篇就先介绍下代码的框架和模块之间的解耦处理。转载 2020-07-03 17:45:36 · 11161 阅读 · 32 评论 -
BES2300x笔记(2) -- 如何区分左右耳
哈喽大家好,这是该系列博文的第二篇~ 篇~<<【系列博文索引】快速通道 >>一、前言考虑到通过硬件区分左右耳(即左右不共板),需要在打板时增加额外的流程和成本,我们可以尝试通过软件进行区分,常见做法有:1)蓝牙地址奇偶区分2)单独的左右耳固件区分。二、修改代码首先,修改tgt_hardware.c文件中的接口tgt_tws_get_earside(),添加一个宏,兼容根据IO口电平区分左右耳的策略;然后,修改.mk文件,添加一个变量TWS_EAR_S原创 2021-03-31 19:49:13 · 2912 阅读 · 4 评论 -
BES2300x笔记(3) -- 编写自动化编译脚本
哈喽大家好,这是该系列博文的第三篇~ 篇~<<【系列博文索引】快速通道 >>一、前言接着上一篇,我们已经实现了通过指令来分别生成左右耳固件,但感觉上还不是很方便,第一,如果需要改回IO口区分,还是要去动代码;第二,每次想要生成OTA的bin还得分别操作,甚是繁琐;还想再偷懒一点怎么办呢??果然(懒人是推动社会进步的原动力——鲁迅)。原创 2021-04-24 17:29:08 · 1994 阅读 · 1 评论 -
BES2300x笔记(4) -- TWS组对与蓝牙配对(Peer or Pair傻傻分不清)
哈喽大家好,这是该系列博文的第四篇~ 篇~ 转载文章,请注明出处哦<<【系列博文索引】快速通道 >>首先上一个链接:TWS耳机火遍华强北!为何干不过苹果AirPods?一、前言看到有“道友”在评论区留言:对TWS组对、BT配对以及回连流程部分很迷糊,那这第二篇我们就来说说BES平台的相关流程和接口。(PS:蓝牙基础部分就不再赘述了,网上有很多资料可以参考)原创 2020-09-22 19:43:29 · 9257 阅读 · 52 评论 -
BES2300x笔记(5) -- 配对与回连的各场景详解
哈喽大家好,这是该系列博文的第五篇~ 篇~<<【系列博文索引】快速通道 >>一、前言在这篇 BES2300x笔记 – TWS组对与蓝牙配对 博文里,我们提到了耳机与手机的组对和配对过程,其实就是蓝牙在不同访问模式间切换的体现。原创 2021-06-07 20:44:39 · 2909 阅读 · 4 评论 -
BES2300x笔记(6) -- 如何修改蓝牙名称
哈喽大家好,这是该系列博文的第六篇~ 篇~<<【系列博文索引】快速通道 >>一、前言有时,销售对接的客户需要送样,就想拿仓库现有的产品改下蓝牙名称,然后寄给客户,但咨询过代理和原厂,BES的OTA升级工具竟然不支持修改蓝牙名称!!二、魔改合成大西瓜1、理下思路首先,修改后的蓝牙名称肯定不能因为复位/掉电而丢失,那么我们只能修改flash存储的蓝牙名称,而且我们知道在使用Dld_ProductLine烧录时,有把蓝牙名称和蓝牙地址烧录到单独的flash区域;通过搜索我们在原创 2021-02-28 15:56:20 · 2225 阅读 · 8 评论 -
BES2300x笔记(7) -- 如何实现SPP数据收发
哈喽大家好,这是该系列博文的第七篇~ 篇~<<【系列博文索引】快速通道 >>一、前言有道友在评论区留言: SPP 怎么玩? 首先这是一个开放式问题(泪奔ing ┭┮﹏┭┮),如果,只单单罗列一下怎么调用接口收发数据,感觉作用不大~想了想,我还是把它摘了出来,单独整理成一篇,专门介绍蓝牙SPP和相关代码的实现。二、蓝牙协议SPP1、基本概念SPP是Serial Port Profile(串口协议)的缩写,其定义了使用蓝牙进行RS232(或类似)串行电缆仿真的设备应使用的协议和过程。简单来说原创 2021-06-09 21:46:01 · 2459 阅读 · 11 评论 -
BES2300x笔记(8) -- 如何实现BLE数据收发
哈喽大家好,这是该系列博文的第八篇~ 篇~一、前言很早以前就写了个标题在这,但是一直鸽了这么久(捂脸),先给各位“道友”道个歉,今天咱就把它给搞起~这一篇,我们就以DATAPATH为例,说一说怎么实现蓝牙BLE的数据通信。二、蓝牙BLE的代码实现以DATAPATH模块为例1、新建BLE profile 源文件1. 在rwprf_config.h文件中,定义对应的宏原创 2022-11-04 21:25:21 · 1731 阅读 · 6 评论 -
BES2300x笔记(9) -- 与苹果手机的兼容问题
哈喽大家好,这是该系列博文的第九篇~ 篇~一、前言我们知道,苹果自家的产品更多的是要配合自家产品来使用的,但有些也能适配非苹果产品使用,比如普通蓝牙耳机+苹果手机,就是会少一些Air pods那种顺滑到飞起的赶脚。这不过是苹果公司为了维护自家生态壁垒的一些手段而已,所谓生态优势和产品粘性的壁垒,其实也只是幻觉,苹果现在最大的壁垒是美国贸易保护的高墙,抵挡了华为小米的群狼围攻。原创 2021-09-05 17:02:30 · 954 阅读 · 7 评论 -
BES2300x笔记(10) -- 扒一扒主从无缝切换
哈喽大家好,这是该系列博文的第十篇~ 篇~<<【系列博文索引】快速通道 >>一、前言在上一篇文章,我们提到过 TWS 早期的转发(Relay)技术,转发技术可分为传统的 2.4G 转发、恩智浦的 NFMI 近场磁通讯技术和恒玄的 LBRT 低频转发技术,这个技术的时间段我们称之为 TWS 1.0时代 。相比于苹果的监听模式,早期的转发模式存在很多的不足:1)由于需要通过左耳(主设备)再转发到右耳(从设备)这样一个过程,转发模式连接的稳定性与延迟都要比苹果的监听模式差很多原创 2021-03-07 19:11:17 · 2441 阅读 · 11 评论 -
BES2300x笔记(11) -- 主从数据交互
哈喽大家好,这是该系列博文的第十一篇~ 篇~<<【系列博文索引】快速通道 >>一、前言对于 BES 平台来说,当 Audio source 与一只耳机建立连接后, 就称这只耳机为主耳(IBRT master),另外一只耳机为从耳(IBRT slave)。此时,主耳默认使用主从之间的ACL链路,来转发 Snoop parameters(包括加密信息、跳频信息、链路维护信息等)给从耳。原创 2021-03-26 22:54:00 · 2425 阅读 · 32 评论 -
BES2300x笔记(12) -- 主从数据交互进阶
哈喽大家好,这是该系列博文的第十二篇~ 篇~一、前言这一篇,主要是对 主从数据交互 博文的补充,可能之前写的太晦涩难懂了些,有道友反馈没太看懂。。原创 2021-09-11 15:26:44 · 915 阅读 · 3 评论 -
BES2300x笔记(13) -- 主从耳关键log解析
哈喽大家好,这是该系列博文的第十三篇~ 篇~一、前言对于BES平台,因为没有可视化的IDE,所以串口log就成了我们Debug时的主要辅助手段,通过添加串口打印信息,几乎可以调试我们开发时遇到的所有问题,当然也能清晰的看到一些状态信息,比如蓝牙的连接/断开,音乐的播放状态等。那么这一篇,我们就来说说如何通过耳机的log,来判断左右耳的主从角色、蓝牙连接状态、以及这些信息是如何发生变化的。原创 2022-10-02 18:10:51 · 969 阅读 · 0 评论 -
BES2300x笔记(14) -- 提示音模块
哈喽大家好,这是该系列博文的第十四篇~ 篇~<<【系列博文索引】快速通道 >>一、前言提示音 的这个模块,代码量确实不小啊,这一篇,我们就来梳理一下,提示音相关接口的调用逻辑吧。二、代码调用逻辑原创 2021-06-11 16:18:00 · 1657 阅读 · 7 评论 -
BES2300x笔记(15) -- 提示音制作秘籍
哈喽大家好,这是该系列博文的第十五篇~ 篇~<<【系列博文索引】快速通道 >>一、前言常见的TWS耳机产品中,我们极少会看到有LED灯指示,即便在板子上预留了LED,也只是用在调试阶段,实际量产时直接空贴。因为一个LED就足以把产品的档次降到0,所以提示音就成了人机交互的重要方式。原创 2021-04-24 19:15:43 · 1285 阅读 · 0 评论 -
BES2300x笔记(16) -- 提示音制作与添加
哈喽大家好,这是该系列博文的第十六篇~ 篇~<<【系列博文索引】快速通道 >>一、前言有关提示音的制作过程,道友们可以参考这篇 BES2300x笔记 – 提示音制作秘籍 博文,这一篇,我们主要介绍一下,如何把制作好的提示音添加到项目工程中。二、提示音添加原创 2021-06-10 11:23:34 · 1232 阅读 · 3 评论 -
BES2300x笔记(17) -- 提示音高阶应用
哈喽大家好,这是该系列博文的第十七篇~ 篇~一、前言经过前面几篇有关提示音的介绍,我想,道友们已经很熟悉 提示音 这个模块了,这一篇,我们就整点不一样的,尝试一些提示音的高阶应用。二、高阶应用1、两种模式我们知道,平台的SDK里支持两种提示音播放模式,MIX模式和非MIX模式(或叫停等模式),通过以下宏开关进行控制:原创 2021-06-10 14:25:12 · 1260 阅读 · 4 评论 -
BES2300x笔记(18) -- 按键梳理
哈喽大家好,这是该系列博文的第十八篇~ 篇~<<【系列博文索引】快速通道 >>一、前言作为嵌入式三剑客之一的 Button,是我们必须要熟悉的模块。当我们熟悉了 Button 之后,对于可简化为IO操作(低端触摸或入耳检测)的外设应用,那就是小菜一碟了。那么这一篇 ,我们就来学习一下 Button 。二、框架及代码分析看一下按键的逻辑框图原创 2021-06-09 23:13:49 · 1634 阅读 · 13 评论 -
BES2300x笔记(19) -- LED指示灯
哈喽大家好,这是该系列博文的第十九篇~ 篇~<<【系列博文索引】快速通道 >>一、前言嵌入式开发中,最基础的操作就是按键和点灯,这一篇我们就来聊聊BES平台的点灯服务。二、app_status_indication_set接口LED 的控制在 app_status_ind.c 文件中的函数 app_status_indication_set 内设置,根据上层传送事件,来调用相应的 LED 控制,使用时调用 app_status_indication_set 函数,并选择相原创 2021-03-07 19:39:34 · 1364 阅读 · 9 评论 -
BES2300x笔记(20) -- IIC驱动
哈喽大家好,这是该系列博文的第二十篇~ 篇~<<【系列博文索引】快速通道 >>一、前言说到IIC驱动,绝对是一个老生常谈的话题,但凡入坑了嵌入式开发的道友,肯定都能说的头头是道,编写个驱动、调试个外设,那更是信手拈来,不在话下。这一篇,我们就来个冷饭新炒,一起回顾一下IIC那点东西,温故而知新嘛。原创 2021-06-09 20:16:26 · 1380 阅读 · 0 评论 -
BES2300x笔记(21) -- 修改串口波特率
哈喽大家好,这是该系列博文的第二十一篇~ 篇<<【系列博文索引】快速通道 >>一、前言初接触BES平台,在成功编译+顺利烧录之后,开机运行,打开串口工具只看到了一堆乱~ 码~ ,男人的直觉告诉我一定是波特率设置有问题,试了115200~ 乱码,921600~ 乱码。看来靠直觉是蒙不对了,还是要去代码里找找才行。二、重点来了1、解决乱码问题1、config/best2300p_ibrt_anc/target.mkexport TRACE_BAUD_RATE ?= 10*原创 2021-03-14 14:16:46 · 1454 阅读 · 0 评论 -
BES2300x笔记(22) -- 强改一波IO口电压
哈喽大家好,这是该系列博文的第二十二篇~ 篇~<<【系列博文索引】快速通道 >>一、前言外设供电,普通IO口输出只有1.7V二、通过电池供电通过IO口控制MOS管的通断,来控制电池给外设供电三、修改IO口电压直接升高到3.3V,来给外设提供稳定的电压...原创 2021-03-14 16:06:31 · 1038 阅读 · 0 评论 -
BES2300x笔记(23) -- 10s的软件定时器
哈喽大家好,这是该系列博文的第二十三篇~ <<【系列博文索引】快速通道 >>一、前言初接触BES平台,发现无连接时会有自动关机的功能,通过搜索发现,在apps.cpp中有这样的结构体和宏:二、初始化定时器这里的定时器是以10s为单位,timer_period为计数次数;首先通过app_10second_timer_init()接口初始化10s的周期定时器,在回调函数里周期检测结构体数组app_10_second_array。当timer_en被赋值为1的时候,就会把原创 2021-02-28 18:36:59 · 1278 阅读 · 0 评论 -
BES2300x笔记(24) -- 如何进行软件加密保护
哈喽大家好,这是该系列博文的第二十四篇~ 篇~<<【系列博文索引】快速通道 >>以下内容基于原厂提供的文档整理润色 ↓↓↓一、前言由于当下知识产权意识的普遍淡薄,当我们开发一款产品,推向市场之后,如何能防止第三方破解代码,便成了维护我们自身利益的重要手段。今天,我们就讲一讲如何通过加密工具对BES平台的代码进行加密保护。原创 2021-04-19 22:06:50 · 852 阅读 · 8 评论 -
BES2300x笔记(25) -- POP音的问题
哈喽大家好,这是该系列博文的第二十五篇~ 篇~<<【系列博文索引】快速通道 >>一、前言项目开发阶段,通过定义宏ANC_TALK_THROUGH增加了通透模式,实现了从ANC ON —> Monitor —> ANC OFF 的循环切换,但是却发现从降噪模式切换通透模式出现了异常POP音,有些耳机声音小,但有些耳机明显不能接受!!#define ANC_TALK_THROUGH二、问题优化通过咨询原厂,需要打开淡入淡出的渐变功能,搜索代码发现在app_anc.原创 2021-02-28 17:35:40 · 2785 阅读 · 6 评论 -
BES2300x笔记(26) -- 获取芯片的剩余空间
哈喽大家好,这是该系列博文的第二十六篇~ 篇~<<【系列博文索引】快速通道 >>一、前言有时,我们添加第三方算法时,可能会遇到内存不足的问题,如图就是因为内存不足发生崩溃时输出的log;二、查看剩余空间通过pool_api.c文件中syspool_original_size()和syspool_total_size()接口可以获取软件的初始剩余空间。三、解决空间不足问题首先,查看log里的flash型号【0x85, 0x60, 0x15】,通过搜索可以确定flash原创 2021-02-28 19:02:22 · 1546 阅读 · 3 评论 -
BES2300x笔记(27) -- 声道设定与声道切换
哈喽大家好,这是该系列博文的第二十七篇~ 篇~<<【系列博文索引】快速通道 >>一、前言前几天,有道友私信问到:BES2300如何进行声道设定,想通过硬件进行固定~那么,这一篇我们就讲讲BES平台有关声道的设定,以及如何进行硬件的固定(Ps:这里有一个坑,且往下看)。原创 2021-04-29 23:05:15 · 1089 阅读 · 11 评论 -
BES2300x笔记(28) -- 左右耳同时按下的骚操作
哈喽大家好,这是该系列博文的第二十八篇~ 篇~<<【系列博文索引】快速通道 >>一、前言市面上的TWS耳机,一般中高端耳机都会有触摸按键和入耳检测功能,使用触摸按键更方便外观和防水处理,但同时也限制了UI交互方式,有限的交互方式有:单击、双击、三击、小长按(long)、大长按(longlong)。如果需要在耳机上实现更多的功能,可以考虑赋予左右耳不同的UI功能,这样上面的交互方式就相当于double了,哈哈。另外,有些低频次的UI操作,比如进入DUT、进入OTA、进入组对等原创 2021-06-03 19:22:56 · 983 阅读 · 0 评论 -
BES2300x笔记(30) -- ANC降噪原理与通道配置
哈喽大家好,这是该系列博文的第三十篇~ 篇~ <<【系列博文索引】快速通道 >>一、前言最近赶项目,一直是996的状态,感觉时间都不够用了,连偷懒的时间都没有~~1024还在加班,今天就把ANC安排上吧,这一篇我们就来说说ANC调试的流程和相关文档。二、调试笔记1. 软件部分原创 2020-10-24 23:28:29 · 6266 阅读 · 24 评论 -
BES2300x笔记(31) -- ANC调试环境搭建
哈喽大家好,这是该系列博文的第三十一篇~ 篇~<<【系列博文索引】快速通道 >>以下内容基于原厂提供的文档进行整理0、前言首先,在声学消音室环境下,使用AP搭建好如图的测试平台:原创 2021-02-02 20:05:17 · 2693 阅读 · 19 评论 -
BES2300x笔记(32) -- 优化ANC功能代码
哈喽大家好,这是该系列博文的第三十二篇~ 篇~<<【系列博文索引】快速通道 >>一、前言通过“BES2300x笔记 – ANC降噪原理与通道配置”笔记,我们知道了,当ANC_COEF_NUM为2时,ANC会有三种模式,通过调用app_anc_key()接口可以循环切换(降噪—>通透—>关闭—>降噪)。这一篇,我们就来说说ANC功能模块以及其中存在的一些bug。原创 2021-05-27 22:11:15 · 3454 阅读 · 0 评论 -
BES2300x笔记(33) -- 通话音量、回声与降噪调试
哈喽大家好,这是该系列博文的第三十三篇~ 篇~一、前言一次心血来潮,使用正在开发的蓝牙耳机跟媳妇交流感情,正说着,媳妇那边却生气了,遂问原因,她说我吐字不清晰,声音又小,没一点子诚意!W.T…我明明诚意满满,难道是耳机的上行通话有问题?我赶紧换回手机,一顿口吐莲花操作,媳妇那头才消了气。 二、言归正传1、声音小打开BES的工程,在tgt_hardware.h中上行通话音量的宏CODEC_SADC_VOL默认是12,也就是对应的22dB;如原创 2021-02-24 20:35:46 · 3486 阅读 · 12 评论 -
BES2300x笔记(34) -- Audio Developer工具详细使用说明
哈喽大家好,这是该系列博文的第三十四篇~ 篇~<<【系列博文索引】快速通道 >>一、 前言在对蓝牙通话相关的回声、降噪等算法进行调试时,有时我们需要把算法处理前后或者整个SCO链路的数据dump出来,对比算法处理前后的效果,再进行分析调试;BES的工程里有一个专用的audio_dump模块,提供了相关的接口,同时搭配Audio Developer工具即可dump出我们需要的数据。二、 使用工具Audio Developer v0.3.5(版本会持续更新);三、 软件对应修改原创 2021-02-26 20:12:36 · 2459 阅读 · 16 评论 -
BES2300x笔记(35) -- EQ调试指南
哈喽大家好,这是该系列博文的第三十五篇~ 篇~<<【系列博文索引】快速通道 >>一、前言在开发音频类产品时,我们需要调试EQ,那么什么是EQ呢?EQ是均衡器的缩写。它的基本原理是通过对声音某一个或多个频段进行增益或衰减,达到调整音色的目的。当然,EQ还有一个显著的功能——降噪。EQ通常包括如下参数:F(requency),频率――这是用于设定你要进行调整的频率点用的参数;G(ain),增益――用于调整在你设定好的F值上进行增益或衰减的参数;Q(uantize),量化―原创 2021-03-25 21:40:49 · 2245 阅读 · 2 评论 -
BES2300x笔记(36) -- OTA升级
哈喽大家好,这是该系列博文的第三十六篇~ 篇~<<【系列博文索引】快速通道 >>一、前言BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。原创 2021-06-09 16:35:11 · 4210 阅读 · 12 评论 -
BES2300x笔记(37) -- 信令模式与非信令模式
哈喽大家好,这是该系列博文的第三十七篇~ 篇~<<【系列博文索引】快速通道 >>一、前言蓝牙测试模式主要分为信令模式(signaling mode)和非信令模式(nosignaling mode):1)信令模式是指通过蓝牙综测仪连接蓝牙进行射频测试,主要的综测仪有agilent n4010,RS CBT ,ANRITSU 8852;2)非信令模式是指通过频谱仪或者其他射频测试仪直接测试蓝牙射频,主要的仪器有cmu200,iqflex pxi3000等;二、BES平台的测试模块原创 2021-02-25 20:47:50 · 6293 阅读 · 7 评论 -
BES2300x笔记(38) -- 耳机与充电盒数据交互
哈喽大家好,这是该系列博文的第三十八篇~ 篇~<<【系列博文索引】快速通道 >>一、前言蓝牙耳机的发展,从一开始的单个挂耳式耳机,到后来的颈挂式耳机,再到现在的TWS耳机,续航,一直都是个大问题,充电盒的诞生,不仅解决了TWS耳机的续航问题,也兼具了耳机收纳功能。充电盒,伴随TWS耳机而生的产物,作为TWS耳机与用户交互的桥梁,起着至关重要的作用。这一篇,我们就来聊聊耳机与充电盒的交互,也解答一下道友的问题。原创 2021-06-07 23:12:07 · 2325 阅读 · 5 评论 -
BES2300x笔记(39) -- 道友问题整理(持续更新)
哈喽大家好,这是该系列博文的第三十九篇~ 篇~<<【系列博文索引】快速通道 >>一、前言不知不觉,该系列专栏推出已经有段时间了,首先,非常感谢各位道友的订阅支持,感谢(抱拳~);其次也觉得非常荣幸,因为有很多道友在评论或者私信中留言,与我探讨问题。这一篇,我把道友们提到过的问题做了一个整理,都附上了“参考答案”;如果看了,刚好能解决你开发中遇到的某个问题,那也不枉我肝到半夜了。原创 2021-05-15 13:59:22 · 3021 阅读 · 45 评论