TI论坛
直播中

李维嘉

8年用户 1513经验值
私信 关注
[问答]

AIC3254如何在自己的程序中修改AGC的噪声阈值以及关于AGC的各种延时?


  •   如题,我现在用自己的单片机控制AIC3254,现在想要做的是修改立体声AGC功能中的噪声阈值(noise threshold)和AGC的各种延时,如噪声恢复延时,反弹延时等:

    但是我直接修改页0的这几个寄存器的数值好像没有生效?


    以上是我的代码的一部分。直接修改页0第87个寄存器相应的位不生效,是不是还要别的寄存器要修改?

回帖(1)

刘强

2024-10-17 17:59:07
AIC3254是一款高性能的音频编解码器,支持AGC(自动增益控制)功能。要修改AGC的噪声阈值和各种延时,你需要按照以下步骤操作:

1. 首先,确保你已经正确初始化了AIC3254,包括设置正确的I2C地址、时钟和电源。

2. 要修改AGC的噪声阈值和延时,你需要访问AIC3254的寄存器。AGC相关的寄存器主要集中在页0(Page 0)。

3. 修改噪声阈值(noise threshold):
   - 寄存器地址:0x87(页0,寄存器87)
   - 噪声阈值位:位[7:0]
   - 将噪声阈值设置为你想要的值,例如:0x0F(15)

4. 修改AGC的各种延时:
   - 噪声恢复延时(Noise Recovery Time):寄存器地址0x8A(页0,寄存器8A),位[7:0]
   - 反弹延时(Ramp Down Time):寄存器地址0x8B(页0,寄存器8B),位[7:0]
   - 增益攻击延时(Gain Attack Time):寄存器地址0x8C(页0,寄存器8C),位[7:0]
   - 增益衰减延时(Gain Decay Time):寄存器地址0x8D(页0,寄存器8D),位[7:0]

   将这些寄存器的值设置为你想要的延时值。

5. 在修改寄存器值后,确保发送I2C写命令,以便将新的设置写入AIC3254。

6. 如果你发现修改寄存器值后没有生效,可能是因为以下原因:
   - I2C通信问题:检查I2C连接和通信是否正常。
   - 寄存器地址错误:确保你使用的寄存器地址是正确的。
   - 寄存器位设置错误:确保你设置的位是正确的。

以下是修改AGC噪声阈值和延时的示例代码(假设你使用的是C语言):

```c
// 设置页0
i2c_write(AIC3254_ADDR, 0x00, 0x00);

// 修改噪声阈值
i2c_write(AIC3254_ADDR, 0x87, 0x0F);

// 修改噪声恢复延时
i2c_write(AIC3254_ADDR, 0x8A, 0x10);

// 修改反弹延时
i2c_write(AIC3254_ADDR, 0x8B, 0x20);

// 修改增益攻击延时
i2c_write(AIC3254_ADDR, 0x8C, 0x30);

// 修改增益衰减延时
i2c_write(AIC3254_ADDR, 0x8D, 0x40);
```

请确保你的I2C写函数(如`i2c_write`)是正确的,并且能够成功地与AIC3254通信。如果问题仍然存在,请检查硬件连接和电源供应。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分