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.

[参考译文] SRC4382:无法为寄存器设置新值

Guru**** 2468460 points
Other Parts Discussed in Thread: SRC4392, SRC4382

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1251311/src4382-can-not-set-new-value-to-registers

部件号:SRC4382
主题中讨论的其他器件:SRC4392

在系统启动期间、所有寄存器都可以进行初始化、而不会在我们的应用中出现问题。 但我们需要更改一些寄存器的值、例如0x0D、以在 RX1和 RX2之间切换、并能够更改寄存器、假设在启动后可以再次读取和写入寄存器、修改诸如0x0D 等寄存器的步骤是什么。 谢谢

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

    抱歉、启动后无法再次更改寄存器

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

    尊敬的 Yong:

    您应该能够写入所需的寄存器并通过读取操作验证写入。 下面是 用于初始化器件和示例代码的分步式指令。

    香港特区政府

    应使用以下序列来初始化 SRC4392。

    1.接通电源并进行外部复位。

    2.写入第0页上除寄存器0x01外的所有控制寄存器

    3.应用 MCLK,以及端口 A 和 B 所需的任何音频时钟。

    4.写入第0页上的寄存器0x01、为所需的块上电。

    5.通过将寄存器0x08、页0、的 TXBTD 位置1来禁用 DIT 缓冲区传输。

    6.将0x02写入寄存器0x7F 以将第2页设置为活动页。

    7.根据需要将数据写入第2页上的 DIT C 和 U 缓冲区。

    8.将0x00写入地址0x7F 以将第0页设置为活动页。

    9.通过将寄存器0x08、页0中的 TXBTD 位设置为0来启用 DIT 缓冲区传输。
    这将使用写入第2页寄存器的数据更新 DIT TA 缓冲区。

    实现上述功能的示例:

    1.外部复位

    2.在第0页设置控制寄存器(始终先设置寄存器地址、然后设置数据[十六进制的所有值])

    w e0 7f 00 //设置寄存器页0
    w e0 03 20 // I²S 端口 A:时钟从器件、24位音频 MSB、来自接收器的输出信号-不是来自 SRC
    w e0 04 00 // I²S 端口 A:MCLK 源= MCLK;MCLK 频率= 128x LRCLK (除128x 外的 MCLK 频率、仅用于主模式运行)
    w e0 07 00 //时钟启动输出;发送器 MCLK 分频器=> FPGA CLK / 128
    w e0 09 01 //通过 SPI 更新发送器通道状态
    w e0 0d 00 //接收器输入=> RX1、参考 CLK RXCKI (外部)
    w e0 0E 00 //如果没有时钟,接收器静音,外部超时钟 引脚、CLK 分频器= 4
    //根据数据表确定的接收器 PLL 参考时钟(表4、S.60)
    w e0 0F 22
    w e0 10 00
    w e0 11 00
    //
    w e0 2D 02 // SRC Source ==接收器,ref CLK FPGA

    3.启用时钟(MCLK、帧同步、采样时钟)

    4. W e0 01 37 //打开 SRC、接收器、发送器、I²S 端口 A


    以下是步骤5至9的脚本:


    w e0 08 08 //禁用 DIT 缓冲器传输

    w e0 7f 02 //将页面设置为2

    w e0 2e ee //将 ee 写入第2页上的 reg 2e

    w e0 2f ff //将 ff 写至第2页上的寄存器2f

    w e0 7f 00 //将页面改回0

    w e0 08 00 //启用 DIT 缓冲器传输

    w e0 7f 02 //切换回第2页

    r e0 2e 01 //回读第2页上的 reg 2e

    r e0 2f 01 //回读第2页上的寄存器2f

    w e0 7f 00 //将页面设置为 PAGE 0

    香港特别行政区政府

    此致、

    阿拉什

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

    尊敬的 Arash:

    我们尝试实现的不是初始化 SRC4382、初始化没有问题。

    我们需要修改寄存器0x0D、以便在 RX1和 RX2之间动态切换、而无需进行外部复位。  

    在系统启动后无法再次修改任何寄存器。

    在初始化后是否可以再次修改寄存器、而不应用外部复位?

    谢谢

      

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

    尊敬的 Yong:

    您无法打开开关、一旦您使用0x0D 更改输入、则必须再次进行初始化。

    此致、

    阿拉什

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

    尊敬的 Arash:

    在我们的当前设计中、我们不能使用外部复位来重新配置 SRC4382、可以使用寄存器0x01中的内部复位

    位7复位? 我们需要通过执行第二轮 SRC4382初始化来更改0x0D、除非重新启动整个系统、否则绝不能这样做。

    我的印象是 SRC4382只能在启动时初始化一次、不是吗? 初始化完成后对寄存器的任何写入访问(重新初始化)

    将导致我们观察到的 SRC4382无 ACK 错误。

    谢谢

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

    尊敬的 Yong:

    是的。  寄存器0x01的位7  被用来强制一个复位初始化、此初始化 等同于   通过 RST 输入(引脚24)强制外部复位。

    此致、

    阿拉什