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.

[参考译文] TAC5301-Q1:在 ADC/DAC 之后为 DAC/ADC 上电而不使 ADC/DAC 断电不会为 DAC/ADC 上电 — 未报告故障

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1615939/tac5301-q1-powering-up-dac-adc-after-adc-dac-without-powering-down-adc-dac-does-not-powerup-dac-adc---no-faults-reported

器件型号: TAC5301-Q1

这是一个令人困惑的标题 — 一个更长的解释可以在下面找到:)

简而言之、 问题是 :ADC 和 DAC 是否不能相互独立加电/断电 (PWR_CFG [0x78])?

详细说明:

我启用 ADC 并为其上电:  

  • 请遵循 6.4.3(器件功能模式,活动模式)和 8.2.3(详细设计过程)中的所有指南。
  • 我可以在 MCU 上对 ADC 样本进行采样(并在 I2S 上进行监控)。
  • 未报告错误- 一切都好
    • PWR_CFG [0x78]:= 0x80 (ADC_PDZ:= 1)
    • DEV_STS0 [0x79]= 0x80 (IN_CH1_STATUS =1)
    • DEV_STS1 [0x7A]= 0xF0
      • 器件处于工作模式、至少一个录音或回放通道开启
      • 启用 PLL
      • 没有 ADC 通道因故障而断电
    • DAC_FLT_CFG [0x43]= 0x54
      • OUT_CHx_PD_FLT_STS [3]= 0:没有 DAC 通道因故障而断电  

然后我试着去做 启用 DAC、保留使用 ADC -除电源外,所有设置都已在此之前进行过(驱动器等):

  • 所以、我设置:
    • PWR_CFG [0x78]:= 0xC0 (ADC_PDZ:=1 和 DAC_PDZ:= 1 )
  • 不过 没有声音 但是我可以在 I2S 上看到我正在为正确的数据计时。
  • 不报告故障、但 DEV_STS0 反映了这种情况
    • DEV_STS0 [0x79]= 0x8 0 (IN_CH1_STATUS =1、 没有为 OUT_CH1_STATUS 设置任何位 )
    • DEV_STS1 [0x7A]= 0xF0(请参阅上文)
    • DAC_FLT_CFG [0x43]= 0x54 ( 没有 DAC 通道因故障而断电 )

因此、编解码器确实会报告 DAC 未运行、但找不到说明原因的寄存器。

如果我从这种状态 两个通道都断电并为两个通道上电 行为如预期 (呈现声音)

  • PWR_CFG [0x78]:= 0x00
  • PWR_CFG [0x78]:= 0xC0
  • DEV_STS0 [0x79]= 0x8 8. (IN_CH1_STATUS =1、 OUT_CH1_STATUS =1 )
  • 听到声音。

这个问题是对称的:如果我先给 DAC 上电、如果在同时上电之前不关闭 DAC、我就无法随后为 ADC 上电。

我缺少什么吗? 我在文档中找不到任何表明这一点不可能的信息。

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

    尊敬的 Martin:

    我以前没有见过这种行为。 您能否共享您的确切配置文件? 这样我们就可以尝试在我们这边重新创建它。

    谢谢、
    Jeff McPherson

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

    尊敬的 Jeff:

    感谢您的回答。

    我已经找出了问题所在、但尽管如此、我在下面添加了我的“配置“/I2C 序列以供您检查。

    似乎不会“允许“在 CH_EN 寄存器  (0x76) 中启用已禁用的输出通道 、然后为 DAC 上电 (PWR_CFG)。  之后  ADC 通电后 (*)。

    也就是说、如果我怀疑需要在另一个 ADC/DAC 处于活动状态时启用加电并为其加电、我应该从头开始配置 CH_EN、然后只与 PWR_CFG 寄存器一团糟。

    *) 可以随意将“output"与“与“input"和“和“DAC"与“与“ADC"交换“交换-交换 — 问题是对称的。

    我不确定我是否可以阅读 6.4.3 或 8.2.3 中的内容:)

    ——关于我在做什么的更多细节——

    我没有“配置文件“、只有一条跟踪记录了初始化+设置、 麦克风启用和扬声器启用过程中涉及的所有 I2C 通信。

    1) Software reset...
       SW_RESET := 1
       (17547) TAC5301_I2C: Wrote reg: 0x01: 0x01
    
    2) Bring out of sleep...
       SLEEP_ENZ := 1
       (17571) TAC5301_I2C: Read reg:  0x02: 0x00
       (17577) TAC5301_I2C: Wrote reg: 0x02: 0x01
       (17584) TAC5301: Delaying for 2 ms
    
    --- Init Sequence
    
    3) Set IOVDD 1v8... 
       IOVDD_IO_MODE := 1
       (17606) TAC5301_I2C: Read reg:  0x02: 0x01
       (17613) TAC5301_I2C: Wrote reg: 0x02: 0x03
    
    4) Set protocol format to I2S, word length 16 bits...
       PASI_FORMAT := 1, PASI_WLEN := 0
       (17636) TAC5301_I2C: Read reg:  0x1A: 0x30
       (17643) TAC5301_I2C: Wrote reg: 0x1A: 0x40
    
    5) Set input config channel 1 to DC coupling, single-ended...
       ADC_CH1_INSRC := 1, ADC_CH1_CM_TOL := 2
       (17660) TAC5301_I2C: Read reg:  0x50: 0x00
       (17667) TAC5301_I2C: Wrote reg: 0x50: 0x48
    
    6) Set input config channel 2 to DC coupling, single-ended...
       ADC_CH2_INSRC := 1, ADC_CH2_CM_TOL := 2
       (17684) TAC5301_I2C: Read reg:  0x55: 0x00
       (17691) TAC5301_I2C: Wrote reg: 0x55: 0x48
    
    7) Set output config channel 1 to pseudo-differential OUT1P...
       OUT1x_CFG := 4
       (17708) TAC5301_I2C: Read reg:  0x64:  0x20
       (17715) TAC5301_I2C: Wrote reg: 0x64: 0x30
    
    8) Set output drive to headphone...
       OUT1P_DRIVE := 1
       OUT1M_DRIVE := 1
       (17729) TAC5301_I2C: Read reg:  0x65: 0x20
       (17736) TAC5301_I2C: Read reg:  0x66: 0x20
       (17743) TAC5301_I2C: Wrote reg: 0x65: 0x60
       (17750) TAC5301_I2C: Wrote reg: 0x66: 0x60
    
    9) Disabling input and output...
       IN_CH1_EN := 0, IN_CH2_EN := 0, OUT_CH1_EN := 0, OUT_CH2_EN := 0
       (17764) TAC5301_I2C: Wrote reg: 0x76: 0x00
    
    
    --- Mic Enable Sequence
    
    10) Enabling microphone input channel...
        IN_CH1_EN := 1
        (17790) TAC5301_I2C: Read reg:  0x76: 0x00
        (17797) TAC5301_I2C: Wrote reg: 0x76: 0x80
    
    11) Powering up ADC...
        ADC_PDZ := 1
        (17817) TAC5301_I2C: Read reg:  0x78: 0x00
        (17824) TAC5301_I2C: Wrote reg: 0x78: 0x80
    
    
    --- Headphone Enable Sequence
    
    12) Enabling speaker output channel...
        IN_CH1_EN := 1, OUT_CH1_EN := 1
        (22629) TAC5301_I2C: Read reg:  0x76: 0x80
        (22635) TAC5301_I2C: Wrote reg: 0x76: 0x88
    
    13) Powering up DAC...
        ADC_PDZ := 1, DAC_PDZ := 1
        (22655) TAC5301_I2C: Read reg:  0x78: 0x80
        (22662) TAC5301_I2C: Wrote reg: 0x78: 0xC0
    
    
    --- Status
    
    14) Check channel status...
    	(30289) TAC5301_I2C: Read reg: 0x78: 0xC0
        (32523) TAC5301_I2C: Read reg: 0x79: 0x80
    	^^^^ expected 0x79: 0x88
    

    我认为不允许的器件是 仅给 ADC 上电后的第 12 步(启用输出,被禁用后)(步骤 11)。

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

    尊敬的 Martin:

    是的、这是预期用例:要在上电前将通道启用设置为。 我们通常建议在给 ADC 和 DAC 上电后尽可能少地更改。

    此致、
    Jeff McPherson。