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.

[参考译文] PCM6140-Q1:音频路由

Guru**** 2771175 points

Other Parts Discussed in Thread: TLV320AIC3263, PCM6140-Q1

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1609462/pcm6140-q1-audio-routing

器件型号: PCM6140-Q1
主题中讨论的其他器件: TLV320AIC3263

我正在使用 i.MX8MQ SAI2(时钟主器件)→TLV320AIC3263→PCM6140 在中 TDM 时钟转发架构 。 TLV320AIC3263 不使用 DSP/音频处理、仅充当 时钟和 TDM 数据路由器

在实施之前、我想澄清几个关键点:

  • 使用 TLV320AIC3263 作为纯时钟转发器是否受支持且可靠 、其中:

    • ASI1 BCLK/WCLK 从器件输入

    • ASI2 输出 相同的 BCLK/WCLK (无 PLL、无 DSP)

    • 时钟转发仅通过执行 B0_P4_R26/B0_P4_R27

  • ASI2→ASI1 TDM 数据路由是否绕过所有内部 DSP/FIFO 逻辑 或者是否有隐藏的缓冲区或定时对齐阶段可以改变 TDM 插槽边界?

  • 是否存在任何时钟域或相位对齐问题 将 WCLK/BCLK 从 ASI1 转发到 ASI2 时、尤其是对于多槽 TDM(例如 4 个以上通道)?

  • 是否有建议的复位/初始化顺序 为了确保在 PCM6140 开始驱动 TDM 数据之前稳定的时钟转发?

  • 设置时:

    • ASI2 BCLK/WCLK AS 输出

    • ASI2_BDIV_CLKIN = ASI1 BCLK

    是否需要其他寄存器 来完全锁定时钟路径并避免意外门控或重新计时?

  • TLV320AIC3263 已在类似设计中经过验证 在何处、它将时钟转发到外部 TDM ADC(如 PCM6140)并将 TDM 数据路由回主机?

非常感谢任何 TI 参考设计、示例寄存器脚本或已知限制。



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

    您好、

    对不起这里的延迟,给我一天给你一个很好的答复.

    此致、
    Mir

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

    再次大家好、

    在上一主题中、我们讨论了是否可以支持 4 个麦克风。 我正尝试通过对硬件进行少量更改并使用新的编解码器来实现此目的。

    已过了一段时间、但我现在又有空、需要尽快解决。

    由于我找不到 PCM6140 的评估板、因此测试某些方面对我来说似乎相当具有挑战性。

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

    您好、

    首先、我可以问您为什么需要时钟转发器? 您不能在输入时钟和 PCM6140 时钟引脚之间添加跳线吗? 您可以通过以下途径获取 PCM6140 EVM: https://www.ti.com/tool/PCMX140Q1EVM-PDK

    无论哪种方式、您都可以使用 AIC3263 中的以下寄存器执行该时钟和数据直通:

    第 4 页寄存器 15:DOUT1 来自 ASI2 数据输入(引脚对引脚环回)
    第 4 页记录 23:ASI2 数字音频输出数据源自 ASI1 数字输入数据(asi1 至 asi2 环回)->不确定您是否要朝此方向前进、这可能不是必需的
    第 4 页寄存器 26:设置 ASI2 BCLK 的 WCLK2 引脚输出和 ASI2 BCLK 的 BCLK2 输出(控制器模式)
    第 4 页寄存器 30:asi2 位时钟输出多路复用器、将 asi21 bclk 输出设置为 asi1 位时钟输入、并将 asi2 wclk 输出设置为 asi1 字时钟输入

    此直通不应使用任何处理、因此不应更改其中任何处理的时间。 它们是引脚对引脚环回。  
    我不知道我们有任何进行这种操作的示例设计、但从概念上讲、这并不是第一次。 通过 TDM 总线上的菊花链向器件添加更多通道是很常见的、但通常使用一个器件作为另一个器件的代理、因为 PCM6140 应具有自己的时钟引脚、除非您已经设计了电路板、现在需要弄清楚如何绕过它?
    此致、
    Mir
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    我认为使用 AIC3263 作为时钟和数据转发器应该能够工作 — 特别是如果您以前已经让它使用 GUI。 我相信您的 SOM 中缺少一些寄存器写入内容、我们可以找出并修复这些内容以使其正常工作。  

    我了解了您的寄存器设置、卡住的主要是寄存器 0x1E 中的 ASI2 WCLK 输出设置为 ASI3 WCLK 输入、该寄存器应设置为 0x13 以将 ASI1 时钟输入路由到 ASI2 输出。 下一个卡滞情况是寄存器 0x1a 应设置为 0x25、这将始终使 ASI2 BCLK 和 WCLK 缓冲器保持上电、即使您没有使用 ASI2 进行实际数据处理也是如此。

    您可能需要做的另一件事是为 ASI2 上 BCLK 的 NDIV 和 WCLK 上电、这是通过寄存器 0x1c 和 0x1d 设置到 0x81 来完成的。 不过、请先尝试其他建议、我认为通过 NDIV 发送时钟的可能性很低。

    请告诉我这是否会产生影响。 只是为了确保、您能够在 BCLK1 和 WCLK1 引脚上测量正确的输入时钟?

    此致、
    Mir

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

    您好、

    在应用您的建议之前、我已经能够对时钟进行布线。 我已经回顾并更新了您提到的要点:在寄存器 0x1E 中、我添加了 WCLK 布线和 BCLK。

    i2cset -r -f -y 1 ${TLV ADDR}0x1E 0x13  
    i2cset -r -f -y 1 ${TLV ADDR}0x1A 0x25

    在该阶段、唯一剩余的步骤是使 PCM6140 同时输出 4 通道 TDM 数据。 遗憾的是、PCM6140 评估板似乎缺货、因此我无法使用 PurePath Console。

    您能否向我介绍此场景的任何可靠配置示例或参考设置?

    下面是供参考的最新脚本:

    # i.MX8MQ SAI2 (MASTER)
    #    ├── MCLK ──► TLV320 ASI1 (CLK IN)
    #    ├── BCLK ──► TLV320 ASI1
    #    ├── WCLK ──► TLV320 ASI1
    #    └── SD   ──► TLV320 ASI1
    
    # TLV320 (PASS / ROUTER MODE)
    #    ├── ASI1 → internal clock source
    #    └── ASI2 → clock + data OUTPUT
    
    # TLV320 ASI2
    #    ├── BCLK ──► PCM6140
    #    ├── WCLK ──► PCM6140
    #    └── SD   ──► PCM6140
    
    # TLV320AIC3263 I2C address
    TLV_ADDR=0x18
    # PCM6140 I2C address
    PCM6140_ADDR=0x4F
    
    # ============================================================================
    # TLV320AIC INIT – CLOCK ROUTING + TDM MODE
    # ASI1 : CLOCK INPUT  (i.MX8MQ SAI2)
    # ASI2 : CLOCK OUTPUT (PCM6140)
    # ============================================================================
    
    echo "TLV320AIC3263 Configuration starting..."
    
    #######################################################
    # Software Reset
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x00        # Page Select Register (Select Page 0)
    i2cset    -f -y 1 ${TLV_ADDR} 0x01 0x01        # Software Reset Register (Set to 1 to reset the codec)
    sleep 0.001
    
    #######################################################
    # Audio Serial Interface #1 Configuration
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x04        # Page Select Register (Select Page 4)
    
    # Audio Serial Interface 1, Audio Bus Format Control Register
    # TDM mode, 32-bit word length, I2S/TDM standard framing
    i2cset -r -f -y 1 ${TLV_ADDR} 0x01 0x60     
    
    # Audio Serial Interface 1, WCLK and BCLK Control Register
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0A 0x00       # ASI1 WCLK/BCLK input
    
    # Audio Serial Interface 1, Data Output
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0F 0x02  # B0_P4_R15 : DOUT1 = DIN2 Bypass
    
    #######################################################
    # Audio Serial Interface #2 Configuration
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x04   # Page 4
    i2cset -r -f -y 1 ${TLV_ADDR} 0x11 0x20   # ASI2 Bus Format Control Register, TDM mode, 16-bit word length, I2S/TDM standard framing
    i2cset -r -f -y 1 ${TLV_ADDR} 0x15 0x04   # ASI2 Bus Format Control Register, TDM mode, 32-bit word length, I2S/TDM standard framing
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1F 0x01   # ASI2 Data Output (ASI1 Data Input)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1E 0x13   # ASI2 BCLK and WCLK Output (ASI2_BCLK_OUT = ASI1 Bit Clock Divider Output, ASI2_WCLK_OUT = ASI2 Word Clock)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1A 0x25   # ASI2 BCLK and WCLK Control (BLCK2 input, WCLK2 input)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x18 0x00   # DAC Output Control (leave DAC path off for clock-routing only)
    
    #######################################################
    # Clock Configuration
    # MCLK = 11.2896 / 12.288 MHz
    # FS   = 44.1 / 48 kHz
    # I2S Slave
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x00   # Page 0
    i2cset -r -f -y 1 ${TLV_ADDR} 0x04 0x00   # DAC_CLKIN = MCLK
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0B 0x81   # NDAC = 1
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0C 0x81   # MDAC = 1
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0D 0x00   # DOSR[15:8]
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0E 0x80   # DOSR[7:0] = 128
    
    #######################################################
    # Output Channel Configuration
    #######################################################
    
    i2cset -r -f -y 1 ${TLV_ADDR} 0x51 0xC0 # Power-up LDAC/RDAC
    
    # Unmute ADC
    i2cset -r -f -y 1 ${TLV_ADDR} 0x52 0x00 # Unmute ADC
    
    echo "TLV320AIC3263 Configuration done!"
    
    # ============================================================================
    # PCM6140 Configuration 
    # 4 microphone input, TDM mode
    # 32-bit word length
    # PCM6140 (ASI1) -> TLV320AIC3263 (ASI2)
    # ============================================================================
    echo "PCM6140 Configuration starting..."
    
    #######################################################
    # Software Reset & Wake-up
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x00 0x00   # Page Select = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x7F 0x00   # Book Select = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x01 0x01   # Software reset
    sleep 0.001
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x02 0x81   # Wake-up device, use internal AREG
    
    #######################################################
    # Input Source Configuration (Analog Inputs)
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x3C 0x00  # CH1_CFG0 = Analog
    i2cset -f -y 1 ${PCM6140_ADDR} 0x41 0x00  # CH2_CFG0 = Analog
    i2cset -f -y 1 ${PCM6140_ADDR} 0x46 0x00  # CH3_CFG0 = Analog
    i2cset -f -y 1 ${PCM6140_ADDR} 0x4B 0x00  # CH4_CFG0 = Analog
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0B 0x00  # ASI_CH1: slot 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0C 0x01  # ASI_CH2: slot 1
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0D 0x02  # ASI_CH3: slot 2
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0E 0x03  # ASI_CH4: slot 3
    
    #######################################################
    # ASI / TDM Configuration
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x07 0x01  # ASI_CFG0 ASI_FORMAT = TDM, ASI_WLEN = 16 bits
    i2cset -f -y 1 ${PCM6140_ADDR} 0x08 0xA0  # ASI_CFG1 TX_OFFSET = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x09 0x00  # ASI_CFG2 ASI_ERR = 0, ASI_ERR_RCOV = 0
    
    #######################################################
    # Channel Enable, Power-up Configuration
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x73 0xF0   # Enable ADC Channels 1–4
    i2cset -f -y 1 ${PCM6140_ADDR} 0x74 0xF0   # Enable ASI Output Slots for Ch1–Ch4
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x75 0xE0   # Power-up ADC / MICBIAS / PLL
    
    
    
    # Get Channel Status
    echo "Channel Status (DEV_STS0): $(i2cget -f -y 1 ${PCM6140_ADDR} 0x76)"
    echo "Channel Status (DEV_STS1): $(i2cget -f -y 1 ${PCM6140_ADDR} 0x77)"

    提前感谢您的指导!


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

    您好、

    那么、您能进一步解释一下这个问题吗? 看起来有数据通过、并非所有通道都通过? BCLK 和 WCLK 的频率是多少? 根据数据表中的示例脚本、PCM6140 脚本看起来没有问题。 需要检查的一点是 PCM6140 默认设置为 32 位 TDM 模式、但 AIC3263 脚本具有不明确的协议模式、因为 ASI1 和 ASI2 设置不同、并且两者都是 16 位模式。

    我建议将第 4 页中的寄存器 0x01 更改为 0x38、这样会将 DSP 模式设置为 32 位、寄存器 0x11 也是如此(设置为 0x38)。 由于 ADC 和 DAC 时钟相同、您可以删除寄存器 0x15 行。 在我们较新的器件上、DSP 模式等效于 TDM 模式。

    然后、确保 MCU 输出的 BCLK 足以支持 4 个通道、即 6.144MHz 为 48kHz (48kHz * 4 * 32)。 如果您打算使用 16 位、那么我们可以更改前面提到的寄存器、并更改 PCM6140 上的页 0 寄存器 0x07 以更改默认位深度。

    此致、
    Mir

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

    我目前正在使用 PCM6140-Q1、并且 SDOUT 线路上持续出现“冻结“问题。 我正在从笔记本电脑的 AUX 输出馈送差分模拟信号、我已使用示波器进行了验证。 但我注意到、我的 BCLK 输入不稳定、在 6.079MHz 和 6.172MHz 之间波动(抖动/漂移约为 100kHz) 。 此时钟的不稳定是否会导致内部 PLL 失去锁定并冻结数字抽取滤波器?

    即使器件报告处于活动模式 (DEV_STS1 = 0xE0) 并在记录的前 1-2 秒内生成数据、SDOUT 线路最终也会一直处于静态状态。 我已经尝试禁用总线错误检测 ()ASI_CFG2 (0x09) = 0x20 并设置一个激进的高通滤波器0x6B = 0x03 () 以防止直流饱和、但冻结仍然存在。 这种行为是否表明时钟源的不稳定完全超出了 PCM6140-Q1 的抖动容差范围、或者是否可能缺少特定的寄存器配置、以使器件更能抵抗此类漂移?

    我的最新脚本

    # i.MX8MQ SAI2 (MASTER)
    #    ├── MCLK ──► TLV320 ASI1 (CLK IN)
    #    ├── BCLK ──► TLV320 ASI1
    #    ├── WCLK ──► TLV320 ASI1
    #    └── SD   ──► TLV320 ASI1
    
    # TLV320 (PASS / ROUTER MODE)
    #    ├── ASI1 → internal clock source
    #    └── ASI2 → clock + data OUTPUT
    
    # TLV320 ASI2
    #    ├── BCLK ──► PCM6140
    #    ├── WCLK ──► PCM6140
    #    └── SD   ──► PCM6140
    
    # TLV320AIC3263 I2C address
    TLV_ADDR=0x18
    # PCM6140 I2C address
    PCM6140_ADDR=0x4F
    
    # ============================================================================
    # TLV320AIC INIT – CLOCK ROUTING + TDM MODE
    # ASI1 : CLOCK INPUT  (i.MX8MQ SAI2)
    # ASI2 : CLOCK OUTPUT (PCM6140)
    # ============================================================================
    
    echo "TLV320AIC3263 Configuration starting..."
    
    #######################################################
    # Software Reset
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x00        # Page Select Register (Select Page 0)
    i2cset    -f -y 1 ${TLV_ADDR} 0x01 0x01        # Software Reset Register (Set to 1 to reset the codec)
    sleep 0.001
    
    #######################################################
    # Audio Serial Interface #1 Configuration
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x04 # Page Select Register (Select Page 4)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x01 0x38 # ASI1 ASI Bus Format Control, TDM mode, 32-bit word length
    i2cset -r -f -y 1 ${TLV_ADDR} 0x02 0x01 # Left Channel 1 Bit Delay TX Offset(DSP_A için)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x03 0x00 # Right Channel 0 Bit Delay TX Offset
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0A 0x00  # ASI1 WCLK/BCLK input
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0F 0x02  # Audio Serial Interface 1, Data Output
    
    #######################################################
    # Audio Serial Interface #2 Configuration
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x04   # Page 4
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0F 0x02   # ASI2 Data Output (ASI1 Data Input)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x11 0x38   # ASI2 ASI Bus Format Control, TDM mode, 32-bit word length
    i2cset -r -f -y 1 ${TLV_ADDR} 0x12 0x00   # 0 bit delay (PCM6140 uyumu)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x17 0x03   # ASI2 Input to ASI1 Direction
    i2cset -r -f -y 1 ${TLV_ADDR} 0x15 0x00   # ASI2 ADC Bus Format Control, TDM mode, 32-bit word length
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1F 0x01   # ASI2 Data Output (ASI1 Data Input)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1E 0x13   # ASI2 BCLK and WCLK Output (ASI2_BCLK_OUT = ASI1 Bit Clock Divider Output, ASI2_WCLK_OUT = ASI2 Word Clock)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x1A 0x25   # ASI2 BCLK and WCLK Control (BLCK2 input, WCLK2 input)
    i2cset -r -f -y 1 ${TLV_ADDR} 0x18 0x00   # DAC Output Control (leave DAC path off for clock-routing only)
    
    #######################################################
    # Clock Configuration
    # MCLK = 11.2896 / 12.288 MHz
    # FS   = 44.1 / 48 kHz
    # I2S Slave
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x00 0x00   # Page 0
    i2cset -r -f -y 1 ${TLV_ADDR} 0x04 0x00   # DAC_CLKIN = MCLK
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0B 0x81   # NDAC = 1
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0C 0x81   # MDAC = 1
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0D 0x00   # DOSR[15:8]
    i2cset -r -f -y 1 ${TLV_ADDR} 0x0E 0x80   # DOSR[7:0] = 128
    
    #######################################################
    # Output Channel Configuration
    #######################################################
    i2cset -r -f -y 1 ${TLV_ADDR} 0x51 0xC0 # Power-up LDAC/RDAC
    i2cset -r -f -y 1 ${TLV_ADDR} 0x52 0x00 # Unmute ADC
    
    echo "TLV320AIC3263 Configuration done!"
    
    # ============================================================================
    # PCM6140 Configuration 
    # 4 microphone input, TDM mode
    # 32-bit word length
    # PCM6140 (ASI1) -> TLV320AIC3263 (ASI2)
    # ============================================================================
    echo "PCM6140 Configuration starting..."
    
    #######################################################
    # Software Reset & Wake-up
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x00 0x00   # Page Select = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x7F 0x00   # Book Select = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x01 0x01   # Software reset
    sleep 0.001
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x02 0x81   # Wake-up device, use internal AREG
    sleep 0.002
    
    #######################################################
    # Input Source Configuration (Analog Inputs)
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x3C 0x88  # CH1_CFG0 = Line input, Differential-Ended, 20kOhm
    i2cset -f -y 1 ${PCM6140_ADDR} 0x41 0x88  # CH2_CFG0 = Line input, Differential-Ended, 20kOhm
    i2cset -f -y 1 ${PCM6140_ADDR} 0x46 0x88  # CH3_CFG0 = Line input, Differential-Ended, 20kOhm
    i2cset -f -y 1 ${PCM6140_ADDR} 0x4B 0x88  # CH4_CFG0 = Line input, Differential-Ended, 20kOhm
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0B 0x00  # ASI_CH1: slot 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0C 0x01  # ASI_CH2: slot 1
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0D 0x02  # ASI_CH3: slot 2
    i2cset -f -y 1 ${PCM6140_ADDR} 0x0E 0x03  # ASI_CH4: slot 3
    
    #######################################################
    # ASI / TDM Configuration
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x07 0x30  # ASI_CFG0 ASI_FORMAT = TDM, ASI_WLEN = 32 bits, BLCK_POL = 1
    i2cset -f -y 1 ${PCM6140_ADDR} 0x08 0x20  # ASI_CFG1 TX_OFFSET = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x09 0x20  # ASI_CFG2 ASI_ERR = 0, ASI_ERR_RCOV = 0
    
    i2cset -f -y 1 ${PCM6140_ADDR} 0x13 0x01 # Disable Auto Clock Configuration
    i2cset -f -y 1 ${PCM6140_ADDR} 0x16 0x00 # CLK_SRC = 0 (Root Clock)
    
    
    #######################################################
    # Channel Enable, Power-up Configuration
    #######################################################
    i2cset -f -y 1 ${PCM6140_ADDR} 0x00 0x00   # Page Select = 0
    i2cset -f -y 1 ${PCM6140_ADDR} 0x73 0xF0   # Enable ADC Channels 1–4
    i2cset -f -y 1 ${PCM6140_ADDR} 0x74 0xF0   # Enable ASI Output Slots for Ch1–Ch4
    i2cset -f -y 1 ${PCM6140_ADDR} 0x75 0xe0   # Power-up ADC / MICBIAS / PLL
    
    
    
    # Get Channel Status
    echo "Channel Status (DEV_STS0): $(i2cget -f -y 1 ${PCM6140_ADDR} 0x76)"
    echo "Channel Status (DEV_STS1): $(i2cget -f -y 1 ${PCM6140_ADDR} 0x77)"


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

    您好、

    这些示波器屏幕截图是否会卡住? 它每个周期发送相同的几位? 您能否在出现该问题之前和之后将页面 0 的完整寄存器转储发送到卡住的位置? BCLK 的这种微小变化不应导致问题、尤其是在 WCLK 与其进行缩放的情况下。 通常、我们预计变化超过 5%会导致问题。 我尝试了按照您在 EVM 上使用的范围(使用 WCLK 缩放)改变我的时钟、但您的脚本也没有问题。  

    您是否还能测量模拟输入的外观? 可能您会使 ADC 过载、然后它会停止? 此外、您是否可以在未连接模拟输入的情况下尝试测量噪声是否仍然如此?

    此致、
    Mir

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

    您好、

    通常、在我们较新的器件的示例脚本中、我们包括等待 AREG 稳定。 我需要一天的时间浏览您的寄存器并找到有关此器件的一些示例 — 但我对延迟并不感到惊讶,更多的是必须在每个通道之间等待。 您能否查看 EVM 用户指南以了解 6140 的一些示例脚本? 否则我明天就能。

    -米尔

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

    您好、

    很抱歉、我把您挂在这里。 我今天详细研究了这一点、我可以想到几个因素导致这种情况、尽管第一个需要重点关注的是、模拟输入上的交流耦合电容值是多少? PCM6140 具有“快速充电“模式、该模式告诉器件在导通 ADC 之前需要等待多长时间、同时等待电容器充电至输入的适当共模。 默认情况下、时间为 2.5ms、这对于 1uF 电容器来说足够了、但如果您在输入端选择了更大的电容器、则可能输入信号没有正确偏置到器件中、或者输入电流存在一些问题? 您是否可以尝试调整 第 0 页中的寄存器 0x05 SHDN_CFG、将快速充电时间更改为 12.5ms 或更高、然后查看这是否有帮助? 如果您使用的输入电容器大于 1uF、则可能需要增大该值。

    请告诉我这一点。

    此致、
    Mir