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:勘误表 SYSCTL_22问题

Guru**** 2609895 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/762841/tm4c1294ncpdt-errata-sysctl-22-questions

器件型号:TM4C1294NCPDT

您好!

 

我的客户对 Tiva TM4C1294NCPDT 的勘误表 SYSCTL#22有一些疑问。

 

勘误说明为:

 

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

 

1)    1)客户 认为  、在-10°C 下加电时、他们可能会在几块电路板上遇到此问题。  这些相同的板在较高温度下正常运行、而其他板在整个温度范围内正常运行。  应用变通办法似乎可以解决-10°C 时出现问题的主板,但他们更有信心 解决真正的问题,而不仅仅是间歇性的问题。  您能否提供任何其他信息来说明哪些条件会导致未按照勘误表中所述加载寄存器?

2) 2)     不确定  我们是否完全理解勘误表。  说明听起来像是当您向寄存器写入除以2以外的值时、RSCLKCFG.PSYSDIV 寄存器可以错误地设置为除以2。  这将使 我们相信 RSCLKCFG.PSYSDIV 应该始终被设定为2分频以确保它按照您的期望进行分频。  但是、变通办法中的代码会将 RSCLKCFG.PSYSDIV 设置为不同的值。  但是、变通办法中的更改确实会始终将 PLLFREQ1.Q 设置为除以2 (旧代码除以1)。  描述是否错误、可能无法正确加载的实际上是 PLLFREQ1.Q?

3)      3)权变措施以160MHz 或240Mhz 而非320MHz 或480MHz 运行 VCO 频率。  这意味着、使用权变措施无法同时以120MHz 运行 CPU、以32MHz 运行 ADC 时钟以2MSPS 运行。  对吧?

4) 4)    我们希望运行25MHz MOSC、480MHz VCO、32MHz ADC 时钟和120MHz CPU/SYSCLK。  在处理勘误表 SysCtl#22时、可以使用以下有效方法之一:

a.     将 PLLFREQ0.mint 设置为乘以192、将 PLLFREQ1.Q 设置为除以2、将 PLLFREQ1.N 设置为除以5、将 ADCC.CLKDIV 设置为除以15、并将 RSCLKCFG.PSYSDIV 设置为除以4。

 

 

b.      将 PLLFREQ0.mint 设置为乘以96、将 PLLFREQ1.Q 设置为除以1、将 PLLFREQ1.N 设置为除以5、将 ADCC.CLKDIV 设置为除以15、并将 RSCLKCFG.PSYSDIV 设置为除以4。  但是、根据需要循环并重写 PLLFREQ1、直到 PLLFREQ1.Q 正确回读、并循环重写 RSCLKCFG.PSYSDIV、直到它正确回读。  此外、在 RSCLKCFG.PSYSDIV 被正确读回之前、延迟从 PIOSC 切换到 PLL 时钟。

 

对 SYSCTL_22的任何其他见解都将是有益和感激的。  提前感谢您的支持!

 

谢谢!

Errol Leon

应用工程师

现场应用工程师

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

    [报价 USER="Errol Leon6"]您能否提供任何其他信息,说明哪些条件会导致不按勘误表中所述加载寄存器?[/QUERPLET]

    不是真的。 这个问题的根本原因是有两个寄存器提供 PSYDIV 计数预加载。 写入和读取的寄存器以及内部影子寄存器。 为了避免在写入可见的 PSYDIV 位时中断时钟信号(如果这些位未发生更改)、除非可见寄存器发生更改、否则不会重新加载影子寄存器。 当两个寄存器以不同状态加电时、对可见寄存器的写入可能不会传播到影子寄存器、从而使其处于2分频。 选择了权变措施、这样 PLL 被设定为240MHz 并且一个除以2不会导致系统时钟超过120MHz 的最大频率。

    根据设计、寄存器位随机加电。 这些位由 PLL 计时、而不是由系统时钟计时、因此并不总是正确复位。 任何此类位的加电状态都是过程(每个器件中的每个位稍有不同)、电压和温度的函数。 某些器件仅在低温下发生故障这一事实与此问题一致、但每个器件的行为都是唯一的。

    [引用 USER="Errol Leon6"]描述是否错误,可能无法正确加载 PLLFREQ1.Q?[/quot]

    它是 PSYDIV 位。 希望上面的描述有助于解释。

    [引用 USER="Errol Leon6]*这意味着用户无法同时以120MHz 的频率运行 CPU、以32MHz 的频率运行 ADC 时钟、以2MSPS 的频率运行 ADC 时钟。  正确?[/报价]

    是的、使用正确的当前解决方法。

    Errol Leon6 说:
    是在解决勘误表 SysCtl#22时执行此操作的有效方法之一:[/quot]

    否、因为这两种方法都依赖于 PSYDIV 的正确读取和写入。 如果它们的 CPU 必须为120MHz、ADC 必须为32MHz、则可以尝试使用给定的权变措施(PLL=240MHz、SYSCLK=120MHz)、然后将 PSYDIV 更改为3 (除以4)并验证(与 PIOSC 或晶体比较) SYSCLK 现在为60MHz。 然后切换回 PIOSC 并将 PLL 初始化为480MHz。 这应该起作用、因为您已成功地将可见的 PSYDIV 位与其对应的影子位同步。