您好!
我们有使用多个 TLV320ADC3101编解码器作为语音阵列的项目。 由于硬件设计、 它不使用 MCLK、而是使用 BCLK。
使用 MLCK (硬件返工)时、语音质量相当好;但如果不使用 BCLK、语音质量明显变差。
我的问题是、如果我们仅使用 BCLK (不使用 MLCK)、我们能否实现与 MCLK 相同的质量、以及如何实现?
谢谢
6月
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.
您好!
我们有使用多个 TLV320ADC3101编解码器作为语音阵列的项目。 由于硬件设计、 它不使用 MCLK、而是使用 BCLK。
使用 MLCK (硬件返工)时、语音质量相当好;但如果不使用 BCLK、语音质量明显变差。
我的问题是、如果我们仅使用 BCLK (不使用 MLCK)、我们能否实现与 MCLK 相同的质量、以及如何实现?
谢谢
6月
应该是:
使用 MCLK (硬件返工)时、语音质量相当好;但如果不使用 MCLK、语音质量明显变差。
抱歉、出现拼写错误。
您好、蔡军
如何使用 BCLK 录制? 音质是否失真? 您是否能够共享两个案例的记录以便我们进行比较?
MCLK 和 BCLK 的值是多少? 它们是否具有相同的频率? 我认为、如果您可以共享原理图和完整的 I2C 寄存器转储、以便我可以看到器件是如何配置的、那将会非常有帮助。 如果可能、请在使用 MCLK 时提供一个 I2C 转储、在使用 BCLK 时提供一个 I2C 转储。
此致、
Aaron Estrada
你好,Aaron Estrada
感谢您的回复。
MCLK 为24.576MHz、而 BCLK 为1.536MHz
我已通过以下命令附加原理图、通过 MCLK 或 BCLK 捕获的波形文件
arecord -D HW:0、0 -f S16_LE -r 48000 -c 2 -twav /tmp/a.wav
此外、i2c 寄存器转储值附加在 zip 文件中。
e2e.ti.com/.../debug_5F00_using_5F00_MCLK_5F00_or_5F00_BCLK.zip
谢谢、
6月
您好、蔡军
我查看了两个寄存器转储、我有点困惑。 当使用 MCLK 时、我看到 PLL 被配置并被选为时钟输入。 但是、PLL 被禁用。 您知道原因吗? 为什么即使您正在配置 PLL、PLL 也会被禁用?
BCLK I2C 寄存器转储的情况类似。 我看到 PLL 系数已配置、但 PLL 已禁用。 在 BCLK 情况下、我还看到在第0页、寄存器4中、PLL 时钟未被选为 CLK_IN 源。 此外、对于 BCLK 寄存器转储、AOSR 设置为1、可能会导致计时出现一些问题。 对寄存器转储看起来不完整的原因进行更多的澄清将会有所帮助。
此致、
Aaron Estrada
Aaron Estrada、您好!
对于 MCLK 情况、寄存器4:时钟发生复用的寄存器值为0x3、这意味着 CODEC _CLKIN = PLL_CLK 且 PLL_CLKIN = MCLK、它运行良好(BCLK 为1.536MHz)。 “PLL 已配置但 PLL 已禁用”--我认为原因是我重复使用了中的源
https://git.ti.com/cgit/ti-analogue-linux-kernel/dmurphy-analogue/tree/sound/soc/codecs/tlv320adc310x.c?h=tlv320adc310x_318&id=9ade84cc7e746abbf6bd9c12051eba3b80f056a9 、但保留了一些默认配置不变。 如果我们不使用 PLL、我认为 PLL 的设置可能不会生效、对吧?
对于 BCLK 情况、上述寄存器的寄存器值为0x1、这意味着 CODE_CLKIN = BCLK。
当我们使用1.536MHz 的 BCLK 时、我记得我发现一个有趣的事情是、将 CLKOUT 的源配置为 BCLK 并将 CLKOUT M_VAL 设置为1、然后在 PIN3 (DOUT)上测量的值为48kHz。 而测量的 PIN1 (BCLK)值为1.536MHz。 这意味着内部 BCLK 与外部 BCLK 不同。 一定会有问题、但我不明白原因。 但是、要使48kHz 的频率工作、需要将 NADC、mAdc、AOSR 全部设置为1。 这可能是噪声来自的原因。 请就此提出一些建议。
谢谢。
6月
您好、Jun、
48kHz FS 不需要 PLL。 在本例中、这是由于 PLL_CLKIN 值为1.536Mhz。 很抱歉造成混淆。
我将尝试在 EVM 上使用 BCLK、以查看是否遇到任何问题。 同时、我很好奇 是否存在任何与软件相关的问题。 在您之前提供的寄存器转储中、该 寄存器转储是在运行 arecord 命令之前、之后还是在运行期间进行的?
此致、
Aaron Estrada
您好、Jun、
正如 Aaron 在当前脚本中提到的那样、PLL 未启用、这是使用所需的 BCLK 所必需的。 这是因为您使用的 PRB_R1块使用的指令计数(IADC)为188、内部主时钟需要至少为 IADC*FS、对于48kHz 采样率为9.024MHz。 MCLK 配置没有问题、因为您提供的 MCLK 足够快、只需使用分频器即可驱动您正在使用的处理块并实现所需的 BCLK 速率。 但是、要成功使用1.536MHz BCLK、您绝对需要使用 PLL。
请尝试 Aaron 提供的设置、但确保 PLL 已打开:
P = 1
R = 2
J = 32
AOSR = 128
mAdc = NADC = 4
您还需要更改时钟生成复用、以便 PLL_CLKIN 为 BCLK、CODEC CLKIN 为 PLL_CLK。 这将通过将0x07写入寄存器4来完成。
当您为 PLL 值设置寄存器5时、请确保 MSB 设置为高电平、以便为 PLL 上电。 因此寄存器5应为0x92。
我相信这将解决您看到的噪音问题!
最棒的
Zak