请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5419A 工具/软件:Code Composer Studio
大家好、我有一个电路板、它在 XT1上有一个外部16MHz 晶体。
我有从内部 DCO @ 16MHz 或者使用外部 xtal 运行这个电路板的代码。
当配置为外部振荡器时、在 LMP4模式下、我将获得比内部 DCO 多约350uA 的电流。
在进入 LMP4之前、我应该关闭 XT1吗?
void InitXTAL (void) { //设置 Vcore 电压电平2高达20Mhz PMM_setVCore (PMM_CORE_LEVEL_2); #ifdef INT_XTAL //配置 XTAL IO GPIOOUT 低电平(IO_XTAL_XT1_XXIN);//XT1输出低 电平 GPIOCLLCLLCLLCLL_/ REF_CLK_REF_REF_REF_REF_CLK ;/ REF_CLK_CLK_CLK_REF_CLK_REF_REF_CLK_REF_CLK_REF_REF_REF_CLK_REF_CLK_REF_REF_REF_CLK_REF_CLK_CLK_REF_CLK_REF_CLK_REF_CLK_CLK_REF_CLK_CLK_REF_CLK_CLK_CLK_REF_CLK_REF_CLK_REF_CLK_CLK_CLK_CL /2 UCSCTL6 = XT1OFF | XT2OFF;//关闭 XT1和 XT2 //将 DCO 初始化为16.00MHz __bis_SR_register (SCG0);//禁用 FLL 控制循环 UCSCTL0 = 0x0000u;//将 DCOx、MODx SCTL1设置为最低可能值;//设置 为 UCSCTL2 = 0x0000U;//设置为 DCOx = 50 = UCSCTL2 = UCSCT8;//将 DCO 乘法器设置为16MHz //(N + 1)* FLLRef = Fdco //(488 + 1)* 32768 = 16MHz __BIC_SR_register (SCG0);//启用 FLL 控制环路 // DCO 范围位已 更改时最坏情况下的稳定时间//为 n x 32 x 32 x f_MCLK /f_FLL_reference。 有关优化、请参阅5xx // UG 中的 UCS 一章。 // 32*32*16MHz/32768Hz = 500000 = MCLK 周期,DCO 要使 __delay_cycles (500000u); #else //Ext XTAL //配置 XTAL IO GPIODirInput (IO_XTAL_XT1_XIN);//输入 GPIODirOutput (IO_XTAL_XT1_XOUT);//输出 GPIOPeripheralEnable (IO_XTAL_XT1_XIN);//将 XIN 设置为外设功能、即 XT1 GPIOallalEnable (IO_XT1);//将 XT1设置为外设功能 //启用具有中等驱动强度 的 XT1 UCSCTL6 = XTS | XT1DRIVE_1 | XT2OFF; //XTAL = 16MHz - MCLK 16MHz - SMCLK 8MHz UCSCTL4 = SELA__REFOCLK | SELM_XT1CLK | SELM_XT1CLK;MCLK = 1:MCLK;/ CLK = CLK;MCLCLK = CLK;/ CLK = CLK/ CLK/ CLK/ CLK/ CLK/ CLK/ CLK/ CLK/ CLK: REFCLK:1:CLK /2 #endif //确保 ACLK 始终保持开启 BitSet (UCSCTL8、ACLKREQEN); //循环直到 XT1、XT2和 DCO 故障标志被清除*/ 执行 { //清除 XT2、XT1、DCO 故障标志(如果仍然存在故障则复位) BitClear (SC1HTOL、XFFG + UC1HTOL + TFFG + TCLG //清除振荡器故障标志 BitClear (SFRIFG1、OFIFG); } while (BitTest (SFRIFG1、OFIFG));//测试振荡器故障标志 }