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.

[参考译文] TM4C1294NCPDT:Tivaware 和 SYSCTL#22时钟限制

Guru**** 2456980 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/642524/tm4c1294ncpdt-tivaware-and-sysctl-22-clock-limitations

器件型号:TM4C1294NCPDT

对于 SSI 外设、我们需要精确的16、0MHz 时钟。 当处理器的时钟为96MHz/6时、它非常适合。 (SSInClk = SYSCLK /(CPSDVSR *(1 + SCR)))。 Fxtal = 25MHz。 现在、使用最新的 Tivaware、这个频率不再可用。 这是由于 SYSCTL_22勘误表造成的。 由于我们仍然需要96MHz 时钟、因此我们需要解决问题。

勘误表中的描述并未完全解释该行为、因为它仅声明:

“当从 PLL 产生系统时钟时,用户将系统控制寄存器位 RSCLKCFG.PSYSDIV 编程为 PLL 输出分频。 该寄存器值可能不会加载到物理分频器中、从而导致系统时钟被2分频。 这种情况将导致系统时钟超出规格。”

时钟的计算方法为:

fin = fXTAL/(Q+1)(N+1)、5MHZ>fin <30MHz

MDIV =薄荷+(MFRA/1024)

fVCO =(fin * MDIV)

SYSCLK = fVCO/(PSYSDIV + 1)

由于我们多年来一直在成功地对 PSYSDIV 进行编程、因此可能存在一些故障行为的条件。 因此、会出现一些问题:

1.是否可以检查 PSYSDIV 的正确编程,如果不正确,是否可以重新编程?

如果是的话

2.如果真正的问题是 SYSCLK 高于120MHz,PSYSDIV 的编程最初可能在较低的 fVCO 上进行?

如果我们通过强制/保持 PSYSDIV 为值1来强制使96MHz 尽可能接近、我们将需要不同的 fVCO 值。 数据表未给出 fVCO 的最小值/最大值、但由于 SYSCTL_22、最大值似乎为240MHz。

3. fVCO 的最大值是否仍为480MHz?

4. fVCO 的最小值是多少?

电源 使用数字并将晶振调整8 PPM 至24.9998063 MHz、我可以得到112MHz 的 SYSCLK、精确地除以7、以获得所需的16MHz。 然后 PSYSDIV = 2、Q = 2、N = 0。

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

    尊敬的 Peter:

    想知道  为什么不为 SSI 模块使用16MHz PIOSC 替代时钟源? 在特定 MCU 温度下重校准后 、PIOSC 可保持1%的精度。

    #22:如果使用 TivaWare 2.1.2或更早版本中提供的 ROM_SysCtlClockFreqSet 或 SysCtlClockFreqSet API、则会导致此问题。

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

    您好、Peter、

    1. 是的。 如果 PSYSDIV 编程为2以外的值,并且 PLL 的 M、N 和 Q 分频器显示输出 VCO 为480MHz,则必须重新编程以避免出现错误。
    2. 问题在于系统时钟的频率超过120 MHz。 因此、PSYSDIV 必须保持为2。
    3. fVCO 的最大值为480MHz
    4. 最小值为100MHz (勘误表 ELEC #06)。

    您可以为 VCO 选择一个提供96MHz 系统时钟的值。 因为 fVCO 必须是系统时钟的4倍、所以 Q 分频器将其除以2、而 PSYSDIV 分频器将其除以2。 这将导致384MHz 的 VCO。 如果晶体值为25MHz、则可能无法实现、但应使用另一个晶体频率。

    但是、如果必须使用以太网、则25MHz 晶体是不可协商的、因此无法使用它来获得精确的16MHz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用内部振荡器的想法不能为我们提供所需的精度。 是的、我们需要25MHz 晶体用于以太网接口。

    我想再澄清一个问题:

    1A。 当注释通过设置参数 PSYSDIV 进行2分频时,您的意思是将寄存器 PSYSDIV 设置为值1,从而给出2分频?

    1b。 由于我们使用旧的 Tivaware 已有很长一段时间、但没有发现问题、因此我们想了解问题的根源。 问题是否总是编程正确,如果是,我们是否可以再试一次,可能在等待了一段时间后再试一次?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Peter、

    1A)是的、这就是我所说的、很抱歉不清楚。

    1b)问题出现在以下两种情况中的任何一种:
    器件进行系统复位
    2. PLL 在任何运行时间更改为系统时钟时再次解锁和锁定
    此外、问题外观因器件而异、因此仅因为您目前没有观察到它、并不意味着您的设计也永远不会受到它的影响。 避免可能发生勘误的唯一"防着重号"方法是实施提供的变通办法。