TI中文支持网
TI专业的中文技术问题搜集分享网站

AIC23音频芯片,为什么无法实时调整音量?

我想通过写AIC23的左右耳机输出音量控制寄存器Left channel headphone volume control和 Right channel headphone volume control,实时调整输出音量大小,可是在我在程序某处加入语句 AIC23_Write(AIC23_LT_HP_CTL, 0x7F);  结果发现没有语音输出,而是输出“嘟——”的声音,我跟踪了一下程序,发现程序卡在 I2C_Write函数里的红色部分。

// Transmit data
for (i = 0; i < count ; i++) {
Write(pI2C -> icdxr, bytedata[i]);
while(!(pI2C -> icstr & ICSTR_ICXRDY));
}

请问AIC23运行过程中不能够通过改变此寄存器实时调整音量吗?还是我哪一个环节出问题了?

user151383853:

注意, 你把RLS, LRS 置0了,看一下手册吧

js jiang:

回复 user151383853:

前段时间忙别的工作了,今天按照您说的将LRS和RLS置“1”,发现还是没有解决问题,我感觉貌似AIC23的寄存器不能在循环里连续写,不知道是否是哪里设置的不对。

可能我没说明白我的情况,是这样的:我现在想做如下实验:

设定一个计数次数,连续播放音频,然后再调整音量,以新的音量播放音频,不停的循环下去。
for(; 😉
{AIC23_Write(AIC23_LT_HP_CTL, 0x7F);AIC23_Write(AIC23_RT_HP_CTL, 0x7F);
for(i=0;i<COUNT1;i++){音频播放代码;}
AIC23_Write(AIC23_LT_HP_CTL, 0x50);//改变左声道音量大小AIC23_Write(AIC23_RT_HP_CTL, 0x50);//改变右声道音量大小
for(i=0;i<COUNT2;i++){音频播放代码;}……
}

结果就会出现改变音量时,卡在I2C总线控制AIC23的过程中。

赞(0)
未经允许不得转载:TI中文支持网 » AIC23音频芯片,为什么无法实时调整音量?
分享到: 更多 (0)