自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 RAM不足的时候,分析思路及解决办法 -- 基于中科蓝汛897X

这种方法,只能用在差别不是很多的情况(几十或者小几百字节不够),进行查找,如果差别比较大(还缺了几K),那就不能只使用这种方式来解决问题了,那就要优化代码了,比如:看task使用的RAM是否能够减少,以及一些不关键的代码,不放在中断当中去执行,可以定义一个100ms消息,用消息队列回调的形式去执行,对应的代码也不用一直放在RAM当中了,以达到节省RAM的作用。最近项目,在开发的时候,碰到很多次RAM不够,导致编译不通过,或者是软件跑不起来的问题,本文章主要记录出现的问题,及对应的解决方案,以及内存复用。

2026-04-10 11:42:58 422

原创 AUX模式进入IDLE模式阻塞的解决办法 - 基于中科蓝讯893X

最近遇到893X一个奇怪的问题:在模式切换的时候,从AUX模式,切换到IDLE模式,有可能会出现系统阻塞,然后重启的问题,分析IDLE模式的流程: 进入IDLE模式之后。在添加了日志之后,发现出现问题的时候只能打印到2, 3的日志是无法打印出来就重启了,那问题就出现在设置ANC的参数步骤了,进一步,在bsp_anc_set_param 函数中添加日志,发现问题出现在。此函数调用之前的日志能够打印,后面的日志无法打印出来,下一步就是进入到库中,分析阻塞的具体步骤了。修改之后,再进行验证功能OK,不复现问题。

2026-04-08 14:59:38 66

原创 耳机双链接A、B手机,A有业务的情况下,B手机播放音乐需要外放 -- 基于中科蓝汛897X

在0号设备有业务的时候,2S循环检查发现当前处于双链接,并且处于活跃状态,先断开1号设备的A2DP,后续1号设备播放音乐为外放;耳机端判断自己当前的蓝牙状态,如果自己当前处于业务状态,那下一次收到第二台手机的AVDTP的起播信号之后,直接回复reject,并断开AVDTP的连接,后续恢复到空闲状态的时候,耳机需要最disconnect 的AVDTP设备,主动发起discover消息,建立连接,此方法效果依赖手机蓝牙的协议栈处理,不能保证一定能够外放,有些手机的AVDTP断开之后,并不会切换到外放。

2026-04-08 14:24:28 316

原创 OTA升级过程中关盖,OTA完成之后,可能会导致一直重启不成功的问题分析 -- 基于中科蓝汛897X

到这里,怀疑不是重启函数的问题导致,下一步,在搬运流程的代码里面添加日志,看问题是出现在重启的时候,未进入搬运流程;高位的变化,就是由于出现了硬复位导致的,那为什么耳机在仓内,会突然出现硬复位呢?咨询客户得知,耳机在仓内充电的时候,充电仓会询问耳机的电量,如果回复满电,那就停止充电,在询问的时候,就会有电平变化,从而出现硬复位。客户反馈,在OTA的过程中,关盖,数据传输正常,传输完成之后,耳机重启不了,一直阻塞住,必须要等到下一次开盖,才能重启成功。添加完成之后,在进行测试,功能正常。

2026-03-19 10:26:09 89 1

原创 触摸调试技巧及问题分析 -基于中科蓝讯897X

这个时候先不盖盖子,去触摸,看响应是否正常,如果响应正常,那就排除了板上问题,如果不正常,那就需要硬件工程师分析一下硬件是否正常;这个时候需要硬件工程师分析,是否走线有问题,或者是旁边物料有干扰导致,软件只有一个灵敏度调节参数,默认情况,外部灵敏度都是一直,如果在调试的过程中,碰到灵敏度差别很大的时候,就需要硬件协助分析了。通过增大/减小 CDPR ,就可以调整基准值按下与否的差值了,如果想要灵敏一些,那就将差值稍微加大一些(50左右),如果不需要那么灵敏,那就减小一些(30左右)。在调试中,最重要的是。

2026-03-05 14:21:52 269

原创 配置IO口输入输出

设置IO口为输入,并且打印出当前IO口的状态。关掉之后,休眠之后也是稳定的。

2026-03-02 11:13:27 90

原创 如何增加关机wakeup唤醒源

需要同时在这边添加保持wkpin的配置,不然关掉IO的时候可能会有毛刺,导致pending起来了,导致一打开wk就会唤醒,用到几个IO口,就加几个,没用到的就删掉。同时,需要注意,不允许修改关机流程,修改关机流程,量产之后哦,

2026-03-02 11:07:23 60

原创 配置一个IO口下降沿中断 -基于中科蓝讯893X实现

选择完过滤器之后,再设置为 wake up sleep mode enable,以及使能port0(port0 为WKPINMAP 当中标识的)进入sleep_mode之前,需要设置PA5(我示例为PA5,酌情修改)下降沿唤醒,退出sleep_mode.WKUPEDG的port选择,为WKPINMAP 当中标识的port,置1为下降沿,置0为上升沿。问题3的修复逻辑为:进入休眠的时候,关闭中断,在退出休眠的时候,重新初始化一次。这里的初始化,需要去到芯片手册当中,看你用的定时器内容,不同的芯片不一样。

2026-03-02 10:55:00 303

原创 自己配置一个定时器 - 基于中科蓝讯897X

至此,定时器配置都已经完成,但是我在使用的时候,发现在蓝牙初始化以及连接的时候,功能正常,蓝牙连接成功了之后,定时器会停止,这个问题是由于定时器时钟选择导致的,本文章主要用于描述自己配置一个定时器:使用定时器timer4,翻转IO口电平输出,实现LED灯亮灭。这里的9,也需要参考TMR4CON 中 Timer overflow pending 具体是哪一位。这里的初始化,需要去到芯片手册当中,看你用的定时器内容,不同的芯片不一样。这里是初始化Timer4 的CON,确保每一位,都是我们配置的。

2026-03-02 10:29:09 348

原创 将充电灯改为呼吸灯,并在充满后长亮一段时间,再呼吸灭

实现:充电的时候,灯控为呼吸灯,在充满电之后,维持长亮一段时间,维持时间结束,耳机再呼吸灭。

2023-03-16 17:18:02 952 3

原创 修改自动关机时间

这个是实现:在连接上手机的时候,闲置20分钟,自动关机

2023-03-16 16:56:42 621

原创 蓝讯5616B 修改开关机的灯为呼吸灯

最近有一款耳机,客户要求为:在开机的时候,呼吸亮,呼吸亮到最大之后,进入蓝牙搜索的灯;关机的时候,长亮3S左右,然后再呼吸灭。以上就是全部的实现过程,还不清楚的小伙伴可以添加我的个人微信 lqy—1997 (中间是三个英文的杠)进行交流。到这里就能够时间开机的时候呼吸亮, 到最高亮度的时候恢复系统的灯控。

2023-03-16 16:26:46 1071

原创 添加按键按下的提示音-蓝讯芯片

在msg_bt.c下 sfunc_bt_call_message()下switch循环中:(这里添加的是通话中)在msg_bt.c下 sfunc_bt_ring_message()下switch循环中:(这里添加的是来电)在msg_bt.c下 func_bt_message()下switch循环中:(这里添加的是正常使用)这样添加之后就会在每次按下的时候,播报按下的提示音。在底层找到这个音频文件:res.h。

2023-03-16 14:53:03 1330 1

原创 增加第一次上电开机的功能

在setup.c下找到setup_arch()然后再到判断开机的地方进行执行。

2023-03-15 11:45:28 521 1

原创 关于杰理6983D4修改时钟模式之后的死机问题

最近有一个案子,硬件工程将电感过于靠近磁铁,磁铁对电感的干扰,导致手机搜不到蓝牙配对名,拆壳之后正常,软件解决的方法有两个:改LDO模式、改时钟模式。改LDO模式:修改之后,电感就没有作用了,可以直接不贴,自然无视干扰,但是功耗会高很多。

2023-03-15 11:22:26 660

原创 通过按键进入CBT(DUT)模式

按键进入CBT(DUT)模式

2022-08-12 17:32:03 1122

原创 从充电仓拿出播报开机提示音

充电仓拿出播报开机提示音

2022-08-12 16:52:08 179

原创 充满电之后的灯光转变

充满电转灯

2022-08-12 16:46:04 581

原创 修改TWS连接之后的耳机灯光

TWS连接之后,修改耳机灯光

2022-08-12 16:42:34 431

原创 通过按键消息实时修改高音及低音并显示当前值

这个是接着上一篇点亮数码屏来写的,数码显示模块就不再重复,直接修改需要的函数,具体实现如下:首先创建两个变量,分别控制低音及高音的值:(bsp_sys.c下)//系统里面高音和低音是从u8 set_bass_num; //用于控制低音加减u8 set_treble_num; //用于控制高音加减bsp_sys.h 下:extern u8 set_bass_num; //用于控制低音加减extern u8 set_treble_num; //用于控制高音加减接下来就是按键消息的

2022-02-18 15:48:33 769 2

原创 点亮数码管

这段时间也是有点太忙了,没有更新,最近有些小伙伴问数码管应该如何点亮,这里详细说说。首先呢,宏定义得打开:(config.h下)#define GUI_SELECT GUI_LEDSEG_7P7S //GUI_NO //GUI Display Select打开之后底层就打开了,之后就是修改底层的驱动了:第二步修改对应的IO口:(port_ledseg.c 下)#define LED7P7S_ANY_IO 1

2022-02-18 14:41:00 2429 3

原创 通话参数配置的经验和技巧

整体的通话信号流程如下:MIC采集信号 -> 放大器 -> ADC采集 -> 通话MIC数字增益 -> AEC算法 -> ANS降噪算法 -> 通话MIC后端数字增益 -> 通话EQ -> 蓝牙上行。配置中如图所示:MIC去直流fliter配置:MIC高通fliter,去掉直流信号。作用相当于修改串联的MIC输入电容。想低频少一些,可以选择Cutoff 240Hz。MIC省电容电阻接法时,修改此项可以等效调整电容参数;不省电容方案时,此项用默认值Cut

2021-07-10 15:49:25 3080 2

原创 蓝讯芯片软件优化RF

现在客户对距离要求越来越高,有时候硬件已经优化到最佳了,客户还想再优化一点,这个时候就可以通过软件来进行优化;或者是硬件设计不合理,信号偏弱,也可以通过软件来进行优化,具体如下:参数意义分别如下:降低未连接时TX功率:这个可以解决在搜索阶段由于信号太强而导致的杂音,注意是信号太强,如果PCB板本身存在杂音的话还是需要优化硬件;通话的MIX_GAIN0及DIG_GAIN0:通话的时候就会将参数修改为它,调整这两个值需要注意:连续说话会不会出现卡顿(这个卡顿的前提是和距离无关),通话的卡顿就优化这里;

2021-07-10 15:33:47 1357

原创 几种T卡座的检测方法

最近整理了几种T卡座的资料,软件修改方法各不相同,具体如下:第一种:低电平检测,这种是最常规的一种T卡,软件里面默认的也是这种:io_def.h中定义为:#define SD_CLK_DIR_IN() {GPIOADIR |= BIT(6); GPIOAPU |= BIT(6);}#define SD_CLK_IN_DIS_PU10K() {GPIOADIR |= BIT(6); GPIOAPU &= ~BIT(6);}#define SD_CLK_DIR_OUT()

2021-05-13 17:16:36 4070 2

原创 修改系统音量相关集合

需求如下:加减音量只有6挡;打电话的时候每次默认最大音量,且通话时最小音量为1,不能无声;具体修改如下:在配置工具中将系统32级音量关掉,系统音量就变成16级,可以使得在苹果手机上面音量加减步进为一格:再就是记录系统音量的变量:sys_cb.vol:记录了系统的音量;sys_cb.hfp_vol:记录系统通话的用量;系统内部的音量+/-操作如下:func.c下func_message()中,附系统内部的具体实现://音量+:bsp_set_volume(bsp_volume_inc(sys

2021-03-10 10:40:55 1613 1

原创 添加NTC功能

系统有一个自带的NTC功能,但是只能检测温度高于某值,但是如果要添加上线和下线,就需要自己写,具体实现如下:config.h中:/***************************************************************************** * Module : NTC检测功能 *****************************************************************************/#define

2021-03-06 16:08:05 1093

原创 关机之后长按10S恢复出厂设置

关机之后长按10S,恢复出厂设置,恢复之后开机不播报开机提示音,如果按住5S以上,10S以内松手,即开机(需要播报开机提示音);按住5S以内松手不动作;具体实现如下:bsp_sys.c中创建变量:u8 power_reset_flag = 0;//开机的时候长按10S复位操作标志位bsp_sys.h中声明为全局变量extern u8 power_reset_flag;//开机的时候长按10S复位操作标志位bsp_key.c下power_on_check_do()中:int ticks_num

2021-03-06 16:03:39 2598

原创 使用内置触摸实现入耳检测

这个是自己测试的一个功能,具体修改如下:首先在配置工具中开启内置入耳检测,设置正确的IO口:内置触摸SPP调试:开启SPP调试,开启之后可以在调试APP内看到实时的触摸值,实际灵敏度已调试为准,差值不一定50;内置触摸入耳检测:开启芯片内置触摸入耳检测功能;入耳CDPR参数:芯片内置触摸灵敏度调节参数;添加检测功能如下:func_bt.c下func_bt()中:u8 in_ear_flag = 0;//用于接收系统函数的返回值u8 in_ear_change = 0;//用于传递给函数的值

2021-03-06 16:00:03 1130

原创 调节芯片内置触摸的灵敏度

使用芯片内部自带的触摸功能,可以节省触摸IC及调节灵敏度电容,进一步节省成本,具体调试方法如下:首先在配置工具中开启内置触摸功能:内置触摸SPP调试:开启SPP调试,开启之后可以在调试APP内看到实时的触摸值内置触摸按键功能:开启内置触摸功能内置触摸软开关机:触摸是否支持软开关机功能触摸按键CDPR参数:灵敏度调节参数调试的时候可能会过于灵敏或者灵敏度不够,可以修改软件来调整:bsp_tkey.c下bsp_tkey_init()中:if (tk_cb.ch != 0xff){ //tou

2021-03-06 15:56:10 5462 6

原创 呼吸灯的实现

最近调了一款耳机,客户要求做呼吸灯,在连接之后红蓝灯交替呼吸,具体实现如下:首先,创建变量:u16 count = 0; //控制PWM低电平值u8 tick_flag = 0; //控制灯亮的模式(变亮阶段还是变暗阶段)u8 test_flag = 0; //关断控制位,使每次只关一次u8 flip_led_timer = 0; //呼吸灯动作标志位之后需要将灯光控制的函数关掉:Bsp_sys.c下usr_tmr5ms_isr()中: i

2020-11-27 11:06:27 2727 5

原创 单击之后马上长按的特殊按键处理的实现

按键操作为:单击之后马上长按,可以实现一些特殊的功能,比如实现音量的长加、长减、按住多少秒之后复位系统等等功能;以下以‘单击长按’命名;这里以实现音量+为例,具体实现如下:首先,创建变量:bsp_bt.c下文件最上面创建:u8 bt_one_flag;//单击按下之后的消息处理u16 bt_one_num_flag;//单击按下之后的复位u8 bt_long_flag;//‘单击长按’标志位u8 flag_max_vol;//最大提示音一次按下只播报一次再将其定义为全局变量bsp_bt.h

2020-11-02 15:18:11 841

原创 六击及以上按键消息处理的实现

兰讯的芯片底层已经处理好五击及以下按键处理,要实现六击或者更多按键处理,思路都差不多,这里以六击为例,具体实现如下:首先,定义变量:bsp_sys.h下sys_cb_t结构体中:u8 bt_one_flag;//单击按下之后的消息处理u8 bt_one_flag_time;//单击按下之后的复位计时之后来到蓝牙消息处理函数中,单击按下记一下数,1S内按下六击即可:msg_bt.c下func_bt_message()中:case K_PLAY_PWR_USER_DEF://短按按下消息响应,单

2020-10-30 15:18:37 919

原创 通过同时双击左右耳恢复出厂设置

通过同时双击左右耳恢复出厂设置,单个耳机双击的时候响应按键处理,原理就是:通过按键传递消息,在多长的时间内满足条件就执行恢复出厂设置,不满足就响应按键处理。具体实现如下:首先就是创建变量:bsp_sys.h下sys_cb1_t结构体中: u8 double_mun_flag;//双击之后的清除标志 u8 fuer_doubleflag;//副耳双击的标志位 u8 zhuer_doubleflag;//主耳双击的标志位创建消息定义:bsp_key.h中:#define EVT_DOUBLE_

2020-10-30 10:50:32 1707 3

原创 降低耳机灯的亮度

如果有客户反馈灯光亮度太亮,可以通过修改元器件,使用低亮的灯来实现;或者是软件使用上拉电阻的形式降低亮度,具体实现如下:首先定义函数,在bsp_sys.c文件最上面定义:static u8 blue_led_sta = 0, red_led_sta = 0;//灯光亮灭标志位void led_cfg_set_on_ex(gpio_t *g)//控制灯光亮标志位函数处理{ if(g->num == 3){ //PB3 blue_led_sta = 1; } if(

2020-10-30 10:26:59 805 5

原创 将充电红灯长亮修改为红灯闪烁

这是一个客户的要求:将耳机的充电红灯长亮修改为充电红灯闪烁,充满灭灯。具体实现如下:首先就是创建变量:bsp_sys.h中sys_cb1_t结构体下:u8 charge_rled_change;//控制充电红灯闪烁由于充电灯控是在芯片底层实现,代码中没有充电灯控处理,通过配置及修改IO口的方法是无法实现将长亮修改为闪烁,只能通过中断直接控制IO口来处理:开中断:在bsp_sys.c下bsp_sys_init()中:if(CHARGE_DC_IN())//控制充电红灯闪烁,中断要在按键处理前面

2020-10-30 10:14:40 1005 1

原创 兰讯芯片修改为进入蓝牙模式未连接的时候先闪20次

这个是一个案子修改的一个小细节,描述如下:进入蓝牙模式未连接的时候先闪20次,然后再进入配置的灯光,配置为连接手机成功,所有灯光熄灭;未成功连接手机,闪烁20次之后变成红蓝交替闪烁(注意:未闪烁满20次,连接手机之后也要熄灭),具体修改如下:首先创建变量:bsp_sys.h下sys_cb1_t结构体中 u8 open_orange_falg;//控制连接过程计数 u8 orange_num_flag;//计数20次之后就到蓝牙模式下的灯光控制:func_bt.c中func_bt_status()

2020-10-30 09:55:07 455 5

原创 兰讯76A3芯片TWS配对后灭灯

最近客户要求在TWS配对之后要灭灯,但是试过很多方法都无法真正的将灯熄灭,后来解决了,修改具体如下:在func_bt.c 中 func_bt_status()下 ,while(1)循环中添加如下:if((!bt_tws_is_connected())||(bt_nor_is_connected())){ //耳机TWS没有配对或者未连接到手机,流程依旧 func_bt_disp_status();}else //当TWS连接之后关掉灯控{ //由于灯光控制是在底层的硬件中断中控制, //

2020-10-28 19:42:52 942 1

原创 4054 充电IC使用技巧---配合中科蓝讯AB5365B使用

首先呢,介绍一下TP4054这款芯片。TP4054 是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。其 SOT封装与较少的外部元件数目使得 TP4054 成为便携式应用的理想选择。充电电流在达到最终浮充电压之后降至设定值 1/10 时,TP4054 将自动终止充电循环。这就使得这个IC可以很好的应用到插卡的面条耳机或者音箱之中,这里详细讲解在面条耳机之中的应用(真实原因其实是由于中科蓝讯AB5365B等6系列的芯片没有内置充电模块,只能通过外围IC来实现充电,主要讲解TP4054与中科蓝讯AB5

2020-07-21 14:15:43 10486 13

原创 主机给副机传送消息

蓝牙对耳在一些配对提示音上是对耳播报,但是有些提示音仅有主耳进行播报,那么如何让仅主耳播报的提示音变成对耳同时播报呢?第一步:我们需要添加一个按键事件,这个按键事件会通过蓝牙传递给副耳,副耳会接收到这个消息,之后再进行下一步:bt_tws_user_key(0x16);//括号内的数字即为传递的参数,上面是0x16第二步:定义一个系统的消息,去处理第一步传送过来的下一步动作,Bsp_key...

2020-03-25 17:33:43 947

原创 蓝牙耳机芯片,苹果弹窗电量显示为0的解决方法

之前的蓝牙耳机重新都是默认电量为100%,但是后来添加了充电仓模块的程序之后,在选择使用一般充电仓的时候,手机弹窗就会0%,解决方法如下:更新之后,我们能够发现原厂在之前的基础上进行了更深一步的封装,你看不到弹窗的数组了,取而代之的是修改的渠道。具体操作如下:在bsp_ble.c中,u8 ble_get_house_bat(void){#if BT_TWS_NAME_MENU_EN ...

2020-03-12 17:50:35 5613 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除