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.

[参考译文] MSP430F5529:如何配置 USCSTL0寄存器?

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/610557/msp430f5529-how-to-configure-uscstl0-register

器件型号:MSP430F5529

首先、我对微控制器开发不熟悉、因此请原谅我这个简单的问题。 我正在尝试为我的第一个机器人团队学习、以便我们可以使用 MSP430来处理一些额外的传感器。  

我正在努力了解/配置统一时钟系统。 我希望它在39MHz 设置下运行。 我一直在阅读 系列指南 和器件专用数据表。 我认为我有一个基本的理解。 我的代码如下:

/*
目标:使 SMCLK 以39MHz 的频率运行以驱动 SPI
*/WDTCTL
= WDTPW | WDTHOLD;//停止看门狗定时器
_bis_SR_register (SCG0);//禁用 FLL
UCSCTL0 = DCO0+DCO1+DCO2+DCO3+DCO4;//禁用 FLL UCSCTL0 = DCO0+DCO0位[WDCO0+DCOS1+DCOS1+DCOS]0不起作用;// DCOL =
DCOL 位 DCO 6 = DCOL //在 www.ti.com/.../msp430f5529.pdf 页上选择频率范围
UCSCTL2 = 0x000;//选择无环路分频
器 UCSCTL3 |= SELREF_2;//将 FLL 引用设置为 REFOCLK (仅限内部)
UCSCTL4 |=
不相关的__DCOCLK;//选择 SMCLK 时钟源为 DCOCLK P1DIR |=
2;/ BIT2; //将 P2.2设置为输出方向以监控时钟
P2SEL |= BIT2;//选择 P2.2作为 SMCLK 输出(在 www.ti.com/.../msp430f5529.pdf pg 84
__BIC_SR_register (SCG0)中定义);//启用 FLL 

但是、该剂量不起作用、因为我的示波器无法从 P2.2读取。 当我把 UCSCTL0更改为0x000时、它起作用、但只在~7.x MHz 时运行。 通过调试器查看寄存器值时、除 USCSTL0外、所有 USCSTLx 寄存器都是正确的。 我认为这可能不是我认为的工作方式。 请有人解释 UCSTL0是如何配置的、我需要做什么才能使它以39MHz 的频率运行?

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

    您好、Ashwin、  

    MSP430F5529数据表的5.3节中、您可以看到最大系统频率为25MHz。 39MHz 超出了器件规格、我不能建议您如何设置该频率。  

    如果您想将器件设置为25MHz、 您可以在此处找到有关该器件的大量示例。   MSP430F55xx_UCS_10.c 示例是您应该参考的内容。 如果您有任何疑问、请随时提问。  

    此致、  
    Caleb Overbay

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

    [报价用户="Ashwin Gupta"]我希望它在39MHz 设置上运行...[/quot]

    如果由于某些特殊原因而需要运行 F5529超频、那么我建议您直接从 XT2使用 MCLK、在最高 Vcore 电平上。 根据使用的外设、它在32MHz XT2下应该可以正常工作。

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

    感谢您的快速响应! 昨天晚上我意识到了这一点、但我不知道如何阻止问题发布。 抱歉、我应该注意到之前的25MHz 限制。 幸运的是、25MHz 足以满足我的需求(我只需要20个)。 UCS_10示例正是我要寻找的。 我非常感谢。 但是、我仍然不理解的一件事是、为什么在我看到的每个示例中 DCOx 和 MODx 位总是设置为0x000。 在 UCS_10示例中、它们对 UCSCTL1使用 DCORSEL_7、并注释它们已将其置于50MHz 范围内。 但它们使用0x000表示 DCO、使用 MOD 表示 UCSTL0。 根据数据表(www.ti.com/.../msp430f5529.pdf )第31页,这对我来说是没有什么意义的,因为 DCORSEL7和 DCO0应该将其设置为8.5-19.6MHz。 如果 DCOx 为31、则更合理、因为根据数据表、它介于60-135MHz 之间。 我知道 MSP430实际上不能达到这些范围、但是 UCSCTL0的 DCOx/MODx 位对我来说仍然没有太大意义。

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

    25MHz 就可以实现。 我只是随意选择了39、因为我认为配置起来最简单(是其范围的下限)。 任何超过20MHz 的频率对我来说都足够了。 虽然感谢您的建议、但我将来可能需要它。

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

    UCSCTL0寄存器设置为0x0000、因为在操作过程中 FLL 会自动修改这些位。 您可以在器件用户指南的统一时钟系统(UCS)部分中阅读有关此内容的更多信息。 当器件开始运行时、它们不会保持在0x0000。

    此外、有关 DCORSEL 设置的注释会产生一些误导。 通过查看器件数据表的图5-10、您可以看到 DCORSEL_7的范围为~11MHz -100MHz、而25MHz 接近中间值。 设置范围选择位时、您希望尝试设置的频率接近该范围的中间值。 我希望这会清除一些问题。

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Caleb! 这对我来说更有意义了。 我以前在 UCSCTL0上很困惑。 我的问题是这个问题和你之前的答案,我接受了前一个问题。