微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430内部时钟(DCO)频率测量

MSP430内部时钟(DCO)频率测量

时间:11-13 来源:互联网 点击:
时钟电路——数字振荡器(DCO

电路按信号形式可分为数字和模拟。

数字电路处理的是数字信号。数字电路又可分为组合逻辑电路与时序逻辑电路。时序电路可以完成组合电路的功能,反之则不成立。两者的区别是时序电路与信号的时间有关,即有一个时钟信号。

MSP430芯片中有3个时钟源,内部晶体振荡器(DCO)、外部低速时钟源(XT1)、外部高速时钟源(XT2)。DCO的工作可以不要外部不要外部器件的支持,因此降低了电路的复杂程度,但是它是基于RC的工作原理,工作频率不稳定。XT1、XT2需要外接一个晶振,所以工作频率稳定。采用两个外部晶振是让一个工作在高频一个工作在低频,高频晶体可以使程序执行速度快,低速晶体使芯片功耗降低。

//程序名称: Clock_DCO.C

//程序功能: 产生周期为 160 个系统时钟周期的方波信号,通过测量方波信号频率获得 DCO 时钟频率

#include 430x14x.h> //包含名称定义和对应地址或数据的头函数

void int_clk(void); //声明系统时钟初始化函数

void delay(void); //声明延时函数

int main(void) //主函数

{

int_clk( ); //系统时钟初始化

WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

//看门狗控制寄存器 WDTCTL 地址以及密码位 WDTPW 内容和

//使能位 WDTHOLD 内容在头函数 MSP430x14x.h 定义

//WDTPW 内容加 WDTHOLD 内容向 WDTCTL 赋值

P3SEL=0x00; //设置 P3 端口为数字输入 / 输出口

P3DIR=0xff; //设置 P3 端口为输出口

while(1) //重复执行

{

//产生周期为 160 个系统时钟周期的方波

P3OUT&=~BIT0; // P3.0 输出低电平

delay( ); //延时 75 个系统时钟周期,保持方波信号低电平

P3OUT|=BIT0; // P3.0 输出高电平

delay( ); //延时 75 个系统时钟周期,保持方波信号高电平

}

}

void delay(void) //延时函数

{

unsigned char i; //声明实现延时的整型数据类型循环变量

for(i=0; i<10; i++) //利用循环实现延时调整

{

_NOP( ); //产生一个MSP430系统时钟周期的延时

}

}

void int_clk(void) //系统时钟初始化函数

{

unsigned char i; //声明实现延时的循环变量

DCOCTL = 0x00; //设置数字控制振荡器的工作频率***

BCSCTL1 = 0x80; //关闭 XT2

//设置数字控制振荡器的工作频率***

BCSCTL2&=~DCOR; //选择 MCLK 时钟源为 DCOCLK,分频比 1

//选择 SMCLK 时钟源为 DCOCLK,分频比 1

//选择芯片内部 DCO 电阻

do

{

IFG1&=~OFIFG; //清除振荡器错误标志

for(i=0; i<100; i++) //利用循环实现延时调整

{

_NOP( ); //产生一个MSP430系统时钟周期的延时

}

}

while((IFG1 & OFIFG)!=0); //如果标志为1,继续等待

IFG1&=~OFIFG; //清除振荡器错误标志

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top