This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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运行过程中不能够通过改变此寄存器实时调整音量吗?还是我哪一个环节出问题了?

  • 注意, 你把 RLS, LRS 置0了, 看一下手册吧
  • 前段时间忙别的工作了,今天按照您说的将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的过程中。