中科蓝讯蓝牙: 530X |
您所在的位置:网站首页 › 中科蓝讯蓝牙耳机芯片大全 › 中科蓝讯蓝牙: 530X |
目录 0. 如果没有声音, 可以打印查看 "数字音量" 和 "模拟音量" 是否正常 1. 530X, 532X 常用音量控制模块图 2. EQ模块前级增益 (有用到EQ才有效, 默认EQ或不启用EQ时,此增益为0DB) 3. 数字音量, 可打印DACVOLCON 低16位查看. 4. 模拟音量: 可打印AUANGCON3 低8位查看. (模拟音量表见后面) 5. 程序中对音量的总设置函数: bsp_change_volume(bsp_dac.c中). 6. 如果音量还小, 还可以留意VDDDAC电源配置电压是否正常 7. 模拟音量对应表 0. 如果没有声音, 可以打印查看 "数字音量" 和 "模拟音量" 是否正常调试过程中, 经常会遇到没有声音的情况, 可以直接打印一下"数字音量"和模拟音量. 建议在公共处理函数 func_process中增加如下printf_info打印, 1秒打印一次, 查看数字音量和模拟音量是否正常. 如果数字音量或模拟音量均是最小, 可以尝试调用dac_fade_in函数淡入声音(此函数会自动淡入数字音量和模拟音量). //530X,532X,536X,889X等都是这两个寄存器 #define AUANGCON3 SFR_RW (SFR1_BASE + 0x3f*4) //模拟音量,音量值查看其低7位, 对应增益见本文末尾模拟音量表 #define DACVOLCON SFR_RW (SFR1_BASE + 0x11*4) //数字音量,音量值查看其低16位, 最大值0x7FFF (0DB) AT(.text.func.bt) void printf_info(void) { static u32 ticks = 0; if (tick_check_expire(ticks,1000)) { //1000ms打印一次 ticks = tick_get(); printf("--------------->\nDACVOLCON = 0x%X , AUANGCON3 = 0x%X\n", DACVOLCON&0xFFFF,AUANGCON3&0x7F); } } AT(.text.func.process) void func_process(void) { WDT_CLR(); printf_info(); ...... } 1. 530X, 532X 等常用音量控制模块图530X/532X声音输出最大值可达到2.8V不失真(峰峰值,常规串电容双声道输出) 在配置工具Equalizer中, 可以设置EQ前级增益, 范围(-24~+12)DB 当音量小时, 可以提高此增益. 曾经遇到有台样机, 音量怎么也调不上去, 最后发现是生成的EQ文件, 前级增益配置太小了. 最大值为0x7FFF (对应0DB) //寄存器为 #define DACVOLCON SFR_RW (SFR1_BASE + 0x11*4) 程序中是调用dac_set_dvol 函数进行设置数字音量,参数范围(0~0x7FFF) 4. 模拟音量: 可打印AUANGCON3 低8位查看. (模拟音量表见后面)最大值为0x70, 对应+5DB 寄存器为#define AUANGCON3 SFR_RW (SFR1_BASE + 0x3f*4) 程序中是调用 dac_set_volume 设置模拟音量, 参数范围(0~59) 分别对应(-54~+5)DB增益 5. 程序中对音量的总设置函数: bsp_change_volume(bsp_dac.c中).在这个函数中, 可以看到, 按键调音量, 一般有两种做法: 1) 固定数字音量, 调音量时只调模拟音量. (SDK默认使用这种做法) 2) 固定模拟音量, 调音量只调数字音量.(需要打开宏 SYS_ADJ_DIGVOL_EN) AT(.text.bsp.dac) void bsp_change_volume(u8 vol) { #if !SYS_ADJ_DIGVOL_EN ///sys adjust dac analog volume u8 anl_vol = 0; if (vol 0) { anl_vol = dac_avol_table[vol] + sys_cb.anl_gain_offset; } dac_set_volume(anl_vol); } #else ///sys adjust dac digital volume u16 dig_vol = 0; if (vol |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |