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.

[参考译文] MSP430FR2675:DriverLib 时钟初始化

Guru**** 2513185 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1130553/msp430fr2675-driverlib-clock-initialization

器件型号:MSP430FR2675

您好!  

我正在解决我们在制造过程中看到的问题、并认为我在 MSP430FE2xx_4xx 器件的驱动程序库中发现了一个错误;版本:2.91.13.01。  

当我们使用 CS_initFLLCalculateTrim (3000、3000/34、残桩)设置时钟时、我们会发现一个问题。 34之前是32、这与我们的原型一起使用、当我们投入生产时、我们看到一些器件无法通过时钟初始化而出现了一些问题、并且基于 TI FAE 的反馈(我找不到电子邮件)、 我们更改为34、这一情况已经存在了一段时间、现在我们看到了同样的问题。   

如果我将分频器从34增加到35、我可以使它再次工作、但在故障排除时、我意识到 CS_initFLLCalculateTrim 中的循环似乎跟踪最佳设置、但如果它不在定义的范围内、它将连续循环、直到它位于设置的值之内。   

我希望和 FAE 讨论这个问题、看看库中是否有可能的错误。   

 

谢谢、  

Ryan  

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

    您好、Ryan、

    您认为 driverlib 中的错误是什么? 就我所见、第二个参数只是延迟函数的返回、所以振荡器故障在时钟稳定前不会触发。  

    [引用 userid="189397" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1130553/msp430fr2675-driverlib-clock-initialization"如果我在故障排除时将分频器从34分频器增加到35、我可以让它再次工作 我意识到 CS_initFLLCalculateTrim 中的循环似乎跟踪最佳设置、但如果不在定义的范围内、它将连续循环、直到它位于设置的值范围内。   [/报价]

    您的上述陈述令我感到困惑。  CS_initFLLCalculateTrim 中 有两个代码等待的位置。 1) 1)确保振荡器故障清零2)等待特定的延迟、然后再重新启用 中断。 是否卡在1)中? 3000/34和3000/35将影响2)、但不应影响1)。  

    您能否查看 driverlib 示例 cs_ex1_DCO1MHzSWTrim 并查看您的代码与示例之间是否有任何差异?  

    您是如何针对第二个参数来到3000/34的? 该示例使用30。

    此致、

    Evan

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

    抱歉、我获取了错误的函数名称、它实际上卡在 privateCSComputeDCOFTrim 的 do-while 循环中。   

    我认为、如果它从未击中设定的目标、而不是在 X 个周期或某种情况后从环路中踢动、那么它可能会在这段时间内卡住。  为了进行测试、我添加了一个计数、并在24个周期后从该执行中启动它、它似乎在我当前测试的一个单元上运行良好。   

    我来到了3000/34号; 最初我使用的是3000/33、因为我知道比率为目标 kHz/FLL kHz (32.768kHz)、所以我对 kHz 取整并将代码设置为允许时钟速度调整 为1个数字、然后进行数学运算、而不是将其除以代码之外。   

    转至/34是在之前与 FAE 讨论 过相同的事情后进行的、这是建议 的解决方法。   

    我的其余时钟设置与该示例非常匹配。   

    Ryan  

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

    您是否知道 privateCSCompteDCOFTrim (..)中的位置 您的应用程序被卡住了吗? 代码在两个位置等待该函数内的标志。

    您尝试锁定的频率是多少?  

    此外、请确保查看 《MSP430FR2xx/FR4xx DCO+FLL 应用指南 》第4节、其中专门讨论了如何快速锁定 FLL。  

    此致、

    Evan

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

    它会卡在第二个 do-while 中、在这里它会检查不同的 DCO 抽头以找到适合的方法。 我前面没有行号、但它从未完全落在范围内、因此它会继续循环、而不是选择"最佳"匹配并继续。   

    我尝试锁定到3MHz。   

    我已经很仔细地看了这个指南。  我将再次查看它、看看我是否遗漏了任何东西。  

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

    感谢 Ryan 的最新消息。

    我仍在尝试了解您刚才所说的内容:  

    [引用 userid="189397" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontroller-forum/1130553/msp430fr2675-driverlib-clock-initialization"]如果我将分频器从34增加到35、我可以让它重新工作、但报价为35 [但报价为35]

    更改此^值只会影响  调用 privateCSCompteDCOFTrim()后的等待时间。 我不知道更改此值会如何影响您是否陷入 privateCSCompteDCOFTrim ()。

    您如何确认您卡在  privateCSCompteDCOFTrim ()中?

    Evan

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

    我向调试器确认了代码被卡住的位置、并使用 LED 打开/关闭来在锁定时向其所在的函数发出信号。  

    我同意这一点看起来并不重要、但 在使用比率的 privateCSComputeDCOFTrim 调用中设置的寄存 器之一必须影响通过该循环进行注册的可行性。   

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

    明白。 感谢您的确认、我明天将再次与您会面。

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

    我还想指出一点、这似乎是零件问题的一部分。  我们的板中有很大一部分在当前设置下工作正常。  在给定此设置的情况下、我们会看到20%范围内的一些故障。   

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

    Ryan、

    感谢您提供的信息和耐心等待。  

    由于您尝试锁定 DCO 以将其设置为"介于"频率(欧姆大于1、2、4、8、12MHz 等)、因此您需要遵循 《MSP430FR2xx/FR4xx DCO+FLL 应用指南》中引用的示例代码 (下载此处: MSP430FR2xx/FR4xx DCO+FLL 代码示例)  

    据我所知、driverlib 代码并未涵盖这种方法。 我对该示例进行了小幅修改、使其运行频率为3MHz、并且能够看到它能够正常工作。

    请在您的系统中尝试此方法并报告您的发现。

    此致、

    Evan

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

    您好 Evan、  

    我查看了示例代码、它的工作方式与 driverlib 相同。  我发现唯一的区别是在 TRIM 函数中(示例代码:software_Trim / driverlib:privateCSComputeDCOFTrim)。   

    在 Software_Trim 中、newDcoTap < 50的 EXIT 环路设置中还有一个额外的条件;当这被添加到 driverlib 代码中时、它会按预期工作、并且寄存器输出到相同的值。  添加该条件似乎也允许库在这些中间频率下工作。

    这是在该 Software_Trim 函数中设置的示例代码、具有圆圈内的额外条件。  

     

    这里是缺少该条件的 driverlib。   

    请告诉我您对此有何看法。  

    谢谢、  

    Ryan  

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

    Ryan、

    我认为您的分析是正确的。 目前、我对 FR2xx 器件成功退出时钟设置为什么需要这样做没有任何其他见解。 但我会继续进行、因为 FR2xx 特定示例推荐了这种方法。

    要确认:这是否解决了您的问题?

    此致、

    Evan

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

    Evan、

    非常好、很高兴听到我们在想同样的事情。  我将在下一周左右继续测试其他器件、以验证这是否解决了问题、并在我完成测试后将其标记为已解决(如果它确实清除了多个器件上的此问题)。  

    请注意、我认为这应该整合到库中、以便即使在中间频率下也能按预期工作。  这是否是 TI 将在未来发布时考虑的内容?   

    谢谢、  

    Ryan  

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

    听起来不错。

    我将向我们的软件团队提交一个 TT。 但是、我不知道发布时间线会是什么。

    此致、

    Evan

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

    好的、听起来不错。  我认为这是一个很好的补充。   

    下周将向您报告好消息或坏消息。   

    感谢您的帮助、

    Ryan  

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

    您好 Evan、  

    我已经在更多电路板上测试了此更改、并发现它运行良好。  

    我最后的修复方法是向驱动程序库添加附加条件、因为这允许代码保持大致相同、然后我在更新时测试了以前工作的板时钟速度与新的时钟速度、并且时钟速度没有变化。   

    感谢您的帮助、我已经标记了解决此问题的答案。  

    Ryan