您好!
我安装 了与 em-cc430f6137板一起提供的32KHz 晶振、并运行了一个简单的程序:
使用 XT1作为 ACLK 的时钟源
使用 FLL 将 SMCLK 频率调整为8MHZ
随附了该代码、并根据 TI 提供的示例之一进行了调整:
/*将 CPU 时钟配置为8MHz */
/*如果时钟设置发生更改、请记住更新 BSP_TIMER_CLK_MHz。
*否则,所有计时器设置都不正确。
*
//初始化 LFXT1
P5OUT &= 0x03;
P5DIR &=~(BIT0 + BIT1);
P5SEL |= 0x03;//选择 XT1
UCSCTL6 |= XCAP_3;//内部负载电容
//循环直到 XT1故障标志被清除
执行{
UCSCTL7 &=~XT1LFOFFG;//清除 XT1故障标志
} while (UCSCTL7 & XT1LFOFFG);//测试 XT1故障标志
UCSCTL0 = 0x0000;//设置可能的最低 DCOx、MODx
UCSCTL1 = DCORSEL_5;//选择 DCO 范围16MHz 运行
UCSCTL2 = FLLD_1 + 243;//将 DCO 乘法器设置为8MHz
//(N + 1)* FLLRef = Fdco
//(243 + 1)* 32768 = 8MHz
//设置 FLL Div = fDCOCLK/2
_BIC_SR_register (SCG0);//启用 FLL 控制环路
// DCO 范围位已经存在时、DCO 的最坏情况稳定时间
//已更改 n x 32 x 32 x f_MCLK / f_FLL_reference。 请参阅5xx 中的 UCS 一章
// UG 进行优化。
// 32 x 32 x 8 MHz/32、768Hz = 250000 = MCLK 周期、DCO 才能稳定
_DELAY_CYCLES (250000);
//循环直到 XT1、XT2和 DCO 故障标志被清除
执行{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} while (SFRIFG1 & OFIFG);//测试振荡器故障标志
UCSCTL6 &=~(XT1DRIVE_3);// XTAL 现在稳定、减少驱动
我设置端口以获取时钟信号:
PMAPPWD = 0x02D52;
P1MAP1 = PM_SMCLK;
P1MAP0 = PM_ACLK;
PMAPPWD=0;
P1DIR |= BIT0 + BIT1;
P1SEL |= BIT0 + BIT1;
现在我用示波器可视化了时钟、这里是 ACLK:
如您所见、示波器报告的频率为32.7690KHz。
我在这里看到一些问题:
1.波形不对称,请检查比高电平部分更长的低电平部分。
2、这是一个静态图像、但实时波不是很稳定、它有一些细微的跳变、示波器报告的频率为高和低。
我怀疑由于基频不稳定、高频(8MHz)甚至更容易跳转、请参阅随附的视频
我想听取专家的意见、这是正常行为还是应该查找错误?
谢谢、
Dragos
