TI论坛
直播中

李泽坚

7年用户 1318经验值
私信 关注
[问答]

请问TLV320AIC3007如何配置寄存器才能MIC输入经ADC和数字滤波后直通DAC然后输出到耳机?


  • 我们想将从MIC输入采集的声音经过AIC3007数字滤波和EQ后得到20Hz~1000Hz之间的音频数据,MCU不采集数字音频信号,数字信号滤波后直接经DAC到耳机输出。在芯片参考手册上Page0 / Register 107的D3位可以将ADC数字转出到滤波器部分,但是要求在关闭DAC,这样就不能实现我们想要的功能。请问还有别的方式实现ADC到DAC的路径吗吗?如果有,麻烦给一下寄存器配置示例。

回帖(1)

殷谷光

2024-9-30 17:22:31
TLV320AIC3007是一款高性能的音频编解码器,支持多种音频输入和输出配置。要实现您描述的功能,即MIC输入经过ADC和数字滤波后直通DAC然后输出到耳机,您需要配置芯片的寄存器以设置正确的音频路径和滤波器参数。

以下是一些基本的寄存器配置步骤,以实现您的需求:

1. **配置ADC**:
   - 选择MIC作为输入源。
   - 设置ADC的采样率和分辨率。

2. **配置数字滤波器**:
   - 设置数字滤波器的参数,以实现20Hz~1000Hz的滤波。

3. **配置DAC**:
   - 选择DAC的输出模式。
   - 设置DAC的采样率和分辨率。

4. **配置I2C总线**:
   - 设置I2C总线的速率和模式。

5. **配置输出**:
   - 将DAC的输出连接到耳机。

具体的寄存器配置示例如下:

```c
// 假设您已经有了一个用于发送I2C命令的函数write_i2c_reg

// 配置MIC为输入源
write_i2c_reg(0x01, 0x04); // ADC Control 1, MIC作为输入

// 设置ADC采样率
write_i2c_reg(0x02, 0x00); // ADC Control 2, 采样率设置

// 设置数字滤波器参数
write_i2c_reg(0x03, 0xXX); // Digital Filter 1, 设置滤波器参数
write_i2c_reg(0x04, 0xXX); // Digital Filter 2, 设置滤波器参数

// 配置DAC输出
write_i2c_reg(0x10, 0x01); // DAC Control 1, 启用DAC

// 设置DAC采样率
write_i2c_reg(0x11, 0x00); // DAC Control 2, 采样率设置

// 配置I2C总线
write_i2c_reg(0x7F, 0x01); // I2C Control, 启用I2C

// 配置输出到耳机
write_i2c_reg(0x20, 0x01); // Output Control 1, 启用耳机输出
```

请注意,上述寄存器地址和值是示例,您需要根据TLV320AIC3007的数据手册来确定正确的寄存器地址和配置值。特别是数字滤波器的参数,需要根据您想要的滤波效果来设置。

关于您提到的Page0 / Register 107的D3位问题,如果关闭DAC会导致无法实现您想要的功能,您可能需要检查是否有其他寄存器可以配置,以便在DAC开启的情况下也能将ADC的输出直接路由到DAC。这通常涉及到查看数据手册中关于音频路径路由的章节。

如果手册中没有提供直接的解决方案,您可能需要考虑使用外部的数字信号处理器(DSP)或微控制器(MCU)来处理音频信号,然后再将其发送到DAC。这样可以在不修改AIC3007内部设置的情况下实现您的需求。
举报

更多回帖

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