[资料分享] MSP430F6638单片机FLL——锁频环

火辣西米秀   2020-6-6 12:54 楼主

 

image.png

计算公式:fDCOCLK ÷[D × (N + 1) ] = fFLLREFCLK ÷ n
【注释】:
D:FLLD,默认为2
N:FLLN,默认为31
n:FLLREFDIV, 默认为1
fFLLREFCLK :FLL的参考时钟,默认为XT1CLK(32768Hz)
所以fDCOCLK 默认为2097152Hz,fDCOCLKDIV默认为1048576Hz
3.2.3 UCS复位之后
由于复位的时候XT1CLK未稳定,所以ACLK和FLL的参考时钟会自动变为REFOCLK(注意这里是REFOCLK,和后边WDT看门狗模式下的时钟故障保护功能,自动变成VLOCLK相区别)
根据实验情况,如果在配置ACLK和FLL之前,XT1CLK未稳定,那么时钟频率会相对变低
//稳定XT1CLK和XT2CLK的程序
//1. 解锁XT1的引脚,这是f66xx设备独有的
while(BAKCTL & LOCKBAK)// Unlock XT1 pins
{
    BAKCTL &= ~(LOCKBAK); 
}
//2. 设置XT2的引脚
P7SEL |= BIT2 + BIT3; // Port select XT2

//3. 开启XT1, XT2
UCSCTL6 &= ~(XT1OFF + XT2OFF); // Set XT1, XT2 On

//4. 稳定XT1CLK、XT2CLK、DCOCLK
do
{
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag

//5. ACLK选择XT1CLK、SMCLK选择XT2CLK
UCSCTL4 |= SELA__XT1CLK + SELS__XT2CLK; // Select SMCLK, ACLK source

3.2.4 设置DCOCLK输出的频率范围
使用UCSCTL1寄存器中的DCORSEL位来设置范围
不用看UCSCTL0寄存器中的DCO和MOD位,单片机会自动设置
尽可能让输出的频率在DCORSEL控制的范围的中间位置
3.2.5 UCS模块失效安全操作
任何一种失效都会导致OFIFG(振荡器失效中断、非屏蔽)
受到OFIE使能位控制
振荡器关闭、打开但未正常工作时,对应振荡器失效位XT1 LFOFFG,XT1 HFOFFG, XT2OFFG置位;
振荡器失效位一旦置位必须用户软件清除;
若用户软件清除振荡器失效位后失效条件依然存在,振荡器失效位会自动置位。
振荡器失效事件不受GIE控制。

  • image.png

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复