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.

[参考译文] MSP432E401Y:使用25MHz OSC 的4.096MHz DIVSCLK 的 PLL 配置

Guru**** 2391415 points
Other Parts Discussed in Thread: MSP430FR5969, ADS1283, MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/894393/msp432e401y-pll-configuration-for-4-096-mhz-divsclk-using-25-mhz-osc

器件型号:MSP432E401Y
主题中讨论的其他器件: MSP430FR5969

我正在尝试在使用 MSP430的设计中重新播放 MSP430FR5969、并在 MSP432E401Y 中重新播放四个 ADS1283以添加以太网功能。  在现有设计中、MSP430通过对其8.192MHz 主时钟进行分频来为 ADS1283提供4.096MHz MCLK。  在 MSP432E401Y 上、要使用片上以太网 PHY、MOSC 必须为25MHz、因此我需要使用 PLL 来生成4.096MHz 时钟、因为4.096不是25的整数小数。

我花了相当多的时间尝试确定是否可以同时满足我对 ENET (以及25MHz MOSC 规范)和4.096MHz ADC 时钟的要求。  我认为我找到了一个解决方案,虽然不是完美的,但它会给我带来误差小于50ppm 的 ADC 时钟。  我在数据表和技术参考手册中发现了几个不一致之处,因此我无法完全确定我的结果,我将在此处发布这些结果,以查看您是否同意这种做法。

以下是我发现的导致我不确定的不一致之处:

1)在 MSP432E401Y 数据表(第49页)和 TRM 中、提到了 fVCO、但没有有关其运行限制的规格。  这是否与数据表表表中的表5.5中的 fPLLR 相同?

2) fVCO 的计算方法为 fVCO =(fin ×MDIV)、fin = fXTAL /(Q+1)(N+1)、MDIV = mint +(MFRAC / 1024)。  我没有找到 fXTAL 的定义位置。  这是 MOSC 的频率吗?  如果不是、什么是 fXTAL

3)在 TRM 的4.1.5.5.1节中、表述如下: "PLL 系统分频系数(PSYSDIV)必须设置为1"、但是 RSCLKCFG 寄存器中的 PSYSDIV 域是一个10位宽的域。  如果必须将寄存器字段设置为1、为什么该字段为10位?  这是一个文档错误、实际上 PSYSDIV 可以更大(最多1024个)吗?

4)在表4-6中有一列参考频率、并注明:"对于给定的晶振频率、应选择 N、使参考频率在4至30MHz 范围内"。  没有任何其他参考基准频率的地方。  什么是基准频率?  为什么表4-6参考频率列中的两个值为2、这不符合上述说明中的要求?

以下是我建议的时钟寄存器设置:

RSCLKCFG       MEMTIMEU = 1
                NEWFREQ = 1
                ACG = 0
                USEPLL = 1
                PLLSRC = 0
                OSCSRC = 3
                OSYSDIV = 0
                PSYSDIV = 1

 PLLFREQ0           PLLPWR = 1
                MFRAC = 503
                薄荷= 29

 PLLFREQ1           Q = 0
                N = 4

DIVSCLK              EN = 1.
               src = 0
               DIV = 17

使用这些值、我计算出以下值(以 MHz 为单位)、假设 fXTAL 是指 OSC 输入频率:

fXTAL            25
MDIV            29+(503/1024)=  29.49121094
翅片               25/(0+1)(4+1)= 5

fVCO             5 x  29.49121094 =  147.4560547
SYSCLK          147.4560547/(1+1)=73.72802734  
DIVSCLK         73.72802734/(17+1)=  4.096001519

我会使用 DIVSCLK 来驱动 ADC MCLK。

您能否确认这适用于 MSP432E4、并澄清上述不一致之处?

谢谢、

-Phil

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

    您好、Phil、

    [引用 user="Philip Baltz1]1)在 MSP432E401Y 数据表(第49页)中,TRM 中提到 fVCO,但没有关于其运行限制的规格。  这是否与数据表表表的表5.5中的 fPLLR 相同?

    是的、fVCO 与 fPLLR 相同。

    [引用 user="Philip Baltz1]2) fVCO 的计算方法为 fVCO =(FIN ×MDIV),fin = fXTAL /(Q+1)(N+1),MDIV = mint +(MFRAC/1024)。  我没有找到 fXTAL 的定义位置。  这是 MOSC 的频率吗?  如果不是、什么是 fXTAL

    是的、fXTAL 是 MOSC 晶振的频率。

    [引用用户="Philip Baltz1]3)在 TRM 的4.1.5.5.1节中,表述如下: "PLL 系统分频系数(PSYSDIV)必须设为1",但是 RSCLKCFG 寄存器中的 PSYSDIV 域是一个10位宽的域。  如果必须将寄存器字段设置为1、为什么该字段为10位?  这是否是文档错误、实际上 PSYSDIV 可能会更大(最多1024个)?

    我确认这不是文档错误。 PSYSDIV 应该保持为1、即使它是一个10位字段。

    [引用 USER="Philip Baltz1]4)在表4-6中有一列参考频率,并带有注释:"对于给定的晶振频率,应选择 N,使参考频率在4至30MHz 范围内"。  没有任何其他参考基准频率的地方。  什么是基准频率?  为什么表4-6的参考频率列中的两个值为2、这不符合上述注释中的要求?[/引述]

    好的观察结果。 基准频率是 fXTAL 除以 Q 和/或 N 后的 PLL 输入(fin)。假设提及此频率范围的脚注应为4至30MHz 是正确的、则应删除"基准频率"列中值为2的行。 应更新 TRM 中的表4-5和4-6以及数据表中的表5-5 (可能)、5-6和5-7。 我将报告这一点、因此可以进行修复。

    查看以下主题、似乎 fVCO 应保持在240MHz 以下、以确保系统时钟频率保持在120MHz 以下(因为 PSYSDIV 必须保持为1)。

    MSP432E401Y:PLL 配置

    [引用用户="Philip Baltz1"]

    以下是我建议的时钟寄存器设置:

    RSCLKCFG       MEMTIMEU = 1
                    NEWFREQ = 1
                    ACG = 0
                    USEPLL = 1
                    PLLSRC = 0
                    OSCSRC = 3
                    OSYSDIV = 0
                    PSYSDIV = 1

     PLLFREQ0           PLLPWR = 1
                    MFRAC = 503
                    薄荷= 29

     PLLFREQ1           Q = 0
                    N = 4

    DIVSCLK              EN = 1.
                   src = 0
                   DIV = 17

    [/报价]

    如果您计划使用 PLL、我认为您需要调整 RSCLKCFG 寄存器设置。 例如、您需要将 PLLSRC 更改为3以使用 mosc。 因此、我不知道为什么要配置 OSCSRC、因为该域指定了成为振荡器时钟(OSCCLK)源的振荡器源、当 PLL 在运行或睡眠模式期间被绕过时使用。

    [引用用户="Philip Baltz1"]

    使用这些值、我计算出以下值(以 MHz 为单位)、假设 fXTAL 是指 OSC 输入频率:

    fXTAL            25
    MDIV            29+(503/1024)=  29.49121094
    翅片               25/(0+1)(4+1)= 5

    fVCO             5 x  29.49121094 =  147.4560547
    SYSCLK          147.4560547/(1+1)=73.72802734  
    DIVSCLK         73.72802734/(17+1)=  4.096001519

    我会使用 DIVSCLK 来驱动 ADC MCLK。

    您能否确认这适用于 MSP432E4、并澄清上述不一致之处?

    [/报价]

    假设您将 RSCLKCFG 寄存器设置配置为使用 PLL、计算结果看起来正确。 仔细检查 您的 MEMTIME0寄存器设置是否与 SYSCLK 匹配。

    此致、

    James

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

    谢谢、 有许多文档错误、希望所有错误都能得到纠正。  此外、我建议 将 PSYSDIV 寄存器字段修改为单个位。  遗憾的是、该字段的复位值无效、这本身是另一个问题。