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.

[参考译文] MSP430F5438A:澄清了时钟启动

Guru**** 2542650 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/859568/msp430f5438a-clock-start-up-clarification

器件型号:MSP430F5438A

大家好、

以下内容:   MSP430F5438A:1%的电路板将出现应用程序代码停止 :

之前、代码启动时钟两次-一次在引导加载程序中、一次在主代码中。 引导加载程序中的时钟启动已经被移除、现在依靠1MHz 运行的缺省条件来运行处理器。

示例代码不表示您需要等待任何东西才能稳定执行、这是正确的吗?

代码未运行 FLL 或内部振荡器、以下设置是否正确且顺序正确以实现最佳运行?

以1MHz 运行以校验内存后,它将跳转到主应用程序 ,在该应用程序中设置以下的功率和时钟:

 

WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器



__disable_interrupt (); //禁用全局中断



/*---- 向上移动到全功率--- *

SetVCoreUp (0x01);

SetVCoreUp (0x02);

SetVCoreUp (0x03);



/*--将 XT2设置为12MHz --- *

P5SEL |= BIT2+BIT3; //端口选择 XT2

UCSCTL6 &=~XT2OFF; //启用 XT2



//将驱动强度[01]设置为12MHz

UCSCTL6 &=~(XT2DRIVE1); //关闭驱动位1

UCSCTL6 |= XT2DRIVE0; //打开驱动位0



/*------ 将 XT1设置为32kHz --- *

P5SEL |= BIT4+BIT5; //选择 XT1

UCSCTL6 &=~(XT1OFF); // XT1打开



//将驱动强度[00]设置为32kHz

UCSCTL6 &=~(XT1DRIVE1); //关闭驱动位1

UCSCTL6 &=~(XT1DRIVE0); //关闭驱动位1



/*---- 直到 XT1、XT2和 DCO 稳定--- */

{

UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);

//清除 XT2、XT1、DCO 故障标志

SFRIFG1 &=~OFIFG; //清除故障标志

} while (SFRIFG1&OFIFG); //测试振荡器故障标志

/*---- 设置时钟源--- *

UCSCTL4 = 0X0055;//Acclk= xt1、SMclk = XT2、MCLK = XT2clk

UCSCTL1 |= DISMOD;//关闭调制

/*--- 然后继续---- * 

谢谢、请告诉我!!
簧片

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

    嗨、Reed、

    很显然、我无法测试代码、但总的来说、它对我来说很好!  看起来他们已经合并了几个很好的代码示例、并将 UCS_8.c 用作基础并遵循了它的流程、我认为这也是最好的。  http://dev.ti.com/tirex/explore/node?node=APlALh6aA3ZIkW3pN4VrDQ__IOGqZri__LATEST 

    启动时、将会出现1MHz DCO。  由于它们直接由 XT2晶振运行、因此它们不需要 FLL。  FLL 主要用于从频率较低的晶振中稳定较高频率的 DCO 频率。  例如、仅使用32MHz 晶体即可实现并精确的12MHz DCO 时钟。   在较高频率的晶体上运行时、不需要该参数。   

    谢谢、

    JD