msp430 UCS实验报告

  • 格式:doc
  • 大小:1.86 MB
  • 文档页数:10

Msp430单片机第二次实验报告 1. 系统时钟--ACLK,SMCLK,MCLK的产生 1.1 实验目标 (1) 了解MSP430F6638 的时钟系统 (2) 掌握配置MSP430F6638 时钟的方法 (3) 了解MSP430F6638 的时钟系统与低功耗之间的关系

1.2 实验原理 MSP430F6638 具有灵活的时钟系统: (1) 外部时钟XT1,XT2; (2) 内置时钟DCO(锁相环FLL+); (3) 内置时钟VLO,12KHz 典型频率,内置REFO,典型频率32.768KHz; (4) 时钟检测系统,时钟不稳定或失效检测,可触发中断; (5) MCLK ----CPU 运行时钟 (6) SMCLK---子系统运行时钟 (7) ACLK -----辅助时钟 本实验演示了基础的时钟配置。

UCS 模块包括5 个时钟源 (1) XTICLK:低频/高频振荡器,可以使用32768Hz 外部晶振; (2) VLOCLK:内部低功耗、低频率振荡器,典型频率为10KHz; (3) REFOCLK:进过调整的内部振荡器,典型值为32768hz,可以用作FLL 的参考时钟; (4) DCOCLK:内部数字时钟,可以通过FLL 得到稳定的时钟信号; (5) XT2CLK:可选的高频振荡器。可以用作FLL 的参考时钟。 UCS 模块提供的3 个可利用的时钟信号: (1) ACLK:辅助时钟。可以通过软件选择XT1CLK, REFOCLK, VLOCLK, DCOCLK, DCOCLKDIV 或(在有可用的XT2CLK 的情况下)XT2CLK 作为辅助时钟。 DCOCLKDIV 是DCOCLK 通过FLL 模块经过1,2,4,8,16,32 分频获得的。ACLK 可 以为某些外围模块提供时钟。ACLK 可以被1,2,4,8,16,32 分频。ACLK/n 就是 ACLK 经过1,2,4,8,16,32 分频获得的,同时也可以通过外部引脚输出; (2) MCLK:主时钟。MCLK 可以被1,2,4,8,16,32 分频后为CPU 和系统提供时钟。 MCLK 的获得和来源ACLK 的相同; (3) SMCLK:子系统时钟。SMCLK 被1,2,4,8,16,32 分频后为个别外围模块提供时钟。 其来源和ACLK 相同。

1.3 实验步骤 (1) 将PC 和板载仿真器通过USB 线相连; (2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入 MSP430F6638_DemoV2.0\5.CLK_system\XT1 sources ACLK 或者 MSP430F6638_DemoV2.0\5.CLK_system\XT2 sources SMCLK 文件夹中的工程;

(3) 选择对该工程进行编译链接,生成.out 文件。然后选择,将程序下载

到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择单步调试程序,选择F3 查看具体函数。也可以程序下载之后,按下,软件界面恢复到原编辑程序的画面。再按下实验板的复位键,运行程序。(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。 1.4 实验现象 通过示波器实际测量,MSP430 可以通过软件配置,选择不同的时钟源,工作在不同的时钟频率下。

1.5 关键代码 实验一: #include

void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

P1DIR |= BIT0; // ACLK set out to pin P1SEL |= BIT0; // P5SEL |= BIT4+BIT5; // Select XT1

// while(BAKCTL & LOCKIO) // Unlock XT1 pins for operation // BAKCTL &= ~(LOCKIO); UCSCTL6 &= ~(XT1OFF); // XT1 On UCSCTL6 |= XCAP_3; // Internal load cap // Loop until XT1 fault flag is cleared do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags }while (SFRIFG1&OFIFG); // Test oscillator fault flag

UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength UCSCTL4 |= SELA_0; // ACLK = LFTX1 (by default) UCSCTL5 |= DIVA_0; /* ACLK Divider Bit: 0 */ __bis_SR_register(LPM3_bits); // Enter LPM3 __no_operation(); // For debugger }

实验二: #include

void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

P1DIR |= BIT0; // ACLK set out to pin P1SEL |= BIT0;

P3DIR |= BIT4; // SMCLK set out to pins P3SEL |= BIT4;

P7SEL |= BIT2+BIT3; // Port select XT2

UCSCTL6 &= ~XT2OFF; // Enable XT2 UCSCTL3 |= SELREF_2; // FLLref = REFO // Since LFXT1 is not used, // sourcing FLL with LFXT1 can cause // XT1OFFG flag to set UCSCTL4 |= SELA_2; // ACLK=REFO,SMCLK=DCO,MCLK=DCO

// Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags }while (SFRIFG1&OFIFG); // Test oscillator fault flag

UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to // expected frequency UCSCTL4 |= SELS_5 + SELM_5; // SMCLK=MCLK=XT2 UCSCTL5 |= DIVS_0; /* SMCLK Source Divider 0 */ __no_operation();

//while(1); // Loop in place __bis_SR_register(LPM0_bits); // Enter LPM3 __no_operation(); // For debugger }

1.6 思考题 (1) MSP430 系列单片机有哪些时钟输入信号? 答:ACLK,MCLK,SMCLK

(2) MSP430 系列单片机的DCO 振荡器有什么重要用途? 答:DCOCLK是内部数字时钟,可以通过FLL 模块经过1,2,4,8,16,32 分频得到稳定的时钟信号 。可以作为ACLK,MCLK,SMCLK的信号源。DCO振荡器是一个可数字控制的RC振荡器, 它的频率随供电电压、环境温度变化而具有一定的不稳定性。DCO频率可以通过选择FLL的频率(FLLRENCLK/n)来增强振荡频率的稳定性。

(3) MSP430 系列单片机不接任何振荡器是否可以正常工作? 答:不可以。Msp430单片机的时钟既要有高频率以对系统硬件需求和外部事件有较快的反应速度,又要有低频率来降低电流消耗,还要有多个时钟源产生多个时钟输出信号,所以需要外接振荡器。

2. 系统时钟--FLL与时钟校正 2.1 实验目标 (1) 熟悉CCSV5 集成开发环境的使用 (2) 了解MSP430 的时钟系统 (3) 掌握配置MSP430 时钟系统的方法

2.2 实验原理 本实验详细的介绍了MSP430F6638 的FLL 锁频环电路与时钟的校正。这个实验室通过 FLL 锁频环电路自动校正使内部DCO 振荡器稳定的运行在2.45MHz,相互关系式有:ACLK=XT1=32768Hz,MCLK=SMCLK=DCO=(74+1)*REFO=2457600Hz,这里XTICLK 被选为ACLK,REFO 是内部调整过的32768Hz 参考时钟,提供一个稳定的参考时钟用作FLLREFCLK。

运行主程序之前关闭看门狗时钟,进行复位,防止改变时钟源时产生可能的错误时间 间隔。用引脚P1.0 与辅助时钟ACLK 连接,引脚P3.4 与子系统时钟SMCLK 连接,通过 软件选择频率为32768Hz 的XT1CLK 时钟源作为辅助时钟,ACLK=XT1=32768Hz,设置 FLL 的相关参数,包括分频器(N+1)FLLN 和分频值FLLD 以及FLL 的参考时钟,通过 f(DCOCLK)=D*(N+1)*f(FLLREFCLK)得到稳定的DCOCLK 频率。