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:192kHz采样率的最大字长度

Guru**** 2465890 points
Other Parts Discussed in Thread: TMS320C5535, PCM9211, PCM1863EVM

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/772834/pcm1863-maximum-word-length-for-192khz-sample-rate

部件号:PCM1863
主题中讨论的其他部件:PCM9211,TMS320C5535

您好,

我有一个简单的问题,这个编解码器是否可以有一个32位的字长度,采样率为192kHz?

我注意到,即使字长度为24位,我也违反了数据表中7.12 中规定的150ns的最小bck期限-但对于每个LRCK期限为64 bck时钟的24位来说,它工作正常。 24位字是我在192kHz时从ADC中得到的最多,即使字长度设置为32位(只需将0x00写入到第0页寄存器0x0B并验证值是否被写入)。 从技术上讲,后面的位是有空间的,但它没有任何时钟。 也许他们甚至不存在所使用的OSR?

此外,数据表中还提到,2通道ADC所需的最小时钟频率为128x, 但在下一页中,它建议使用192kHz的32倍比率(如果我将ADC设置为128x,它似乎会产生混乱的输出,但我的工作进展不够顺利,无法验证发生的情况)。 事实上,在48 kHz采样率后,它会不会一直保持在这个最小值。

我假设正在发生的是ADC中某个阶段的最大时钟速度(数据表中没有提到)(可能ADC的最大时钟为6.144MHz),但确认一下会很有用。

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

    您好,Anthony:

    我必须对EVM进行一些测试,以清楚地回答您关于192kHz/32位字长问题的第一个问题。

    关于bck duration (min)(bck持续时间(分钟))值,它似乎是一个DS错误,肯定会调查并纠正DS的未来版本。 我将为您提供正确的值。

    谢谢。

    此致,
    Ravi

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

    您好,Ravi:

    谢谢。 作为一个附加说明,我发现在启用PLL后,第0页寄存器28中的PLL_Lock位从未设置。 我发现我只能轮询寄存器,直到PLL_Enable位读取为SET,这似乎工作正常,但我想知道没有此位设置是否是由于某些配置错误?

    作为参考,我正在使用PCM1863EVM板,在PCM9211 IC被移除,I2C线路在到达J7之前被切断,这样我就可以通过SPI配置器,并且安装了随附的振荡器Y0。 我还使用下面的寄存器配置-我为读写函数添加了基本原型,以便您可以看到哪个值是:

    void SPI_PCM186X_write (unsigned int Regnum,unsigned int RegVal,unsigned int block_until _done);
    unsigned int SPI_PCM186X_read (unsigned int Regnum);
    
    void PCM1863_setup (void)
    {
    unsigned int SPI_DEBUG;
    
    SPI_PCM186X_WRITE (0x00,0xFE,1); //重置编解码器
    
    DELAY安装(2万); //等待一段时间,以便重置
    
    SPI_PCM186X_WRITE (0x00,0x00,1); //选择第0页
    SPI_PCM186X_WRITE (0x01,0x00,1); //设置默认的Ch1_L增益
    SPI_PCM186X_WRITE (0x02,0x00,1); //设置默认Ch1_R增益
    SPI_PCM186X_WRITE (0x05,0x86,1); //设置增益行为-平滑更改,跨通道的独立PGA控制,关闭自动剪辑抑制
    SPI_PCM186X_WRITE (0x06,0x41,1); //配置ADC1 Input_L - VinL1[SE]= 0x41 - Vin1P-Vin1M[diff]= 0x50
    SPI_PCM186X_WRITE (0x07,0x42,1); //配置ADC1 Input_L - VinR2[SE]= 0x42 - Vin2P-Vin2M[diff]= 0x50
    
    SPI_PCM186X_WRITE (0x0B,0x00,1); //配置串行音频格式- RX stuff -不在乎,32位字,I2S格式
    
    SPI_PCM186X_WRITE (0x19,0x00,1); //确保已启用自动增益映射
    
    //计时配置
    
    //为ADC/DSP1/DSP2内核配置时钟源和分频器
    SPI_PCM186X_WRITE (0x20,0xB6,1); //配置时钟- SCK上除ADC外,所有设备的XTAL作为时钟源,主模式和PLL作为时钟源
    SPI_PCM186X_WRITE (0x21,0x01,1); // 98.304 MHz的Halve PLL输出,用于DSP1生成必需的49.152 MHz时钟(由(N+1)分频)
    SPI_PCM186X_WRITE (0x22,0x01,1); // 98.304 MHz的Halve PLL输出,用于DSP2,以生成必需的49.152 MHz时钟(由(N+1)分频)
    SPI_PCM186X_WRITE (0x23,0x03,1); //将SCK/PLL (如上所选)除以4,以生成6.144 MHz的ADC时钟(除以(N+1))
    
    //配置位时钟和样例时钟生成
    SPI_PCM186X_WRITE (0x25,0x03,1); //将PLL输出除以4,以生成24.576 MHz的SCK输出(除以(N+1))
    SPI_PCM186X_WRITE (0x26,0x01,1); //将SCK输出除以2,以生成12.288 MHz的bck (除以(N+1))
    SPI_PCM186X_WRITE (0x27,0x3F,1); //将bck输出除以64,以生成192 kHz的LRCK (除以(N+1))
    
    //配置PLL以输出98.304 MHz (输出必须在64-100MHz范围内)- PLLOUT = IN * K*R/P,K = J.D (J整数部分,D小数部分)
    SPI_PCM186X_WRITE (0x28,0x00,1); //禁用PLL并将SCK设置为输入
    SPI_PCM186X_WRITE (0x29,0x03,1); //设置P = 4 (1/(N+1))表示PLL除法
    SPI_PCM186X_WRITE (0x2A,0x01,1); //为PLL乘法设置R =2 (*(N+1))
    SPI_PCM186X_WRITE (0x2B,0x08,1); //设置J =8 (*N)表示PLL乘法(K = J.D)
    SPI_PCM186X_WRITE (0x2C,0x00,1); //设置D = 0 (LSB)
    SPI_PCM186X_WRITE (0x2D,0x00,1); //设置D = 0 (MSB)
    SPI_PCM186X_WRITE (0x28,0x01,1); //启用PLL并将SCK设置为输入
    
    SPI_DEBUG =0;
    
    while ((SPI_DEBUG & 0x01)== 0)//等待PLL_Enable位读取为设置值
    {
    delay_inst(2000);
    SPI_DEBUG = SPI_PCM186X_READ(0x28);
    }
    
    SPI_PCM186X_WRITE (0x11,0x00,1); //将GPIO3设置为GPIO
    SPI_PCM186X_WRITE (0x13,0x40,1); //将GPIO3设置为O/P
    SPI_PCM186X_WRITE (0x14,0x80,1); //将GPIO 3设置为高
    ,使LED显示为完成} 

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

    您好,Anthony:

    您是正确的...如果PLL配置不正确,可能导致PLL_LOCK位未设置,这也反映在输出信号的性能测量不良。 此外,我们还有寄存器,它指示 CLK_ERR_STAT (Page.0 0x72)报告的任何时钟错误,这对于跟踪正确设置也很有用。

    我将详细查看设置并提供反馈。 我认为这些注释非常清楚,但如果我需要对您的应用程序的整体设置进行更多的说明,我会向您回拨tmrw。 谢谢。

    此致,
    Ravi

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

    您是否能够调查上述问题。 虽然我可以继续进行目前的工作,但我担心的是,下面的情况是,PLL从未显示它已锁定,这可能会导致线下的抖动/样本流速出现问题,从而可能会阻止我的项目工作。

    如果它有帮助,我将此主板与TMS320C5535平台连接,尽管我认为使用抽象代码可以将问题隔离到ADC本身。

    非常感谢。

    Antony
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Antony,
    我确实计划在EVM上查看配置并测试相同的配置。 理想情况下,应该设置PLL锁定位,但我在某些情况下,尽管PLL配置准确,但锁定位未声明。 测试结束后,我将获得更新。谢谢。

    此致,
    Ravi