MSP430系列微控制器的时钟模块3Word文档格式.docx
- 文档编号:19590437
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:20
- 大小:78.22KB
MSP430系列微控制器的时钟模块3Word文档格式.docx
《MSP430系列微控制器的时钟模块3Word文档格式.docx》由会员分享,可在线阅读,更多相关《MSP430系列微控制器的时钟模块3Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
使用较高的工作频率可以使信号处理速度快;
使用较低的工作频率可以降低芯片功耗。
并不是每一种芯片都支持全部4种时钟信号源。
例如MSP430G2231芯片不支持高频振荡器(XT2),也不支持低频振荡器(LFXT1)的高频模式。
时钟系统能够通过向一些被称作为寄存器的等效存储单元写入数据来选择时钟信号源。
时钟系统还具有一些能够改变时钟信号源频率的寄存器。
3.1.2时钟系统的相关寄存器
MSP430系列微控制器芯片的管脚具有多种功能,通过对相关寄存器进行设置能够实现需要的功能。
时钟系统也具有多种信号源,如何使用其中的一种?
数控振荡器(DCO)的工作频率可以调整,如何进行调整?
同样,这些问题也可以通过对相关寄存器进行设置就能够实现。
进一步讲,具有冯·
诺依曼结构的计算机的工作可以理解为从某个地址读取指令,或者将计算结果送往某个地址。
CPU对MSP430系列芯片内部功能模块的控制也可以理解为向它写入数据,或者从其读取数据。
为了区别通常的程序存储器和数据存储器的访问,把对这些芯片内部功能模块的访问称作为对寄存器的访问。
CPU通过向相应的寄存器写入数据控制对应的芯片内部功能模块的工作,从相应的寄存器读出数据获得对应的芯片内部功能模块的工作结果。
配置系统时钟涉及状态寄存器(SR)、中断使能寄存器1(IE1)、中断标志寄存器1(IFG1)、数控振荡器(DCO)控制寄存器(DCOCTL)、系统时钟控制寄存器1(BCSCTL1)、系统时钟控制寄存器2(BCSCTL2)和系统时钟控制寄存器3(BCSCTL3)。
这里状态寄存器(SR)、中断使能寄存器1(IE1)和中断标志寄存器1(IFG1)不属于时钟系统模块,但是它们的一些内容影响到时钟系统模块的工作。
下面的寄存器介绍内容包括寄存器中每一位的位地址、位名称、操作方式、复位值以及每一位的功用。
操作方式表示对位可以进行读和写操作,或者仅能进行读操作,或者仅能进行写操作。
对仅能进行写操作的位进行读操作将获得一个随机数。
对仅能进行读操作的位进行写操作不起作用,也有可能产生不可预见的事情,因此应该尽量避免。
复位的目的是使得微控制器从一种约定的工作状态下开始工作。
复位值就是复位动作对寄存器初始状态的指定值,即对MSP430系列微控制器的各种外围模块初始工作状态的指定。
对寄存器的复位值应当给予足够地重视,这些数值对外围模块的工作设置具有很大的影响。
经常需要改变寄存器中的一位的状态,但是MSP430系列微控制器不支持位寻址,即不能对位直接进行操作,本节将介绍利用逻辑运算实现位寻址。
■状态寄存器(SR)
位
15~9
8
7
6
5
4
3
2
1
位名称
Reserved
V
SCG1
SCG0
OSCOFF
CPUOFF
GIE
N
Z
C
操作方式
rw
复位值
0000000
状态寄存器(SR)是属于CPU的一个寄存器,这个寄存器的一些数据位影响到MSP430微控制器系统时钟模块的工作状态。
状态寄存器中与时钟系统相关的位包括SCG1、SCG0、OSCOFF和CPUOFF。
这里只讨论这些位的功能。
SCG1:
系统时钟控制位1
0SMCLK开启
1SMCLK关闭
SCG0:
系统时钟控制位0
0DCO开启
1DCO关闭
OSCOFF:
晶体振荡器工作控制位
0LFXT1晶体振荡器开启
1LFXT1晶体振荡器关闭
CPUOFF:
CPU工作控制位
0CPU开启
1CPU关闭
■中断使能寄存器1(IE1)
UTXIE0
URXIE0
ACCVIE
NMIIE
OFIE
WDTIE
00
中断使能寄存器1(IE1)的位OFIE影响到MSP430微控制器的系统时钟模块的工作状态。
OFIE:
晶体振荡器出错中断使能位
0不使能
1使能
“使能”的功用相当于一个开关。
当处于使能状态时,该使能对应的电路功用将被激活;
当处于不使能状态时,该使能对应的电路功用将被关闭,就像这个电路不存在一样。
■中断标志寄存器1(IFG1)
UTXIFG0
URXIFG0
ACCVIFG
NMIIFG
OFIFG
WDTIEFG
中断标志寄存器1(IFG1)位OFIFG表征MSP430微控制器的系统时钟模块的工作状态。
这个寄存器与前面2个寄存器不同,它不是控制相关电路的工作,而仅是显示相关电路的工作状态。
OFIFG:
晶体振荡器出错中断标志位
0无中断产生
1有中断产生
MSP430微控制器加电时的复位信号能够置位OFIFG。
在使能相应中断的情况下将引起中断,因此需要在用户程序中将位OFIFG清零。
■数控振荡器(DCO)控制寄存器(DCOCTL)
DCO2
DCO1
DCO0
MOD4
MOD3
MOD2
MOD1
MOD0
DCOx:
这里的x可以取0、1或者2。
这3位用来在系统时钟控制寄存器1(BCSCTL1)的位Rselx选定的频率范围内,选择数控振荡器(DCO)的8个工作频率之一。
MODx:
这里的x可以取0到4中的任意1个数。
这5位用来微调数控振荡器(DCO)的工作频率,但当DCO=7时,即DCOx的3位全为1,该功能无效。
MSP430微控制器中的数控振荡器(DCO)是该系列器件的特色之一。
使用这个振荡器作为时钟信号源将不需要添加任何外部器件,同时这个时钟信号源的工作频率还能够通过用户程序进行调整。
■系统时钟控制寄存器1(BCSCTL1)
XT2OFF
XTS
DIVA1
DIVA0
Rsel3
Rsel2
Rsel1
Rsel0
XT2OFF:
高频振荡器(XT2)开关控制
0高频振荡器(XT2)开
1高频振荡器(XT2)关
XTS:
低频振荡器(LFXT1)工作模式选择
0低频振荡器(LFXT1)低频模式
1低频振荡器(LFXT1)高频模式
DIVAx:
辅助时钟(ACLK)分频系数
Bit5Bit4
DIVA1DIVA0
001
012
104
118
这项功能的物理含义为在时钟信号传输的路径上插入了一个分频电路。
改变位
DIVAx的数值将改变分频电路的分频系数,达到改变时钟信号频率的目的。
Reslx:
数控振荡器(DCO)内部电阻选择。
这里的x可以取0到3中的任意1个数,获得16种不同阻值的电阻。
数控振荡器(DCO)属于RC振荡器,改变电阻的数值能够改变振荡器的工作频率。
■系统时钟控制寄存器2(BCSCTL2)
SELM1
SELM0
DIVM1
DIVM0
SELS
DIVS1
DIVS0
DCOR
SELMx:
主时钟(MCLK)的时钟源选择
Bit7Bit6
SELM1SELM0
00数控振荡器(DCO)
01数控振荡器(DCO)
10高频振荡器(XT2)/当XT2不支持,为VLOCLK
11低频振荡器(LFXT1)/VLOCLK
MSP430系列微控制器包括多个子系列,MSP430x2xx属于这其中的一个。
MSP430G2231和MSP430F2619都属于MSP430x2xx子系列。
本书里所有寄存器的说
明兼顾了MSP430x2xx子系列中的所有芯片。
DIVMx:
主时钟(MCLK)分频系数
DIVM1DIVM0
118
SELS:
子系统时钟(SMCLK)的时钟源选择
0数控振荡器(DCO)
1高频振荡器(XT2)
DIVSx:
子系统时钟(SMCLK)分频系数
Bit2Bit1
DIVS1DIVS0
DCOR:
数控振荡器(DCO)电阻选择
0内部
1外部
数控振荡器(DCO)即可以使用MSP430微控制器芯片内部的电阻,通过用户程序配置系统时钟控制寄存器1(BCSCTL1)中的位Reslx选择不同的内部电阻;
也可以使用指定管脚连接的外部电阻。
如果外部电阻采用电位器,调整电位器就能够连续地改变数控振荡器(DCO)的工作频率。
■系统时钟控制寄存器3(BCSCTL3)
XT2S1
XT2S0
LFXT1S1
LFXT1S0
XCAP1
XCAP0
XT2OF
LFXT1OF
XT2Sx:
XT2时钟范围选择
XT2S1XT2S0
000.4~1MHz晶体振荡器
011~3MHz晶体振荡器
103~16MHz晶体振荡器
110.4~16MHz外部时钟源
高频振荡器(XT2)需要一个外部晶体器件。
这个晶体器件的最高谐振频率为16MHz。
根据具体使用晶体的谐振频率需要完成XT2Sx的设置。
最后一种选择为采用一个完整的信号源,例如实验室的信号产生器,作为时钟源时的设置。
LFXT1Sx:
低频时钟源选择和LFXT1时钟范围选择(受XTS/BCSCTL1控制)
LFXT1S1LFXT1S0
XTS=0
0032768Hz晶体在LFXT1
01保留
10VLOCLK
11外部时钟源
XTS=1
XCAPx:
LFXT1晶体振荡器内部电容选择(仅适用于XTS=0。
当XTS=1时,应选择00)
Bit3Bit2
XCAP1XCAP0
001pF
016pF
1010pF
1112.5pF
XT2OF:
XT2时钟失效标志
0无
1有
LFXT1OF:
LFXT1时钟失效标志
注意,MSP430G2231芯片不支持高频振荡器(XT2),不支持低频振荡器(LFXT1)的高频模式。
3.2数字控制振荡器(DCO)频率的测量
MSP430系列微控制器复位以后,主时钟信号(MCLK)和子时钟信号(SMCLK)的驱动信号都默认采用数字控制振荡器(DCO),分频系数默认1,因此这2个时钟信号的频率就是数字控制振荡器(DCO)的工作频率。
图1.2所示的MSP430G2231芯片管脚排列图显示管脚6,即并行输入/输出端口P1的管脚P1.4,也可以用做子时钟信号(SMCLK)的输出管脚,这样通过测量该管脚输出信号的频率就能够获得数字控制振荡器(DCO)的工作频率。
MSP430F2619芯片管脚16,同样为并行输入/输出端口P1的管脚P1.4,也同样是可以用做子时钟信号(SMCLK)的输出管脚。
数字控制振荡器(DCO)的工作频率可以调整以满足具体工作的需要。
频率的调整通过前面介绍的数控振荡器(DCO)控制寄存器(DCOCTL)和系统时钟控制寄存器1(BCSCTL1)的位Reslx来实现。
数字控制振荡器(DCO)的工作频率与相关寄存器中控制位的关系如图3.2所示。
图3.2数字控制振荡器(DCO)的工作频率与相关寄存器中控制位的关系图
图3.2显示系统时钟控制寄存器1(BCSCTL1)的位RSELx可以指定数字控制振荡器(DCO)工作于16个频率段的其中一个。
数控振荡器(DCO)控制寄存器(DCOCTL)的位DCOx在指定段内的8个频率子段中选择一个。
图中没有显示的数控振荡器(DCO)控制寄存器(DCOCTL)的位MODx在指定频率子段中实现的进一步的调整。
MSP430系列微控制器中每一种芯片的数据手册都给出在一定工作电压和环境温度情况下,一些寄存器内容对应的工作频率,但是需要注意数控振荡器(DCO)属于RC振荡器,它的工作频率受工作电压、环境温度等很多因素的影响。
数据手册中给出的数控振荡器(DCO)的工作频率仅供参考。
在完成应用系统的硬件电路设计以后,采用实际测量的数控振荡器(DCO)工作频率数值,再给予合适的调整将使得系统工作得更精确。
程序示例3.1用来实现数控振荡器(DCO)工作频率的调整。
通过测量实际的工作频率就可以确定控制数控振荡器(DCO)工作频率的相关寄存器的具体取值。
程序示例3.1
//程序名称:
sysclk_dco
//程序功能:
SMCLK使用DCO,分频比1,使用管脚SMCLK输出时钟信号
#include<
MSP430.h>
//包含名称定义的对应地址或数据的头函数
intmain(void)//主函数
{
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗
//P1.4管脚配置
P1SEL|=BIT4;
//位P1SEL.4置位,设置P1.4管脚为外围功能管脚
P1DIR|=BIT4;
//位P1DIR.4置位,设置P1.4管脚为输出管脚
//DCO频率调整
BCSCTL1&
=~RSEL3;
//位RSEL3清零
=~RSEL2;
//位RSEL2清零
BCSCTL1|=RSEL1;
//位RSEL1置位
BCSCTL1|=RSEL0;
//位RSEL0置位
DCOCTL&
=~DCO2;
//位DCO2清零
DCOCTL|=DCO1;
//位DCO1置位
DCOCTL|=DCO0;
//位DCO0置位
while
(1)//重复执行
{
}
}
程序示例3.1中首先完成输出频率与数字控制振荡器(DCO)的工作频率一样的子时钟信号(SMCLK)输出管脚的配置,然后完成确定数字控制振荡器(DCO)的工作频率相关寄存器的设置。
MSP430系列芯片的时钟模块属于它的外围模块之一。
外围模块的工作不需要CPU进行全程控制,一旦完成对这些外围模块的配置,它们将独立工作。
程序示例3.1中在完成数字控制振荡器(DCO)的工作频率相关寄存器的设置以后,程序就进入
while
(1)//重复执行
{
}
在这个程序段中,CPU什么都不做,但是这时MSP430系列芯片的时钟模块一直工作,使得子时钟信号(SMCLK)输出管脚,P1.4,一直输出子时钟信号(SMCLK),这个信号的频率等于数字控制振荡器(DCO)的工作频率。
修改数字控制振荡器(DCO)的工作频率相关寄存器的内容将可以调整它的工作频率。
程序示例3.1没有涉及到利用位MODx对频率的进一步的调整。
3.3位寻址功能的实现
3.3.1msp430g2231.h
在工程中选择好目标芯片,并完成一次源文件的编译,在工作区“Workspace”的文件“Files”栏目中将自动出现包含定义目标芯片寄存器名称的头文件。
例如这里选择目标芯片为MSP430G2231,将自动包含头文件“msp430g2231.h”。
头文件“msp430g2231.h”的“STANDARDBITS”栏目的内容如下
#defineBIT0(0x0001u)
#defineBIT1(0x0002u)
#defineBIT2(0x0004u)
#defineBIT3(0x0008u)
#defineBIT4(0x0010u)
#defineBIT5(0x0020u)
#defineBIT6(0x0040u)
#defineBIT7(0x0080u)
#defineBIT8(0x0100u)
#defineBIT9(0x0200u)
#defineBITA(0x0400u)
#defineBITB(0x0800u)
#defineBITC(0x1000u)
#defineBITD(0x2000u)
#defineBITE(0x4000u)
#defineBITF(0x8000u)
这里定义了16个符号常量,BIT0~BITF。
这个部分内容存在于MSP430系列芯片中所有芯片对应的头文件。
上面每一个符号常量代表一个16位数据,这个数据中只有1位为1,其余的全部为0。
程序示例3.1实现数控振荡器(DCO)工作频率调整部分,即对相关寄存器的配置部分,也出现了一些符号常量。
它们也在头文件“msp430g2231.h”中被定义,位于头文件的“BasicClockModule”栏目。
该栏目的部分内容如下
…………
#defineDCOCTL_(0x0056u)/*DCOClockFrequencyControl*/
DEFC(DCOCTL,DCOCTL_)
#defineBCSCTL1_(0x0057u)/*BasicClockSystemControl1*/
DEFC(BCSCTL1,BCSCTL1_)
#defineBCSCTL2_(0x0058u)/*BasicClockSystemControl2*/
DEFC(BCSCTL2,BCSCTL2_)
#defineBCSCTL3_(0x0053u)/*BasicClockSystemControl3*/
DEFC(BCSCTL3,BCSCTL3_)
#defineMOD0(0x01)/*ModulationBit0*/
#defineMOD1(0x02)/*ModulationBit1*/
#defineMOD2(0x04)/*ModulationBit2*/
#defineMOD3(0x08)/*ModulationBit3*/
#defineMOD4(0x10)/*ModulationBit4*/
#defineDCO0(0x20)/*DCOSelectBit0*/
#defineDCO1(0x40)/*DCOSelectBit1*/
#defineDCO2(0x80)/*DCOSelectBit2*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 系列 控制器 时钟 模块