杰理-添加按键提示音
AD6973 使用 PB2 作为 LED 控制的 IO 口通常情况下,PB2 是用于第二个内置触摸功能的 IO 口,当前芯片的 SDK 将 PB2 配置为入耳检测的 IO 口。
用户可通过调整宏定义来开启或关闭入耳检测功能。
在一个抄板项目中,LED 控制被分配到了 PB2。在完成 LED 配置后,实际并无灯效输出。
其原因是:系统设备初始化时,先初始化了 LED,但随后又将 PB2 重新设置为上拉输入模式,导致 LED 功能失效。
1234567891011121314static void board_devices_init(void){#if TCFG_PWMLED_ENABLE pwm_led_init(&pwm_led_data); // 先初始化PWM LED,使用PB2#endif// ... 其他代码 ... //for touch key EARIN - 这里是问题所在! gpio_set_direction(IO_PORTB_02, 1); // 将PB2设置为输入模式 gpio_set_pull_up(IO_PORT ...
AC7106 放入2.4V维持电压充电仓内自动关机最近在使用杰理AC7106芯片开发TWS耳机项目时,我们遇到了在放入带有2.4V维持电压的充电仓时耳机自动关机的现象。
充电仓维持电压工作机制维持电压目的:耳机出入仓检测原理:VOUT输出2.4V电压,J8、J9分别为充电仓的正负极充电顶针,耳机放入充电仓相当于串入一个负载电阻(耳机端设置的下拉电阻),通过检测耳机的分压来确定耳机是否在仓内。
耳机充电检测机制在AC7106的SDK中,充电检测主要通过 LDO5V_DET 信号来判断。系统会根据电压值将充电状态分为三种情况:
正常插入 (ldoin > VBat):执行 charge_ldo5v_in_deal() 函数
维持电压 (0.6V < ldoin < VBat):执行 ldo5v_keep_deal() 函数
正常拔出 (ldoin < 0.6V):执行 charge_ldo5v_off_deal() 函数
问题出现在第二种情况,即维持电压状态下的处理逻辑。
事件处理流程当耳机检测到维持电压时,系统会触发CHARGE_EVENT_LDO5 ...
蓝牙开发
未读AC7106校验码读取1. 核心函数调用项目中通过sdfile_get_burn_code函数获取校验码:
1u8 *p = sdfile_get_bn_code(&crc_temp_len);
该函数返回指向校验码数据的指针,并通过参数返回数据长度。
2. 数据结构解析校验码数据具有特定结构,由填充区域、有效校验码和结束符组成:
1234┌──────────────────────────────────────────────────────┐│ 填充区域(8字节) │ 有效校验码(6字节) │ 结束符(2字节) ││ 0xFF 0xFF ... │ CD 5D 0F 0F 87 C2 │ 0x00 0x00 │└──────────────────────────────────────────────────────┘
实际代码中,需要跳过前面的8字节填充区域获取有效校验码:
1234567891011121314151617// 添加打印校验码的代码{ u8 temp_len; u8 *p = sdfile ...
延时方式汇总指令数延时(浪费cpu资源)1234void delay(unsigned int);delay(100); //执行100个nop//受系统频率影响,同样的语句,实际延时时间波动很大
按照系统时钟换算指令数延时(浪费cpu资源)12345678910111213141516171819// 小于10us的执行不精准,不同系统频率下需要自行调整div值AT_VOLATILE_RAM_CODEvoid delay_us_by_nop(u32 usec) { u32 sys = clk_get("sys"); u32 cnt, div; if(usec == 1) { div = 30;} else if(usec == 2){ div = 12;} else if(usec == 3){ div = 8; } else if(usec < 10){ div = 6; } else ...
蓝牙开发
未读AC7006定时器的使用1.TWS对耳没有配对一段时间后(一分钟)关机12345678//定时器的应用//添加宏 board_ac700n_demo_cfg.h#define TCFG_PAIR_AUTO_SHUT_DOWN_TIME 60 //对耳没有配对关机时间//使用定时器timeout,超过时间后关机//用于打开和关闭定时器:void sys_pair_auto_shut_down_enable(void)void sys_pair_auto_shut_down_disable(void)
123456789101112131415161718//bt_tws.cstatic u16 pair_timer = 0;static void sys_pair_auto_shut_down_deal(void *priv){ printf("%s\n", __func__);#if TCFG_USER_TWS_ENABLE if (get_bt_tws_connect_status() == 0) //对耳没有连 ...
蓝牙开发
未读AC7106修改频偏使用以下函数进行频偏修改,可同时修改edr和ble,调用位置如图:
1234extern void bt_osc_offset_ext_save(s32 offset);bt_osc_offset_ext_save(-55);//参数跟bt_osc_offset_set规则一致,特别注意此函数需要全擦才能清除//参数使用说明:如果测试盒测试到未修改频偏前数值是+20 ,那么就填bt_osc_offset_ext_save(20); 如果测试到是-20 那么就填bt_osc_offset_ext_save(-20);
高低电平通信新增文件 ldoin_commu.c12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419 ...
蓝牙开发
未读AC7006多EQ文件切换12345678910111213141516171819202122232425262728293031323334353637383940u8 curr_eq_index = 0;const u8 *eq_file_list[] = { (u8 *)SDFILE_RES_ROOT_PATH"norm.bin", (u8 *)SDFILE_RES_ROOT_PATH"norm_p.bin", (u8 *)SDFILE_RES_ROOT_PATH"bass.bin", (u8 *)SDFILE_RES_ROOT_PATH"bass_p.bin", (u8 *)SDFILE_RES_ROOT_PATH"light.bin", (u8 *)SDFILE_RES_ROOT_PATH"light_p.bin",};/** * @brief 切换EQ效果文件的接口 * * @param inde ...
杰理认证相关频偏修改700系列:在app_main()函数中调用void bt_osc_offset_ext_updata(s32 offset),同时修改edr跟ble的频偏
701系列:在app_main()函数中调用void bt_osc_offset_ext_save(s32 offset),同时修改edr跟ble的频偏
发射功率修改可以在配置工具中按下图修改经典发射功率等级,修改保存之后,需重新运行tools\download.bat 的批处理文件进行升级
实际到程序中,会在下图位置读取配置工具参数后对功率等级进行配置,也可直接修改下图位置bt_max_pwr_set函数参数修改功率。
最大功率不够问题程序有两张功率表,正常程序默认使用高功率表,配置跑BQB 和 FCC模式下会换成低功率表。最高功率不够的情在源码修改下图位置固定功率等级(最高10),固定等级后会换回原本的高功率表。
(注:此处固定功率等级后,发射功率将固定,FCC上位机无法再修改)
开启DUT模式123//在蓝牙初始化完成之后调下面接口即可extern void bredr_set_dut_enble ...





























