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.

[参考译文] PCM1863:DSP 寄存器不可寻址

Guru**** 2668255 points

Other Parts Discussed in Thread: PCM1863, PUREPATHCONSOLE

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1583285/pcm1863-dsp-registers-are-not-addressable

器件型号: PCM1863

尊敬的专家:

您能帮助解决以下问题吗?

对于我的项目 、必须能够在不同的输入端口之间切换。 当我尝试按照数据表中描述的编程序列更改 DSP 寄存器配置时、W_REQ 位不会复位。  该标志只能通过关闭器件电源来重置。  

我尝试在初始化阶段结束时配置 DSP 寄存器。  在写入 DSP 寄存器之前、是否必须先配置一些软件或硬件依赖项?

此致、

Marvin

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

    尊敬的 Marvin:

    您能否分享您的编程序列? 一旦您对寄存器 0 进行虚拟写入、指定您的 24 位值、然后写入 W_REQ 位、它应该会复位。 在完成写入之前、您可能需要再读取一次或两次 W_REQ 位、它应该能够为每个音频样本写入一次。 它也仅在有应用于 DSP 的时钟时才起作用。

    此致、
    Mir

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

    尊敬的 Mir:

    下面是编程序列

    AudioADC_Status pcm186x_writeDspCoefficient (uint8_t deviceAddress、AudioAdc_PCM186x_DspRegisterMap reg reg、uint32_t newValue)
        if (pcm186x_checkDspReady (deviceAddress)== true)
        {
          //设置地址
          DATA[0]=(uint8_t) reg & 0x7F;
          State = pcm186x_sendDataRaw (deviceAddress、(uint8_t) MEM_ADDR、DATA、1);

          //设置新数据
          DATA[0]=(uint8_t)(((newValue & 0x00FF0000)>> 16);
          DATA[1]=(uint8_t)(((newValue & 0x0000FF00)>> 8);
          DATA[2]=(uint8_t)(newValue & 0x000000FF);
          STATE |= pcm186x_sendDataRaw (deviceAddress、(uint8_t) MEM_WDATA0、DATA、3);

          //执行写命令
          DATA[0]= AUDIO_ADC_PCM186X_COM_STAT_W_REQ_MSK;
          State |= pcm186x_sendDataRaw (deviceAddress、(uint8_t) COM_STAT、DATA、1);
          }

    一方  

    bool pcm186x_checkDspReady (uint8_t deviceAddress)
    {    
      uint8_t comStat = 0xFF;
      while (comStat!= 0)
      {
        pcm186x_changePage (deviceAddress、Page1);   //发送 0x00 0x01
        pcm186x_changePage (deviceAddress、Page1);   //发送 0x00 0x01
        pcm186x_changePage (deviceAddress、Page1);   //发送 0x00 0x01
        State = pcm186x_readDataRaw (deviceAddress、(uint8_t) COM_STAT、&comStat、1);  //读取 0x01
      }

      返回 true;
    }

    我已经测试了很多变化的序列,添加虚拟字节,等等.  

    此致

    Hendrik

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

    我不执行写入命令 0x02 0x2D。 此命令是否独立于应写入的数据? 这是什么命令的背后?

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

    尊敬的 Hendrik:

    该寄存器 0x02 用于设置虚拟 DSP 系数寄存器的存储器地址。 因此、0x2D“地址“是告知虚拟 DSP 您即将写入 energysense 恢复阈值的命令。 数据表中的此表显示了您要写入寄存器 0x02 以切换 DSP 系数模式的所有可能地址、以便在寄存器 0x04-0x07 中给出的下一个系数。

    我不确定您的代码尝试实现的目标、但如果您需要更多帮助以及是否可以提供更多有关您要编程的 DSP 的详细信息、请告诉我。  

    此致、
    Mir

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

    尊敬的 Mir:

    好的、我使用 PCM1863 检查了通信序列。 当我尝试写入 DSP 寄存器 0x0 (Mix1_Ch1L) 时、请参阅下面的

    W 0x00 0x01
    W 0x00 0x01
    W 0x00 0x01
    R 0x01 0x00(PCM1863 不忙)
    W 0x02 0x00 -->寄存器 0、新值= 0x100000
    W 0x04 0x10
    W 0x05 0x00
    W 0x06 0x00
    W 0x01 0x01 0x01 -->写入命令

    执行此命令之后、寄存器 0x01 0x01 中的写入标志每次都为“1",“,不再、不再复位。 仅当我重置电源时、标志才会再次为“0"。“。

    在为 DSP 寄存器执行写入命令之前、请使用以下值使所有通道静音
    W 0x00 0x00
    R 0x71 0x1F ->所有通道均静音
    W 0x00 0x00
    R 0x06 0x40 0x40 ->0x40 左侧和右侧通道 1 无输入
    W 0x00 0x00
    R 0x08 0x40 0x40 -->左侧和右侧通道 2 无输入
    R 0x0A 0x00 ->使辅助通道静音

    我的设置可能有问题、因为写入序列与数据表中所述的序列类似。

    此致

    Hendrik

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

    以下是一些其他状态寄存器的内容。 也许它是有趣的你除了。

    R 0x61 0x00  
    R 0x70 0x70  
    R 0x78 0x07  
    R 0x72 0x0F
    R 0x73 0x05
    R 0x74 0x11
    R 0x75 0x00

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

    尊敬的 Hendrik:

    您是否还可以尝试在 DSP 写入中写入寄存器 0x07? 可以是 MEM_WDATA3。 我想知道它是否认为它没有得到值的所有位?

    您拥有的这些状态寄存器都可以正常工作、不会出现任何问题。

    此致、
    Mir

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

    尊敬的 Mir:

    mem_wdata3 的内容应该是什么值?

    此致

    Hendrik

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

    尊敬的 Hendrik:

    它应该只是为 0。  

    您如何检查寄存器 0x01 设置? 在写入位发生翻转之前、您需要等待 1 个时钟周期、这可能比写入/读取操作慢。 此外、您是否提供了时钟? 应用滤波器系数时、是否会出现声音差异? (或者如果不进行滤波,您正在尝试应用哪种 DSP 模式?)

    此致、
    Mir

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

    尊敬的 Mir:

    我尝试了这两种方法、写入 1 和 0、但没有效果。 对于时钟而言、使用带 16MHz 的晶体。 在该源下、一个时钟周期< 100ns。 那一次我肯定会等待。 或者我是否以其他方式计算时钟周期?

    我想说,我的设置没有效果,之后也没有差异。  

    最好的考虑

    Hendrik

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

    尊敬的 Hendrik:

    可在以下位置访问混频器系数计算器工具: https://www.ti.com/tool/download/SLAC663

    我们看到您需要读取寄存器 01 两次、是否执行此操作?  

    时钟等待 1 个采样、因此这将比 16MHz 慢得多。 它将是 48kHz 或您的采样率是多少。

    此致、
    Mir

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

    尊敬的 Mir:

    在读取状态标志(仅一次)之前、我执行两次虚拟写入。 在等待几毫秒后、我将尝试使用两条读取命令。 不幸的是、我无法在下周之前完成任务。 之后我会向您提供反馈。

    此致

    Hendrik

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

    好的,我会等待你的答复。

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

    尊敬的 Mir:

    不幸的是,这没有影响。 您能给我一个适用于 DSP 寄存器写入和读取的寄存器配置设置吗? 然后、我可以将我的设置与您的默认设置进行比较。 也许我做的一些寄存器设置 阻止我进行这些设置。

    我附上了与 PCM1863 的来文。  

    此致

    Hendrik

    状态寄存器读取和静音命令:

    写入操作:

    读取状态标志:

    在这种情况下、我每次访问寄存器之前选择正确的页面(写入命令 0x00 0x01)。 我也测试了它没有这个“页面更改“,它也不起作用。 最后一个读取序列会一直重复。 在写入操作和读取状态标志之间、等待大约 2ms 的时间、总线上没有通信。 最后是 1ms 的暂停时间、这两条读取命令之间的间隔。

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

    尊敬的 Hendrik:

    抱歉耽误你的时间、明天我会给你举个例子。

    -米尔

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

    尊敬的 Mir:

    您有更新吗?

    此致

    Hendrik

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

    尊敬的 Hendrik:

    对此感到抱歉。 当我测试时、我自己遇到了问题。 明天我将为您编写整个脚本。 我对您的示波器截图有点困惑、您能否将底部的数字转换为 i2c 命令? 同时、请注意、Excel 计算器工具包含用于写入 DSP 寄存器的示例脚本。 您还可以使用 PurePath Console 2(从此处下载:www.ti.com/.../PUREPATHCONSOLE) 来创建您自己的脚本和配置。

    此致、
    Mir

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

    在研究此器件的一些示例时、我找到了这个旧的 e2e 帖子、可能会有所帮助:  关于 PCM1863:I2C 读取不起作用、例如 e) I2C 未读取 PCM1863 中的寄存器值 

    他们在重复启动条件后增加了一个延迟、并帮助您解决了似乎是类似的问题。 您可以尝试一下吗?

    此致、
    Mir

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

    尊敬的 Mir:  

    您可以授予我 PPC3 的 PCM1863 模块访问权限吗?  

    此致

    Hendrik

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

    尊敬的 Mir:  

    我认为情况有点不同、因为他们在读取寄存器值时遇到问题。 我能够从 PCM1863 读取寄存器并获得答案、PCM1863 在发送通信命令后不会卡住。 我的问题是访问 DSP 寄存器以进行读取和写入。 在尝试写入 DSP 寄存器之前、我想知道如何配置寄存器以进行准备。 PPC3 可以为我提供帮助。

    此致

    Hendrik

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

    这是 PPC2、而不是 PPC3! 您应该能够从 PPC 下载页面下载 PPC2。