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.

[参考译文] TLV320AIC3120:在同一 DIN 引脚上的 I²S Ω 回放和数字麦克风录音之间切换

Guru**** 2867080 points

Other Parts Discussed in Thread: TLV320AIC3120

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1635275/tlv320aic3120-switching-between-i2s-playback-and-digital-microphone-recording-on-the-same-din-pin

部件号: TLV320AIC3120

您好:

我在‑μ A 供电的应用中使用 TLV320AIC3120、在这类应用中需要‑进行非 2 μ A 同步操作:

·回放模式:DAC 有效、在 DIN 引脚上接收 I²S μ A 音频数据。

·录音模式:ADC 激活、读取连接到同一 DIN 引脚的数字麦克风((PDM 输出)。 GPIO1 为麦克风提供 ADC_MOD_CLK。

我知道同时播放+数字麦克风是不可能的,因为 DIN 是共享的。 不过、我计划通过重新配置寄存器和 tri‑、说明切换到录制时主机的 I²S 输出来切换模式。

我的问题:

1.硬件是否完全支持这种切换方法? 是否有任何内部锁存器或时序限制可能导致干扰或在更改 DIN 的功能时需要完全复位?

2.在不破坏器件状态的情况下将 DIN 从 I²S Ω 输入(用于 DAC)更改为数字麦克风数据输入(用于 ADC)的正确寄存器序列是什么?

  ·在重新配置之前、我是否需要将 DAC 完全断电?

  ·我是否需要禁用 PLL 或时钟分频器?

I²S 切换回回放时,恢复 DIN 为‑输入并重新启用 DAC 的正确顺序是什么?

4.是否存在任何隐藏限制(例如,数字麦克风模式需要特定的 ADC 处理块或 AOSR,这可能与稍后的播放采样率相冲突)?

5.在录音模式下、我是否需要一个外部模拟开关来将主机的 I²S DOUT 与 DIN 物理隔离、或者我是否可以简单地将 tri‑状态设置为主机的 DOUT 引脚并依赖编解码器的输入缓冲器?

非常希望提供有关潜在问题(点击,弹出,闩锁‑UP)的任何指导、示例寄存器序列或警告。

系统详细信息:

·MCLK = 12.288MHz

·所需采样率= 48kHz(包括播放和录制)

·主机微控制器:STM32H757(播放期间为 I²S μ s 从模式、DOUT tri‑规定为记录)

·数字麦克风:GPIO1 上带有时钟的标准 PDM、DIN 上有数据

 

谢谢你。

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

    您好、

    我需要在星期一上写出一个寄存器配置示例、抱歉耽误了您的时间。 然后我可以在本周晚些时候进行测试。 芯片应该通过寄存器写入来支持此功能。 如果时钟保持不变、PLL 或分频器就不会出现问题。 我们只需关闭 DAC、使用数字麦克风输入打开 ADC、就可以按原样运行。 对于 ADC 和 DAC、可以在初始化时设置时钟设置、而无需 ADC 开启。

    模拟开关问题可能取决于 MCU 及其可能性、而不是编解码器。 我认为、如果 DOUT 上没有信号(0V 时)并且有来自数字麦克风的信号、则应该可以正常工作。 如果没有来自数字麦克风的信号(通常为 0V)并且有来自 DOUT 的信号、也是如此。 如果未激活的输出设置为高电平、您会遇到问题、那么当它们加在一起时、输出将始终为高电平、有时是高电平的两倍、这可能会导致器件损坏。  

    停止和启动音频系统时总是有爆裂声。 如果您担心这个问题、我建议通过 I2C 将 DAC 静音、然后切换到 ADC、然后取消输入静音、反之亦然、以便从 ADC 切换到 DAC。 静音和取消静音时可能仍会出现一个小的砰砰声、但它不会超过 AVDD。

    此致、
    Mir

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

    您好、

    从数据表中的脚本中、我刚刚添加了启用数字麦克风所需的一些更改、其中 GPIO1 作为 PDM 时钟、DIN 作为 PDM 输入。 在这些脚本之间切换时、可以避免软件重置。

    # COMBINED
    w 30 00 00 #page 0
    w 30 01 01 #Initiate SW reset
    
    w 30 04 03 # PLL_clkin = MCLK,codec_clkin = PLL_CLK
    w 30 06 08 # J = 8
    w 30 07 00 00 # D = 0000, D(13:8) = 0, D(7:0) = 0
    w 30 05 91 # PLL Power up, P = 1, R = 1
    w 30 0B 88 # NDAC is powered up and set to 8
    w 30 0C 82 # MDAC is powered up and set to 2
    w 30 0D 00 80 # DOSR = 128, DOSR(9:8) = 0, DOSR(7:0) = 128
    w 30 12 82 # NADC = 2, divider powered on
    w 30 13 88 # MADC = 8, divider powered on
    w 30 14 80 # AOSR = 128
    
    w 30 1B 00 # mode is i2s, wordlength is 16, slave mode
    
    
    # DAC settings
    w 30 3C 10 #select DAC DSP Processing Block PRB_P16
    w 30 00 08
    w 30 01 04 #enable adaptive filtering for dac
    
    w 30 00 01 # (a) Set register page to 1
    w 30 1F 04 # (b) Program common-mode voltage (defalut = 1.35 V)
    
    w 30 21 4E # De-pop, Power on = 800 ms, Step time = 4 ms
    w 30 23 40 # DAC routed to HPOUT
    
    w 30 28 06 # Unmute HPOUT, set gain = 0 db
    w 30 2A 1C # Unmute Class-D, set gain = 18 dB
    
    w 30 1F 82 # HPOUT powered up
    w 30 20 C6 # Power-up Class-D drivers
    w 30 24 92 # Enable HPOUT output analog volume, set = -9 dB
    w 30 26 92 # Enable Class-D output analog volume, set = -9 dB
    
    
    #ADC settings
    w 30 3d 04 # RB_R4
    w 30 33 28 #GPIO1 = ADC_MOD_CLK output for dig mic
    
    w 30 00 01 # (a) Set register Page to 1
    w 30 2e 0a # Micbias = AVDD
    
    w 30 30 80 # MICPGA P = MIC1LP 20kohm
    w 30 31 80 # MICPGA M - CM 20kohm
    
    
    
    # FOR DAC ONLY
    w 30 00 00 #page 0
    w 30 51 00 # power down ADC
    w 30 3F 94 # Powerup DAC (soft step enabled)
    w 30 41 D4 # DAC gain = -22 dB
    w 30 40 04 # Unmute DAc
    
    # FOR ADC ONLY
    w 30 00 00 #Page 0
    w 30 3f 00 #power down DAC
    w 30 51 a8 #power up adc, dig mic input is from DIN pin, enable dig mic
    w 30 52 00 # UNMUTE ADC

    请注意、最后我仅包含了 ADC 部分和仅 DAC 部分、但在此之前、我相信您可以运行脚本的所有其他部分。 当 DAC 通电、因此 I2S 是输入时、可以运行“仅用于 DAC“部分;当 ADC 通电且 PDM 是 DIN 时、可以运行“仅用于 ADC“部分。

    此致、
    Mir