msp430 UCS实验报告.docx
- 文档编号:10625854
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:15
- 大小:288.79KB
msp430 UCS实验报告.docx
《msp430 UCS实验报告.docx》由会员分享,可在线阅读,更多相关《msp430 UCS实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
msp430UCS实验报告
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->ImportExistingCCSEclipseProject,导入
MSP430F6638_DemoV2.0\5.CLK_system\XT1sourcesACLK或者
MSP430F6638_DemoV2.0\5.CLK_system\XT2sourcesSMCLK文件夹中的工程;
(3)选择
对该工程进行编译链接,生成.out文件。
然后选择
,将程序下载
到实验板中。
程序下载完毕之后,可以选择
全速运行程序,也可以选择
单步调试程序,选择F3查看具体函数。
也可以程序下载之后,按下
,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。
1.4实验现象
通过示波器实际测量,MSP430可以通过软件配置,选择不同的时钟源,工作在不同的时钟频率下。
1.5关键代码
实验一:
#include
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
P1DIR|=BIT0;//ACLKsetouttopin
P1SEL|=BIT0;
//P5SEL|=BIT4+BIT5;//SelectXT1
//while(BAKCTL&LOCKIO)//UnlockXT1pinsforoperation
//BAKCTL&=~(LOCKIO);
UCSCTL6&=~(XT1OFF);//XT1On
UCSCTL6|=XCAP_3;//Internalloadcap
//LoopuntilXT1faultflagiscleared
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);
//ClearXT2,XT1,DCOfaultflags
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag
UCSCTL6&=~(XT1DRIVE_3);//Xtalisnowstable,reducedrivestrength
UCSCTL4|=SELA_0;//ACLK=LFTX1(bydefault)
UCSCTL5|=DIVA_0;/*ACLKDividerBit:
0*/
__bis_SR_register(LPM3_bits);//EnterLPM3
__no_operation();//Fordebugger
}
实验二:
#include
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
P1DIR|=BIT0;//ACLKsetouttopin
P1SEL|=BIT0;
P3DIR|=BIT4;//SMCLKsetouttopins
P3SEL|=BIT4;
P7SEL|=BIT2+BIT3;//PortselectXT2
UCSCTL6&=~XT2OFF;//EnableXT2
UCSCTL3|=SELREF_2;//FLLref=REFO
//SinceLFXT1isnotused,
//sourcingFLLwithLFXT1cancause
//XT1OFFGflagtoset
UCSCTL4|=SELA_2;//ACLK=REFO,SMCLK=DCO,MCLK=DCO
//LoopuntilXT1,XT2&DCOstabilizes-inthiscaseloopuntilXT2settles
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);
//ClearXT2,XT1,DCOfaultflags
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag
UCSCTL6&=~XT2DRIVE0;//DecreaseXT2Driveaccordingto
//expectedfrequency
UCSCTL4|=SELS_5+SELM_5;//SMCLK=MCLK=XT2
UCSCTL5|=DIVS_0;/*SMCLKSourceDivider0*/
__no_operation();
//while
(1);//Loopinplace
__bis_SR_register(LPM0_bits);//EnterLPM3
__no_operation();//Fordebugger
}
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频率。
2.3实验步骤
(1)将PC和板载仿真器通过USB线相连;
(2)打开CCS集成开发工具,选择Project->ImportExistingCCSEclipseProject,导入
MSP430F6638_DemoV2.0\6.CLK_fll\DCOat2.45MHz文件夹中的工程;
(3)选择
对该工程进行编译链接,生成.out文件。
然后选择
,将程序下载
到实验板中。
程序下载完毕之后,可以选择
全速运行程序,也可以选择
单步调试程序,选择F3查看具体函数。
也可以程序下载之后,按下
,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。
2.4实验现象
程序运行之后,将示波器探头连接到MCU的P3.4管脚,调整好示波器参数,可以检
测出该管脚有2.45MHz左右的频率输出。
2.5关键代码
#include
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
P1DIR|=BIT0;//ACLKsetouttopins
P1SEL|=BIT0;
P3DIR|=BIT4;//SMCLKsetouttopins
P3SEL|=BIT4;
while(BAKCTL&LOCKIO)//UnlockXT1pinsforoperation
BAKCTL&=~(LOCKIO);
UCSCTL6&=~(XT1OFF);//XT1On
UCSCTL6|=XCAP_3;//Internalloadcap
//LoopuntilXT1faultflagiscleared
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);
//ClearXT2,XT1,DCOfaultflags
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag
//InitializeDCOto2.45MHz
__bis_SR_register(SCG0);//DisabletheFLLcontrolloop
UCSCTL0=0x0000;//SetlowestpossibleDCOx,MODx
UCSCTL1=DCORSEL_3;//SetRSELxforDCO=4.9MHz
UCSCTL2=FLLD_1+74;//SetDCOMultiplierfor2.45MHz
//(N+1)*FLLRef=Fdco
//(74+1)*32768=2.45MHz
//SetFLLDiv=fDCOCLK/2
__bic_SR_register(SCG0);//EnabletheFLLcontrolloop
//Worst-casesettlingtimefortheDCOwhentheDCOrangebitshavebeen
//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xx
//UGforoptimization.
//32x32x2.45MHz/32,768Hz=76563=MCLKcyclesforDCOtosettle
__delay_cycles(76563);
//LoopuntilXT1,XT2&DCOfaultflagiscleared
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);
//ClearXT2,XT1,DCOfaultflags
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag
while
(1);//Loopinplace
}
2.6思考题
(1)MSP430系列单片机有哪些时钟输入源?
答:
XT1CLK低频或高频时钟源,XT2CLK高频时钟源,VLOCLK低功耗低频内部时钟源,REFOCLK低频修整内部参考时钟源,DCOCLK片内数字控制时钟源。
(2)MSP430系列单片机提供几种时钟信号?
每种时钟信号的通常用途是什么?
答:
ACLK辅助时钟:
ACLK可由软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、
DCOCLKDIV、XT2CLK(由具体器件决定)这几个时钟源之一。
然后经1、2、4、8、16、32分频得到。
ACLK可由软件选作各个外设模块的时钟信号,一般用于低速外设模块。
MCLK系统主时钟:
MCLK可由软件选择来自上述5种时钟源,同样可经过分频得到。
MCLK主要用于CPU和系统。
SMCLK子系统时钟:
可由软件选择来自上述5种时钟源,同样可经过分频得到。
SMCLK可由软件选作各个外设模块的时钟信号,主要用于高速外设模块。
(3)MSP430系列单片机的DCO振荡器有什么重要用途?
答:
DCOCLK是内部数字时钟,可以通过FLL模块经过1,2,4,8,16,32分频得到稳定的时钟信号。
可以作为ACLK,MCLK,SMCLK的信号源。
DCO振荡器是一个可数字控制的RC振荡器,
它的频率随供电电压、环境温度变化而具有一定的不稳定性。
DCO频率可以通过选择FLL的频率(FLLRENCLK/n)来增强振荡频率的稳定性。
3.系统时钟--时钟配置和输入选择
3.1实验目的
(1)了解MSP430F6638的时钟系统
(2)掌握配置MSP430F6638时钟的方法
(3)了解MSP430F6638的时钟系统与低功耗之间的关系
3.2实验原理
本实验演示了使用一个外部的32KHz晶振作为ACLK的时钟输入源,使用一个更高频
率的晶振作为SMCLK的时钟输入源。
供CPU使用的MCLK由内部的DCO产生。
32kHz
的晶振连接到CPU的XIN和XOUT管脚。
高频率的晶振连接到CPU的XT2IN和XT2OUT。
ACLK通过P1.0输出,SMCLK通过P3.4输出。
3.3实验步骤
(1)将PC和板载仿真器通过USB线相连;
(2)打开CCS集成开发工具,选择Project->ImportExistingCCSEclipseProject,导入
MSP430F6638_DemoV2.0\7.CLK_select\selectclocksource文件夹中的工程;
(3)选择
对该工程进行编译链接,生成.out文件。
然后选择
,将程序下载
到实验板中。
程序下载完毕之后,可以选择
全速运行程序,也可以选择
单步调试程序,选择F3查看具体函数。
也可以程序下载之后,按下
,软件界面恢复到原编辑程序的画面。
再按下实验板的复位键,运行程序。
(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。
3.4实验现象
程序运行之后,将示波器探头连接到MCU的P3.4和P1.0管脚,调整好示波器参数,
可以检测出该管脚有2.45MHz左右的频率输出。
3.5关键代码
#include
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//StopWDT
P1DIR|=BIT0;//ACLKsetouttopins
P1SEL|=BIT0;
P3DIR|=BIT4;//SMCLKsetouttopins
P3SEL|=BIT4;
//while(BAKCTL&LOCKIO)//UnlockXT1pinsforoperation
//BAKCTL&=~(LOCKIO);
P7SEL|=BIT2+BIT3;//PortselectXT2
UCSCTL6&=~XT2OFF;//SetXT2On
UCSCTL6&=~(XT1OFF);//XT1On
UCSCTL6|=XCAP_3;//Internalloadcap
//LoopuntilXT1faultflagiscleared
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);
//ClearXT2,XT1,DCOfaultflags
SFRIFG1&=~OFIFG;//Clearfaultflags
}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag
UCSCTL6&=~XT2DRIVE0;//DecreaseXT2Driveaccordingto
//expectedfrequency
UCSCTL4|=SELA_0+SELS_5;//SelectSMCLK,ACLKsourceandDCOsource
while
(1);//Loopinplace
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- msp430 UCS实验报告 UCS 实验 报告