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.

[参考译文] TLV320ADC6120:在 I2S 模式下、TLV320ADC6120未将音频通道分配到指定的时隙?

Guru**** 2381110 points
Other Parts Discussed in Thread: TLV320ADC6120
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1300707/tlv320adc6120-tlv320adc6120-is-not-assigning-audio-channel-to-designated-slot-in-i2s-mode

器件型号:TLV320ADC6120

您好!

TLV320ADC6120未使用该代码将音频通道分配到指定的时隙

//***** ASI_CH1通道1   

//位7-6 = 00 |保留写入00
// bit 5-0 = 000000 | 0d = TDM 为时隙0或 I2S、LJ 为左时隙0

// bin = 00000000十六进制= 0x00

ADC_I2C_Write (ASI_CH1、0x00);


//***** ASI_CH2通道2

//位7-6 = 00 |保留写入00
//位5-0 = 000001 | 1d = 1d = TDM 是时隙1或 I2S、

// bin = 00000001十六进制= 0x01

ADC_I2C_Write (ASI_CH2、0x01);

我认为设置代码有问题、I2S 模式下只有1个插槽填充了来自 ADC 的 SDO 数据

这里是 FSYNC 和 ADC SDout。

插槽0中有音频样本, 插槽1中无音频样本

我正在自动模式下使用 PLL、器件应该是主器件。 I2S 2通道。

这里是我的设置代码;

/**** 接通 ADC 电源***** /

/*等待电源稳定*/
osDelay (250u);/* 250ms。 */

/*使用 MOSFET 为 ADC 上电*/
hardware_adcPowerControl (真);

/*等待 ADC 上电*/
osDelay (250u);/* 250ms。 */

/*###################################### ADC TLV320ADC6120设置################################ */


//注册页面

//页0x00正常设置寄存器,
//页0x01 VAD 语音活动检测
//页0x02可编程系数寄存器:
//页0x03可编程系数寄存器:7-12
//页0x04混频器设置

/*转到第0页*/
ADC_I2C_Write (PAGE_CFG、0x00);


// SW_RESET 寄存器(地址= 0x1)[复位= 0x0]
ADC_I2C_Write (SW_RESET、0x01);

osDelay (20U);/* 10ms。 */

/*转到第0页*/
ADC_I2C_Write (PAGE_CFG、0x00);


//通过使用内部 Areg 对 P0_R2进行 I2C 写入来唤醒器件

//位7 = 1 | 1d =使用片上稳压器在内部生成的1.8 V Areg 电源(当 AVDD 为3.3V 时使用该设置)
// bits 6-5 = 00 |保留位;只写复位值0
// bits 4-3 = 01 | 0d = 3.5ms 的 VREF 快速充电持续时间(典型值)| 3d = 100ms 的 VREF 快速充电持续时间(典型值)
//位2 = 0 | 0d =禁用 I2C 广播模式
// bit 1 = 0 |保留位;写入0
//位0 = 1|1d =器件未处于睡眠模式

// bin 10001001十六进制0x81

ADC_I2C_Write (SLEEP_CFG、0x81);

osDelay (1U);/* 1ms。 */


//*********** GPIO_CFG0寄存器*****

//位7-4 = 1010 | 10d = GPIO1配置为主时钟输入(MCLK)
// bit 3 = 0 |保留位;写入0d
//位2-0 = 010 | 2d =驱动低电平有效和弱高电平有效

// bin 10100010十六进制= 0xA2

ADC_I2C_Write (GPIO_CFG0、0xA2);

//***** MST_CFG0寄存器*****************

//位7 = 1| 1d =器件处于主模式(BCLK 和 FSYNC 都由器件生成)
//位6 = 0 | 0d =启用自动时钟配置
//位5 = 0 | 0d =在自动时钟配置中启用 PLL
//位4 = 0| 0d =当在主模式下从器件传输时、不强制 GATE BCLK 和 FSYNC
//位3 = 0 | 0d = FS 是48kHz 的倍数(或子倍数)
//位2-0 =111 | 7d = 24.576 MHz // 1d = 12.288 MHz MCLK_FREQ_SEL

// bin = 10000001十六进制= 0x81 //自动时钟配置12.288mhz oscilator
// bin = 10000111十六进制= 0x87 //自动时钟配置24.576mhz oscilator

ADC_I2C_Write (MST_CFG0、0x81);


//***** MST_CFG1寄存器*****************


// bits 7-4 = 0100 | 4d = 44.1kHz 或48kHz FS_RATE 页0
// bits 3-0=0011|4D= 64|3D= FSYNC 周期内48:N BCLK 时钟的比率

// bin = 01000100十六进制= 0x44 64 bclks、fsync
// bin = 01000011十六进制= 0x43 fsync 中的48 bclk

ADC_I2C_Write (MST_CFG1、0x43);

/*转到第0页*/
// ADC_I2C_Write (PAGE_CFG、0x00);


//***** IN_CH_EN 寄存器输入通道配置卡

//位7 = 1 | 1d =通道1启用
//位6 = 1| 1d =通道2启用
//位5 = 0 | 0d =通道3被禁用
// bit 4 = 0 | 0d =通道4禁用
// bits 3-0 = 0000 |保留写入0000d

// bin = 11110000十六进制= 0xC0

ADC_I2C_Write (IN_CH_EN、0xC0);


//***** BIAY_CFG 寄存器

// 7位= 0 |保留写入0
// 6-4位= 000 | 0d =麦克风偏置设置为 VREF (2.750V、2.500V 或1.375V)
// 3-2位= 00 |保留写入00
// 1-0位= 00 | 0d = VREF 设置为2.75V、以支持差分输入2 VRMS 或单端输入1 VRMS

// bin = 00000000十六进制= 0x00

ADC_I2C_Write (BIAS_CFG、0x00);  

// CLK_SRC 寄存器(地址= 0x16)

//位7 = 0 | 0d = 0d = BCLK 用作音频根时钟源
//位6 = 0 | 0d = 0d = MCLK 频率基于 MCLK_FREQ_SEL (P0_R19)配置
// bit 5-3=011 | 1d = 256 12.288mhz | 3d = 512 ( 24.576mhz )
//位2 = 0 |保留写入0
//位1 = 0| 0d =不反转用于 FSYNC 生成的 BCLK 极性
// bit 0 = 0 |保留写入0。

//位00011000十六进制= 0x18

// ADC_I2C_Write (CLK_SRC、0x18);//在自动模式下启用 PLL,无需写入此地址?


//***** 具有32位/通道 SAI 字的 ASI_CFG0寄存器 I2S 模式

// bits 7-6 = 01 | 1d = I2S 模式
// bits 5-4 = 10| 3d =输出通道数据字长设置为32位| 2d =输出通道数据字长设置为24位
//位3 = 0 | 0d =根据标准协议 FSYNK 默认极性
//位2 = 0 | 0d =根据标准协议确定的 BCLK 默认极性
//位1 = 0 | 0d =默认边沿、符合位2中的协议配置设置(BCLK_POL)
// bit 0 = 0|0d =始终为未使用的周期发送0,为 hi-Z 使用1

// bin = 01110001十六进制= 0x70 // 32位字
// bin = 01100000十六进制= 0x60 // 24位字
// bin = 01000000 hex = 0x40 // 16位字

ADC_I2C_Write (ASI_CFG0、0x60);

// ASI_CFG1寄存器

// bit 7 = 0 |默认值0d =发送 LSB 一个完整周期
//bits 6-5 =00 |默认值0d =始终禁用总线保持器
// bits 4-0 = 00000 | 0d = ASI 数据 MSB 位置无偏移并遵循标准协议

// ADC_I2C_Write (ASI_CFG1、0x00);

//***** ASI_OUT_CH_EN 寄存器*****

//位7 = 1 | 1d =启用通道1输出时隙
//位6 = 1|1d =启用通道2输出时隙
//位5 = 0 | 0d =禁用通道3输出时隙
//位4 = 0 | 0d =禁用通道3输出时隙
// bits 3-0 = 0000 |保留写入0000


// bin = 11000000十六进制= C0

ADC_I2C_Write (ASI_OUT_CH_EN、0xC0);


//***** ASI_CH1通道1

//位7-6 = 00 |保留写入00
// bit 5-0 = 000000 | 0d = TDM 为时隙0或 I2S、LJ 为左时隙0

// bin = 00000000十六进制= 0x00

ADC_I2C_Write (ASI_CH1、0x00);


//***** ASI_CH2通道2

//位7-6 = 00 |保留写入00
//位5-0 = 000001 | 1d = 1d = TDM 是时隙1或 I2S、

// bin = 00000001十六进制= 0x01

ADC_I2C_Write (ASI_CH2、0x01);

//**** CH1_CFG0寄存器字段说明

//位7 = 0| 0d =麦克风输入,1d =线路输入
// bits 6-5 = 01 | 1d =模拟单端输入| 0d =模拟差分输入
//位4 = 0 | 0d =交流耦合输入| 1d =直流耦合输入
// BITS 3-2 = 0 | 0d =典型2.5-kΩ 输入阻抗| 1d =典型10 - kΩ 输入阻抗| 2d =典型20 - kΩ 输入阻抗
//位1 = 0 |保留写入0
// bit 0 = 0 | 0d = DRE/AGC/DRC 被禁用| 1d =根据寄存器108中位3的配置启用 DRE 或 AGC 或 DRC (P0_R108)

// bin = 00100000十六进制= 0x20

ADC_I2C_Write (CH1_CFG0、0x20);

//**** CH2_CFG0寄存器字段说明

//位7 = 0 | 0d =麦克风输入
// bits 6-5 = 01 | 1d =模拟单端输入| 0d =模拟差分输入
//位4 = 0 | 0d =交流耦合输入| 1d =直流耦合输入
// BITS 3-2 = 0 | 0d =典型2.5-kΩ 输入阻抗| 1d =典型10 - kΩ 输入阻抗| 2d =典型20 - kΩ 输入阻抗
//位1 = 0 |保留写入0
// bit 0 = 0 | 0d = DRE/AGC/DRC 被禁用| 1d =根据寄存器108中位3的配置启用 DRE 或 AGC 或 DRC (P0_R108)

// bin = 00100000十六进制= 0x20

ADC_I2C_Write (CH2_CFG0、0x20);


// CH1_CFG1寄存器

//位7 - 1 = 1010100 | 84d =通道增益设置为42dB
//位0 = 0 | 0d =正符号通道增益

// bin 10101000十六进制= 0xA8

ADC_I2C_Write (CH1_CFG1、0xA8);

// CH2_CFG1寄存器

//位7 - 1 = 1010100 | 84d =通道增益设置为42dB
//位0 = 0 |通道1增益符号配置。
// 0d =正符号通道增益

// bin 10101000十六进制= 0xA8

ADC_I2C_Write (CH2_CFG1、0xA8);

//***** PWR_CFG 为 ADC、MICBIAS PLL ETC 寄存器加电字段说明为什么

//位7 = 1 | 1d =加电 MICBIAS
//位6 = 1|1d =为所有启用的 ADC 和 PDM 通道加电
//位5 = 1| 1d = PLL 上电| 0d = PLL 断电
// bit 4 = 0 | 0d =通道上电、如果打开了任何通道记录、则不支持断电
//位3-2 = 00 | 0d =通道1和通道2在使用动态通道上电、启用断电功能时
// bit 1 = 0|0d =禁用 VAD,启用语音活动检测(VAD)算法
//位0 = 0 |保留使用0
//
// bin = 11100000十六进制= E0

ADC_I2C_Write (PWR_CFG、0xE0);// 0xE0为包括 PLL 在内的所有设备上电


//等待 ADC 上电
osDelay (250u);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BCLK 频率 输出是否为48kHz*48=2.304Mhz?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sanjay:

    是的,BCLK 的频率为48kHz*48=2.304Mhz,如屏幕截图所示。

    我也可以得到48kHz x 64 = 3.072Mhz (这实际上是我想要的)

    但我没有得到 SD 2 x 插槽(只有1 )  

    我尝试切换插槽分配、但 I2S 右侧没有任何内容。

    是否应该尝试2插槽 TDM?  我的 SAI 当前设置为使用 I2S。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很快回复

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../ben.cfg

    您是否想尝试文件中提供的设置?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将在20日再次进行这项工作,我将给这个配置尝试,然后让你知道它是否起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确定