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.

[参考译文] SRC4392:RX 端口均不工作、仅端口 A 和 B 以及 TX 输出

Guru**** 2466550 points
Other Parts Discussed in Thread: SRC4392, SN74LVC1G125

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/779133/src4392-none-of-rx-ports-working-only-port-a-and-b-and-tx-output

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

大家好、

我正在尝试使 SRC4392在我的设计上正常工作。 将端口 A 和/或 B 用作从端口不会有问题地将它们置于 TX 输出、同轴电缆和光纤上。 从 A 到 B 的输出 I2S 甚至是有效的。

有一个微控制器控制 SRC4392的所有 I2C 数据、遗憾的是、我被输入卡在某个位置。 无法使它们正常工作、也无法进行 DIR-DIT 旁路。 我尝试遵循一些论坛对初始化代码的解释、但不幸运。 这是我的初始化例程:

#将寄存器页设置为0 (控制和状态寄存器)
BUS.WRITE_BYTE_DATA (地址、0x7f、0x00)

#端口 A 设置为 I2S 数据格式
BUS.WRITE_BYTE_DATA (地址、0x03、0x01)
BUS.WRITE_BYTE_DATA (地址、0x04、0x00)

#端口 B 设置为主接口、I2S 数据格式、MCLK 数据源、时钟源 时钟分频器128
BUS.WRITE_BYTE_DATA (地址、0x05、0x39)
BUS.WRITE_BYTE_DATA (地址、0x06、0x00)

#使用 MCLK 的 DIR 设置、设置为静音以消除锁定条件、RXCKO 禁用
#默认输入为 RX1
BUS.WRITE_BYTE_DATA (地址、0x0d、0x08) BUS_BYTE=0x570=20
(

地址)、0x00_DATA = 0x24BTE_B (地址)、0x24BTE_B = 0x00_DATA

(地址= 0x24BTE_B)、0x24BTE_0、0x00_B = 0x00_B = 0x570MHZ 0MHZ
bus.write_byte_data (地址、 0x11、0x00)

#设置 GPO1以启用22.5792时钟
总线。WRITE_BYTE_DATA (地址、0x1b、0x01)

#设置 GPO2以启用24.576时钟
总线。WRITE_BYTE_DATA (地址、0x1c、0x01)

#设置 GPO3以使用 MCLK RX576 (设置为0x00以使用22.5792)
总线

、将0x576_BYTE_DATA (地址、0x24.01)#设置为24.01、将 GPO3设置为24.01 (设置为0x00以使用22.5792)
bus.write_byte_data (address、0x1E、0x01)

# SRC 设置默认为端口 A 作为输入数据源
# MCLK 为参考时钟源、启用 AUTODEM (使用0x2D、0x02播放来自 S/PDIF 同轴电缆输入的音频、使用0x00作为端口 A I2S)
bus.write_byte、0x2D 数据(0x2D) 0x02)
BUS.WRITE_BYTE_DATA (地址、0x2e、0x20)
BUS.WRITE_BYTE_DATA (地址、 0x2F、0x00)

# DIT 设置、将 SRC 用作输入数据源、将 MCLK 用作主时钟
#时钟分频器为128、以设置输出帧速率
#块启动是输出、指示有效音频
# c、u 数据将不会更新
BUS.WRITE_BYTE_DATA (地址、 0x07、0x1c)
bus.write_byte_data (address、0x08、0x00)
bus.write_byte_data (address、 0x09、0x00)

#设置左通道卷流-3.5dB
总线。WRITE_BYTE_DATA (地址、0x30、0x07)

#设置右通道卷流-3.5dB
总线。WRITE_BYTE_DATA (地址、0x31、0x07)

#为所有块加电
BUS.WRITE_BYTE_DATA (地址、0x01、0x3f) 

我还尝试在 init 文件的末尾添加此内容:

#针对192KHz
总线的 DIT 设置。WRITE_BYTE_DATA (地址、0x07、0x1c)

BUS.WRITE_BYTE_DATA (地址、0x08、0x08)
BUS.WRITE_BYTE_DATA (地址、 0x7f、0x02)
bus.write_byte_data (地址、0x2e、0xee)
bus.write_byte_data (地址、0x2F、 0xFF)
bus.write_byte_data (address、0x7f、0x00)
bus.write_byte_data (address、0x08、0x00)
bus.write_byte_data (address、 0x7f、0x02)
bus.write_byte_data (地址、0x2e、0x01)
bus.write_byte_data (地址、0x2F、 0x01)
bus.write_byte_data (address、0x7f、0x00)

# Reset
bus.write_byte_data (address、0x01、0x80) 

但运气不佳、只能在从端口 A 或 B 选择输入时工作。音频输入采样率与 MCLK 和 RXCKI 时钟上使用的采样率相同、因此应该正常工作。 但什么也没有。

这是我的输入/输出原理图、以防出现错误。 (无论如何、我不这么认为):

我还有关于采样率输入检测的另一个问题。 我的设计具有两个用于44.1和48个采样率频率的时钟。 我可以单独打开/关闭它们、并分别为 MCLK 和 RXCKI 使用一个或另一个。 如何自动检测输入采样率以在 RXCKI 22.5792或24.576时钟之间切换?

谢谢!
奥里奥尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oriol、
    感谢您提供除其他详细信息之外的详细初始化代码。 我将回顾同样的内容、看看可能的断开连接是什么...谢谢。

    此致、
    Ravi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oriol、
    我已将以下脚本用于 EVM 上的旁路模式、您可以参阅此脚本以了解旁路模式。 还将共享 DIR->SRC->DIT 脚本。

    #将寄存器页设置为0
    w e0 7f 00
    # dit 线路驱动器和 aesout 输出使用旁路多路复用器作为数据源
    # rx1输入由旁路多路复用器选择
    宽 e0 08 30
    #为 dir 块加电
    w e0 01 22

    # rx2输入由旁路多路复用器选择
    宽 e0 08 70

    # rx3输入由旁路多路复用器选择
    w e0 08 b0

    # RX4输入由旁路多路复用器选择
    w e0 08 f0

    # rx1输入由旁路多路复用器选择
    宽 e0 08 30


    此致、
    Ravi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是另一个也可以引用的脚本。 这用于 DIR->SRC->DIT 路由-
    w e0 7f 00
    默认情况下,# dir 设置为音频静音,以消除锁定条件并启用 rxcko
    w e0 0d 00
    宽 e0 0e 09
    24.576mhz rxcki p 的# pll1设置为2 j 为8 d 为0
    w e0 0f 22
    w e0 10 00
    宽 e0 11 00
    #为 dir nonaudio 标志设置 gpo1
    w e0 1b 06
    #为 dir 无效标志设置 gpo2
    w e0 1c 07
    #为 dir 加重标志设置 gpo3
    w e0 1D 05
    #为 dir 奇偶校验错误标志设置 gpo4
    宽 e0 1e 0d
    # src setup 为默认设置、dir 作为输入数据源
    # MCLK 是参考时钟源
    w e0 2D 02
    宽 e0 2e 00
    w e0 2f 00
    宽 e0 30 00
    宽 e0 31 00
    # dit 设置、src 作为输入数据源、MCLK 作为主时钟
    # MCLK 分频器为512、用于设置输出帧速率
    # block start 是一个输出、并指示有效音频
    # c 和 u 数据来自寄存器第2页中的数据缓冲区
    宽 e0 07 7c
    宽 e0 08 00
    w e0 09 01
    #为除端口 a 和 b 外的所有块加电
    w e0 01 27
    #禁用 dit 缓冲区传输
    宽 e0 08 08
    #将寄存器页设置为2
    w e0 7f 02
    #设置0到2字节的 dit 通道状态数据
    #专业使用 PCM 音频无加重锁定48kHz 采样频率
    #所有其他通道状态字节都设置为默认0x00值
    w e0 00 81
    w e0 01 81
    w e0 02 10
    w e0 03 10
    w e0 04 34
    w e0 05 34
    #将寄存器页设置为0
    w e0 7f 00
    #启用 dit 缓冲区传输
    宽 e0 08 00

    用于96k 输出的# dit 设置
    w e0 07 3c
    宽 e0 08 08
    w e0 7f 02
    宽 e0 00 80
    w e0 01 80
    宽 e0 08 08
    宽 e0 09 08
    w e0 7f 00
    宽 e0 08 00
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DIR 输出路由到什么?
    您能否使用"扫描"检查引脚11上的锁定输出状态?

    至于输入采样率的指示:如果 SRC 是 DIR 的目标、那么您可以使用 SRC 比率读回寄存器来告诉您 SRC 比率、如果您知道 SRC 输出速率、则可以轻松确定输入频率。

    但是、是否确实需要更改 DIR 参考时钟? 使用24.576MHz 的 DIR 参考时钟并将其保留。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    您是对的、我认为我需要对 DIR 上的不同输入采样率使用两个不同的时钟、但实际上不是。 使用24.576Mhz 适用于44.1和48kHz 采样率。 实际上只需要根据 DIT 输出采样率更改它。 我想我在数据表上看到了一些东西。

    LOCK 引脚、RDY 和 INT 连接到微控制器、因此我可以在任何情况下轻松读取它们。 但实际上发现了这个问题、用于 TTL 输入的缓冲器强制光输入低电平、这真的很奇怪... 在除水垢后,工作就像一种魅力。  这种情况真的很奇怪、我的原理图看起来不错。

    非常感谢您的支持!

    奥里奥尔

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

    这实际上是可行的、谢谢! 但实际上发现了真正的问题、用于 TTL 输入的缓冲器强制光输入低电平、这真的很奇怪... 在除水垢后,工作就像一种魅力。 这种情况真的很奇怪、我的原理图看起来不错。

    我需要"同时"使用 TTL 和光学输入、这意味着用户无需使用跳线或类似的东西。 对此有任何帮助吗?

    非常感谢您的支持!

    奥里奥尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这里还有一件事! 与时钟相关的内容。 如果我想在 I2S 端口 A 输入和 RX 输入之间切换、该怎么办? 对于 RX 输入、24.576是完美的、但如果我通过 I2S 以44.1kHz 的频率播放文件、这将不起作用、仅在44.1kHz 时起作用、这就是我需要切换到22.5792时钟的原因。

    因此、我关于检测输入采样率的问题实际上就是这样的。 有什么建议吗?

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

    "我需要"同时使用 TTL 和光学输入、这意味着用户无需使用跳线或类似的东西。 对此有任何帮助吗?"

    基本而言、您无法。 一次只能对 RX 输入进行解码。

    有一个多路复用器可选择哪个 RX 输入驱动 AES3解码器。 DIR 一次只能解码一个输入。 DIR 的输出可馈入 SRC、DIT 或任一音频串行端口(I2S)。 不过、为了实现这一点、您的设计必须选择所需的输入。 它无法自动检测要使用的输入。 考虑两个 RX 输入上的两个有效的 AES 流--芯片如何决定? 因此、至少您需要提供一个用户界面、让您的用户选择要使用的 RX 输入、并根据该选择对寄存器0x0D 接收器控制寄存器1进行编程。

    现在、有了旁路复用器、您可以选择四个 RX 输入中的任何一个来直接驱动 AES 和 TX±输出、而无需经过 AES 解码器和编码器。 但是、这当然意味着您不能将 TX 输出用于该直接输入以外的任何其他内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "实际上、我关于检测输入采样率的问题是关于这一点的。 有什么建议?"

    您可以为此使用 SRC 的速率估算器。 速率估算器查看所选 SRC 源(端口 A、端口 B 或 DIR)输出、并使用所选 SRC 参考时钟来确定该源的采样率。 当速率估算完成时、RDY 标志会被置为有效、您可以读取 SRI 和 SRF 寄存器以获得该估算值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    非常感谢您的回答。 很遗憾、我认为您没有正确理解我的问题、或者我可能不是很清楚地解释这种情况!

    该设计具有4个光学输入、如果用户希望使用同轴电缆而不是光学输入、也允许使用同轴电缆。 因此、同轴电缆和光纤共享相同的 RX 输入、当然! 用户显然无法同时连接 Optical 和 Coax、我只是想让用户能够使用他/她想要的设备。

    此外、还有四个 TTL 输入、用户也可以在不想使用光学或同轴电缆的情况下使用。 或者只是因为用户要求匹配使用 TTL 输入。

    现在问题在于 TTL 缓冲器强制降低 RX 输入、因此我无法使光学和同轴电缆输入正常工作。 当从电路板上对缓冲器进行去焊时、输入开始工作。  

    因此、我只想问为什么我在缓冲器上有这种行为、因为这一点应该没有问题(您可以使用输入缓冲器检查我的上面的设计)。 输入悬空、BOUT 输出 shoud 不被强制为零、不是吗? 我被困在这里!

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "您可以为此使用 SRC 的速率估算器。 速率估算器查看所选 SRC 源(端口 A、端口 B 或 DIR)输出、并使用所选 SRC 参考时钟来确定该源的采样率。 当速率估算完成时、RDY 标志会被置为有效、您可以读取 SRI 和 SRF 寄存器以获得该估算值。"

    同样、它的工作方式应该与 DIR 相同? 我的意思是、仅使用一个时钟频率、我就能够对所有输入采样率、44.1和48kHz 采样率进行重新采样、而无需更改为特定的采样率时钟。 端口 A 和 B 应该以相同的方式工作? 因为据我所见、我需要使用端口 A 和 B 上的 I2S 信号从一个时钟切换到另一个时钟来播放文件、所以工作方式与 DIR 不同。 但是、每次用户使用不同的采样率时、这种更改也会使我更改所有初始化设置。 因此、我不清楚 SRC 的实际工作原理。

    此外、如果我希望重新采样到88.2kHz、例如、96kHz、我仍然可以使用24、576时钟? 据我所知、我需要切换到22.5792。 这就是为什么我不能正确理解这个部分、因为 DIR 只能使用一个时钟接受任何采样率、而 DIT 不能接受?

    很抱歉、所有这些问题、但数据表中不是很清楚! 也希望 TI 员工能提供一些帮助。

    非常感谢!
    奥里奥尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是 TTL 缓冲器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 SN74LV1G125。 输出始终处于启用状态、以便用户更轻松地选择 TTL、但不选择 TTL。 如果不使用 TTL、则只需插入光纤或同轴电缆。 我知道、如果未启用输出、则高阻态输出是高阻态输出、但如果启用了输出且输入悬空、则是高阻态输出吗? 也不应该输出?

    谢谢!
    奥里奥尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "我知道、如果未启用输出、则高阻态输出是高阻态输出、但如果启用了输出且输入悬空、则是高阻态输出? 也不应该输出?"

    从 SN74LVC1G125数据表的第12页第12.1节布局指南:"数字逻辑器件的所有未使用输入必须连接到高偏置或低偏置、以防止其悬空。"

    换句话说、绝不让 CMOS 输入悬空。 这条建议可以追溯到时间的开始。 如果输入有可能不被驱动、则应在输入端放置一个弱下拉或上拉电阻器、这是连接的驱动器很容易克服的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Andy Peters"]"如果未启用输出、我知道这是高阻态输出、但如果启用了输出并且输入为浮动输出、这是什么? 也不应该输出?"

    SN74LVC1G125 数据表的第12页第12.1节布局指南:"数字逻辑器件的所有未使用输入必须连接到高偏置或低偏置、以防止其悬空。"

    换句话说、绝不让 CMOS 输入悬空。 这条建议可以追溯到时间的开始。 如果输入有可能不被驱动、则应在输入端放置一个弱下拉或上拉电阻器、这是连接的驱动器很容易克服的问题。

    [/报价]

    谢谢 Andy、

    我将使用125和126的更多缓冲器来解决这个问题、因此当一个缓冲器被启用时、另一个缓冲器被禁用、这将不会导致 TTL 和光学/同轴电缆输入之间出现故障。

    我的另一个问题是什么?

    [引用 user="Oriol"]

    同样、它的工作方式应该与 DIR 相同? 我的意思是、仅使用一个时钟频率、我就能够对所有输入采样率、44.1和48kHz 采样率进行重新采样、而无需更改为特定的采样率时钟。 端口 A 和 B 应该以相同的方式工作? 因为据我所见、我需要使用端口 A 和 B 上的 I2S 信号从一个时钟切换到另一个时钟来播放文件、所以工作方式与 DIR 不同。 但是、每次用户使用不同的采样率时、这种更改也会使我更改所有初始化设置。 因此、我不清楚 SRC 的实际工作原理。

    此外、如果我希望重新采样到88.2kHz、例如、96kHz、我仍然可以使用24、576时钟? 据我所知、我需要切换到22.5792。 这就是为什么我不能正确理解这个部分、因为 DIR 只能使用一个时钟接受任何采样率、而 DIT 不能接受?

    [/报价]

    非常感谢!

    奥里奥尔

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

    有人可以帮帮我吗?

    在 I2S 从机模式下运行 SRC4392仅播放48kHz 采样速率文件、即使将22.5792时钟用作参考也是如此。 为什么? 我一直在这上面!

    谢谢、

    奥里奥尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、现在我看到问题在哪里... 在 BCLK 2.8MHz 下、44.1kHz 的文件工作正常、而在44.1kHz 下、BCLK 1.4MHz 下的文件工作正常。 有什么建议?

    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么会生成 BCLK? 1.4MHz 对于44.1kHz 采样是不正确的--它应该是2.822MHz。