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.

[参考译文] LAUNCHXL-CC26X2R1:I2SCC26XX.c 中 SCKDivide 的计算出错?

Guru**** 2511925 points
Other Parts Discussed in Thread: CC3200AUDBOOST, LAUNCHXL-CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/945622/launchxl-cc26x2r1-error-in-calculation-of-sckdivide-in-i2scc26xx-c

器件型号:LAUNCHXL-CC26X2R1
主题中讨论的其他器件:CC3200AUDBOOSTLAUNCHXL-CC2650

函数  computeSCKdivider () 计算与音频编解码器之间的 I2S 数据传输具有合理 SCK 时钟所需的分频比。 这是通过将时钟速率(48MHz)除以预期的位速率(采样率 x 每个样本的位数 x NumberOfChannels、例如44.1kHz x 16位 x 2)来完成的。 对于44.1kHz、结果为34.0136、向下舍入到34。 对于48kHz、系数为31.25、向下舍入到31。 如果我使用一些其他(不常见)采样率、例如49kHz、则系数为30.612、向上舍入到31。 根据我的理解、SCK 时钟速率略低、这将导致随着时间的推移传输更多的采样、而 I2S 则可以处理更多的采样。 这将导致数据丢失并可能导致可闻失真。

请确认应将计算更改为始终向下舍入、或者告诉我为什么我的想法和结果不正确。

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

    您好!

    太低/太快的 SCK 时钟的后果取决于用例和使用的其他器件。 没有通用答案、我绝对建议您在整个系统中验证驱动程序的行为。

     话虽如此、您可以修改驱动程序以获取所需的值。 如果您需要特定的值、我建议您使用外部时钟源并将 I2S 驱动器设置为"从"模式。

    此致、

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

    您好、Cl é ment、

    我将 i2secho 项目的修改版本与 CC3200AUDBOOST 配合使用。 因此、我使编解码器持续运行。

    当您按原样运行 i2secho 时、您很难识别是否有时缺少单个样本。 但是、如果您在具有非常窄带通的 ADC 路径中应用双二阶滤波器、则任何缺失的样本都会导致双二阶输入信号中出现相位跳转。 然后、这将导致双二阶输出信号的振幅调制。 与此类似,我已证实,I2S 传输速率略低(只要 computeSCKdivider () 将除法因子舍入)确实会导致样本丢失。

    我将 I2SCC26XX.c 中的代码从

    FreqDividerSCK =((I2S_RAW_CLOCK 48MHz +预期的 BitRate/2)/预期的 BitRate);

    为此:  

    freqDividerSCK = I2S_RAW_CLOCK _48MHz/预期的位 Rate;

    这可以解决问题。 (确保在 AudioCodec.c 中调整 PLL 设置。)

    您可能是对的、对于某些应用、该函数可以舍入。 但是、在 i2secho 项目中、根据我的调查结果、情况并非如此。

    我还考虑将第二个时钟从 LAUNCHXL-CC2650 LaunchPad 路由到 CC3200AUDBOOST 子板。 (这将使 PLL 设置等方面的操作更加简单。) 顺便说一下、最好有一个预定义的路径、从主板的任何空闲引脚到编解码器的 MCLK 或 SCLK (例如、在子板上使用一个未组装的电阻器或一个跳线)。 这样就可以选择使用 BCLK_IN 以外的另一个时钟。 作为解决方法、我将使用接插电缆从 J1上的 FREE 引脚连接到 TP13、并移除 R31。