我想通过写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的过程中。