单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx

上传人:b****5 文档编号:6338835 上传时间:2023-01-05 格式:DOCX 页数:10 大小:179.41KB
下载 相关 举报
单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx_第1页
第1页 / 共10页
单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx_第2页
第2页 / 共10页
单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx_第3页
第3页 / 共10页
单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx_第4页
第4页 / 共10页
单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx

《单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告.docx

单片机原理及应用第六讲MSP430F5XX6XX的时钟模块UCS实验报告

单片机原理及应用

第六讲MSP430F5XX6XX的时钟模块(UCS)

实验报告

报告人:

实验内容

1、实验16638芯片的上电默认时钟

ACLK=REFO=32.768kHz,MCLK=SMCLK=Default1MHz

2、实验2时钟设置实例

ACLK=REFO=32kHz,MCLK=SMCLK=8MHz

3、实验3时钟设置实例

ACLK=REFO=32kHz,MCLK=SMCLK=12MHz

4、实验3时钟设置实例

ACLK=REFO=32kHz,MCLK=SMCLK=20MHz

实验步骤

步骤:

(1)将PC和板载仿真器通过USB线相连;

(2)打开CCS集成开发工具,选择样例工程或自己新建一个工程,修改代码;

(3)选择

对该工程进行编译链接,生成.out文件。

然后选择

,将程序下载到实验板中。

程序下载完毕之后,可以选择

全速运行程序,也可以选择

单步调试程序,选择F3查看具体函数。

也可以程序下载之后,按下

,软件界面恢复到原编辑程序的画面。

再按下实验板的复位键,运

行程序。

(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议

上电运行程序)。

关键代码:

实验1:

Main(){

WDTCTL=WDTPW+WDTHOLD;//StopWDT

P4DIR|=BIT1;//P4.1output

P1DIR|=BIT0;//ACLKsetouttopins

P1SEL|=BIT0;

P3DIR|=BIT4;//SMCLKsetouttopins

P3SEL|=BIT4;

while

(1)

{

P4OUT^=BIT1;

__delay_cycles(60000);//Delay

}

实验2:

#include

intmain(void){

volatileunsignedinti;

WDTCTL=WDTPW+WDTHOLD;//StopWDT

P4DIR|=BIT1;//P1.1output

P1DIR|=BIT0;//ACLKsetouttopins

P1SEL|=BIT0;

P3DIR|=BIT4;//SMCLKsetouttopins

P3SEL|=BIT4;

UCSCTL3=SELREF_2;//SetDCOFLLreference=REFO

UCSCTL4|=SELA_2;//SetACLK=REFO

UCSCTL0=0x0000;//SetlowestpossibleDCOx,MODx

//LoopuntilXT1,XT2&DCOstabilizes‐InthiscaseonlyDCOhastostabilize

do{

UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);

//ClearXT2,XT1,DCOfaultflags

SFRIFG1&=~OFIFG;//Clearfaultflags

}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag

__bis_SR_register(SCG0);//DisabletheFLLcontrolloop

UCSCTL1=DCORSEL_5;//SelectDCOrange16MHzoperation

UCSCTL2|=249;//SetDCOMultiplierfor8MHz

//(N+1)*FLLRef=Fdco,(249+1)*32768=8MHz

__bic_SR_register(SCG0);//EnabletheFLLcontrolloop

//Worst‐casesettlingtimefortheDCOwhentheDCOrangebitshavebeen

//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xxUGfor

//optimization,32x32x8MHz/32,768Hz=250000=MCLKcyclesforDCOtosettle

__delay_cycles(250000);

while

(1)

{

P4OUT^=BIT1;//ToggleP1.1

__delay_cycles(600000);//Delay

}

}

实验3:

#include

intmain(void){

volatileunsignedinti;

WDTCTL=WDTPW+WDTHOLD;//StopWDT

P4DIR|=BIT1;//P1.1output

P1DIR|=BIT0;//ACLKsetouttopins

P1SEL|=BIT0;

P3DIR|=BIT4;//SMCLKsetouttopins

P3SEL|=BIT4;

UCSCTL3=SELREF_2;//SetDCOFLLreference=REFO

UCSCTL4|=SELA_2;//SetACLK=REFO

UCSCTL0=0x0000;//SetlowestpossibleDCOx,MODx

//LoopuntilXT1,XT2&DCOstabilizes‐InthiscaseonlyDCOhastostabilize

do{

UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);

//ClearXT2,XT1,DCOfaultflags

SFRIFG1&=~OFIFG;//Clearfaultflags

}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag

__bis_SR_register(SCG0);//DisabletheFLLcontrolloop

UCSCTL1=DCORSEL_5;//SelectDCOrange16MHzoperation

UCSCTL2|=375;//SetDCOMultiplierfor8MHz

//(N+1)*FLLRef=Fdco,(249+1)*32768=8MHz

__bic_SR_register(SCG0);//EnabletheFLLcontrolloop

//Worst‐casesettlingtimefortheDCOwhentheDCOrangebitshavebeen

//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xxUGfor

//optimization,32x32x8MHz/32,768Hz=250000=MCLKcyclesforDCOtosettle

__delay_cycles(250000);

while

(1)

{

P4OUT^=BIT1;//ToggleP1.1

__delay_cycles(600000);//Delay

}

}

实验3:

#include

voidSetVcoreUp(unsignedintlevel);

voidmain(void){

volatileunsignedinti;

WDTCTL=WDTPW+WDTHOLD;//StopWDT

P4DIR|=BIT1;//P4.1output

P1DIR|=BIT0;//ACLKsetouttopins

P1SEL|=BIT0;

P3DIR|=BIT4;//SMCLKsetouttopins

P3SEL|=BIT4;

//IncreaseVcoresettingtolevel3tosupportfsystem=25MHz

//NOTE:

Changecorevoltageonelevelatatime..

SetVcoreUp(0x01);

SetVcoreUp(0x02);

SetVcoreUp(0x03);

UCSCTL3=SELREF_2;//SetDCOFLLreference=REFO

UCSCTL4|=SELA_2;//SetACLK=REFO

__bis_SR_register(SCG0);//DisabletheFLLcontrolloop

UCSCTL0=0x0000;//SetlowestpossibleDCOx,MODx

UCSCTL1=DCORSEL_7;//SelectDCOrange50MHzoperation

UCSCTL2=FLLD_1+609;//SetDCOMultiplierfor20MHz

//(N+1)*FLLRef=Fdco

//(609+1)*32768=20MHz

//SetFLLDiv=fDCOCLK/2

__bic_SR_register(SCG0);//EnabletheFLLcontrolloop

//Worst‐casesettlingtimefortheDCOwhentheDCOrangebitshavebeen

//changedisnx32x32xf_MCLK/f_FLL_reference.SeeUCSchapterin5xx

//UGforoptimization.

//32x32x25MHz/32,768Hz~780kMCLKcyclesforDCOtosettle

__delay_cycles(782000);

//LoopuntilXT1,XT2&DCOstabilizes‐InthiscaseonlyDCOhastostabilize

do

{

UCSCTL7&=~(XT2OFFG+XT1LFOFFG+DCOFFG);

//ClearXT2,XT1,DCOfaultflags

SFRIFG1&=~OFIFG;//Clearfaultflags

}while(SFRIFG1&OFIFG);//Testoscillatorfaultflag

while

(1)

{

P4OUT^=BIT1;//ToggleP4.1

__delay_cycles(600000);//Delay

}

}

voidSetVcoreUp(unsignedintlevel)

{

PMMCTL0_H=PMMPW_H;//OpenPMMregistersforwrite

//SetSVS/SVMhighsidenewlevel

SVSMHCTL=SVSHE+SVSHRVL0*level+SVMHE+SVSMHRRL0*level;

//SetSVMlowsidetonewlevel

SVSMLCTL=SVSLE+SVMLE+SVSMLRRL0*level;

while((PMMIFG&SVSMLDLYIFG)==0);//WaittillSVMissettled

PMMIFG&=~(SVMLVLRIFG+SVMLIFG);//Clearalreadysetflags

PMMCTL0_L=PMMCOREV0*level;//SetVCoretonewlevel

if((PMMIFG&SVMLIFG))

while((PMMIFG&SVMLVLRIFG)==0);//Waittillnewlevelreached

//SetSVS/SVMlowsidetonewlevel

SVSMLCTL=SVSLE+SVSLRVL0*level+SVMLE+SVSMLRRL0*level;

//LockPMMregistersforwriteaccess

PMMCTL0_H=0x00;

}

实验现象分析

实验1:

示波器探头接P1.0时,测得频率为32kHz左右,接P3.4时,测得频率大概为1MHz。

接P1.0:

接P3.4:

P1.0波形:

实验2:

示波器探头接P1.0时,测得频率为32kHz左右,接P3.4时,测得频率大概为8MHz。

P3.4波形:

实验3:

示波器探头接P1.0时,测得频率为32kHz左右,接P3.4时,测得频率大概为12MHz。

P3.4波形:

实验4:

示波器探头接P1.0时,测得频率为32kHz左右,接P3.4时,测得频率大概为20MHz。

P3.4波形:

思考题

1、MSP430系列单片机有哪些时钟输入源?

答:

5XX/6XX系列系统时钟有五个时钟源:

1、XT1CLK低频或高频时钟源:

可以使用标准时钟晶振,振荡器或者外部时钟源输入4MHz~32MHz;XT1CLK可以作为内部FLL模块的参考时钟;

2、XT2CLK高频时钟源:

可以使用标准晶振,振荡器或者外部时钟源输入4MHz~32MHz;

3、VLOCLK低功耗低频内部时钟源:

典型值为10KHZ;

4、REFOCLK低频修整内部参考时钟源:

典型值为32768Hz,作为FLL基准时钟源;

5、DCOCLK片内数字控制时钟源:

通过FLL模块来稳定。

2、MSP430系列单片机提供几种时钟信号?

每种时钟的通常用途是什么?

答:

5XX/6XX系列UCS产生3种时钟信号:

1、ACLK辅助时钟:

ACLK可由软件选择来自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV、XT2CLK(由具体器件决定)这几个时钟源之一。

然后经1、2、4、8、16、32分频得到。

ACLK可由软件选作各个外设模块的时钟信号,一般用于低速外设模块;

2、MCLK系统主时钟:

MCLK可由软件选择来自上述5种时钟源,同样可经过分频得到。

MCLK主要用于CPU和系统;

3、SMCLK子系统时钟:

可由软件选择来自上述5种时钟源,同样可经过分频得到。

SMCLK可由软件选作各个外设模块的时钟信号,主要用于高速外设模块。

3、MSP430系列单片机的DCO振荡器有什么重要作用?

答:

DCO为片内数字控制振荡器,它有以下作用:

1、DCO振荡器是一个可数字控制的RC振荡器,它的频率随供电电压、环境温度变化而具有一定的不稳定性;

2、DCO频率可以通过选择FLL的频率(FLLRENCLK/n)来增强振荡频率的稳定性。

4、MSP430系列单片机不接外接振荡器是否可以正常工作?

答:

不可以。

MSP430单片机的时钟既要有高频率以对系统硬件和外部事件有较快的反应速度,又要有低频率来降低电流消耗,还要多个时钟源产生多个时钟输出信号,所以需要外接振荡器。

5、掌握MSP430F6XX单片机时钟系统配置

答:

可参见问题1、2答案。

实验中遇到的问题

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1