1、同样,这些问题也可以通过对相关寄存器进行设置就 能够实现。进一步讲,具有冯诺依曼结构计算机的工作可以理解为从某个地址读取指令,或者 将计算结果送往某个地址。 CPU 对 MSP430 系列微控制器内部功能模块的控制也可以理解 为向它写入数据,或者从其读取数据。为了区别通常的程序存储器和数据存储器的访问, 把对这些芯片内部功能模块的访问称作为对寄存器的访问。CPU 通过向相应的寄存器写入数据控制对应的芯片内部功能模块的工作,从相应的寄 存器读出数据获得对应的芯片内部功能模块的工作结果。配置系统时钟涉及状态寄存器( SR)、中断使能寄存器 1 (IE1 )、中断标志寄存器 1 (IFG1)、数控振
2、荡器(DCO)控制寄存器(DCOCTL )、系统时钟控制寄存器 1( BCSCTL1 )、 系统时钟控制寄存器 2(BCSCTL2 )和系统时钟控制寄存器 3( BCSCTL3) 。这里状态寄 存器(SR)、中断使能寄存器1( IE1 )和中断标志寄存器1 (IFG1 )不属于时钟系统模块, 但是它们的一些内容影响到时钟系统模块的工作。下面的 寄存器介绍内容包括寄存器中每一位的位地址、位名称、操作方式、复位值以 及每一位的功用。操作方式表示对位可以进行读和写操作,或者仅能进行读操作,或者仅 能进行写操作。对仅能进行写操作的位进行读操作将获得一个随机数。对仅能进行读操作 的位进行写操作不起作用,
3、也有可能产生不可预见的事情,因此应该尽量避免 。复位的目的是使得微控制器从一种约定的工作状态下开始工作。复位值就是复位动作 对寄存器初始状态的指定值,即对 MSP430 系列微控制器的各种外围模块初始工作状态的 指定。对寄存器的复位值应当给予足够地重视,这些数值对外围模块的工作设置具有很大 的影响。经常需要改变寄存器中某一位的状态,但是 MSP430 系列微控制器不支持位寻址,即 不能对位直接进行操作,本节将介绍利用逻辑运算实现位寻址。状态寄存器(SR)位15987654321位名称Reserve dVSCG1SCG0OSCOFFCPUOFGIENZC操作方 式rwrw复位值000000状态寄
4、存器(SR)是属于CPU的一个寄存器,这个寄存器的一些数据位影响到 MSP430 微控制器系统时钟模块的工作状态。 状态寄存器中与时钟系统相关的位包括 SCG1、SCG0、 OSCOFF和CPUOFF。这里只讨论这些位的功能。SCG1 :系统时钟控制位 10 SMCLK开启1 SMCLK关闭SCG0:系统时钟控制位 00 DCO开启1 DCO关闭OSCOFF :晶体振荡器工作控制位0 LFXT1晶体振荡器开启1 LFXT1晶体振荡器关闭CPUOFF : CPU工作控制位0 CPU开启1 CPU关闭中断使能寄存器1( IE1)位名 称UTXIE0URACCVIEMIIEReservedOFIEW
5、DTIE操作方式复位 值00中断使能寄存器1 (IE1 )的位OFIE影响到MSP430微控制器的系统时钟模块的工作状态。OFIE :晶体振荡器出错中断使能位0 不使能1 使能“使能”的功用相当于一个开关。当处于使能状态时,该使能对应的电路功用将被激活;当处于不使能状态时,该使能对应的电路功用将被关闭,就像这个电路不存在一样。 中断标志寄存器1 ( IFG1)3 2位名称UTXIFG0URXACCVIFGNMIIFGReservedFGWDTIEFG复位值中断标志寄存器1 (IFG1 )位OFIFG表征MSP430微控制器的系统时钟模块的工作状 态。这个寄存器与前面 2个寄存器不同,它不是控制
6、相关电路的工作,而仅是显示相关电 路的工作状态。OFIFG :晶体振荡器出错中断标志位0 无中断产生1 有中断产生MSP430微控制器加电时的复位信号会置位 OFIFG。在使能相应中断的情况下将引起中断,因此必要时需要在用户程序中将位 OFIFG清零。数控振荡器(DCO )控制寄存器(DCOCTL)DCMO名称O2O1O0D4D3D2D1D0操 作方式复位值DCOx :这里的x可以取0、1或者2。这3位用来在系统时钟控制寄存器 1 ( BCSCTL1 )的位Rselx选定的频率范围内,选择数控振荡器( DCO )的8个工作频率之一。MODx :这里的x可以取0到4中的任意1个数。这5位用来微调
7、数控振荡器(DCO) 的工作频率,但当 DCO=7时,即DCOx的3位全为1,该功能无效。MSP430微控制器中的数控振荡器 (DCO)是该系列器件的特色之一。 使用这个振荡器作为时钟信号源将不需要添加任何外部器件,同时这个时钟信号源的工作频率还能够通过 用户程序进行调整。系统时钟控制寄存器 1( BCSCTL1)XT2OFFXTSDIVA1VA0Rsel3l2l1l0XT2OFF :高频振荡器(XT2 )开关控制0 高频振荡器(XT2 )开1 高频振荡器(XT2 )关XTS :低频振荡器(LFXT1 )工作模式选择0 低频振荡器(LFXT1 )低频模式1 低频振荡器(LFXT1 )高频模式D
8、IVAx :辅助时钟(ACLK )分频系数Bit5 Bit4DIVA1 DIVA00 0 10 1 21 0 41 1 8这项功能的物理含义为在时钟信号传输的路径上插入了一个分频电路。改变位 DIVAx的数值将改变分频电路的分频系数,达到改变时钟信号频率的目的。Reslx:数控振荡器(DCO)内部电阻选择。这里的 x可以取0到3中的任意1个数,获得16种不同阻值的电阻。数控振荡器( DCO)属于RC振荡器,改变电阻的数值能够改 变振荡器的工作频率。系统时钟控制寄存器 2( BCSCTL2)SELM1LM0VM1VM0LSVS1VS0ORSELMx:主时钟(MCLK)的时钟源选择Bit7Bit6
9、SELM1SELM0数控振荡器(DCO)高频振荡器(XT2)/当XT2不支持,为 VLOCLK低频振荡器(LFXT1)/ VLOCLKMSP430系列微控制器包括多个子系列, MSP430x2xx属于这其中的一个。MSP430G2231和MSP430F2619都属于MSP430x2xx子系列。本书里所有寄存器的说 明兼顾了 MSP430x2xx子系列中的所有芯片。DIVMx :主时钟(MCLK )分频系数DIVM1 DIVM0SELS:子系统时钟(SMCLK )的时钟源选择0 数控振荡器(DCO)1 高频振荡器(XT2)DIVSx :子系统时钟(SMCLK )分频系数Bit2Bit1DIVS1
10、DIVS0DCOR :0 内部1 外部DCO )电阻选择数控振荡器(DCO )属于RC振荡器,改变电阻的数值能够改变振荡器的工作频率。 数控振荡器(DCO )既可以使用 MSP430微控制器芯片内部的电阻,通过用户程序配置系 统时钟控制寄存器 1( BCSCTL1 )中的位Reslx选择不同的内部电阻;也可以使用指定管 脚连接的外部电阻。如果外部电阻采用电位器,调整电位器就能够连续地改变数控振荡器(DCO)的工作频率。系统时钟控制寄存器 3( BCSCTL3)2S12S0LFXT1S1T1S0XCAP1XCAP02OFT1OFBit7 XT2S1 0XT2S00.41MHz晶体振荡器13MHz
11、晶体振荡器316MHz晶体振荡器0.416MHz外部时钟源XT2Sx : XT2时钟范围选择高频振荡器(XT2 )需要一个外部晶体器件。这个晶体器件的最高谐振频率为16MHz。根据具体使用晶体的谐振频率需要完成 XT2Sx的设置。最后一种选择为采用一个完整的信号源,例如实验室的信号产生器,作为时钟源时的设置。LFXT1Sx :低频时钟源选择和 LFXT1 时钟范围选择(受 XTS/BCSCTL1 控制)LFXT1S 1 LFXT1S 0XTS=00 00 132768Hz 晶体在 LFXT1 保留VLOCLK外部时钟源XTS=13 16MHz 晶体振荡器0.416MHz 外部时钟源XCAPx
12、:LFXT1 晶体振荡器内部电容选择(仅适用于XTS=0 。当 XTS=1 时,应选择00)Bit3 Bit2XCAP1 XCAP00 0 1pF0 1 6pF1 0 10pF1 1 12.5pFXT2OF :XT2 时钟失效标志LFXT1OF : LFXT1 时钟失效标志0 无1 有注意, MSP430G2231 芯片不支持高频振荡器( XT2 ),不支持低频振荡器( LFXT1 ) 的高频模式。数字控制振荡器(DCO)频率的测量MSP430 系列微控制器复位以后,主时钟信号( MCLK )和子时钟信号( SMCLK )的驱动信号都默认采用数字控制振荡器( DCO),分频系数默认 1因此这2
13、个时钟信号的频率就是数字控制振荡器(DCO )的工作频率。图1.2所示的MSP430G2231芯片管脚排列图显示管脚 6,即并行输入/输出端口 P1的管脚P1.4,也可以用做子时钟信号(SMCLK )的输出管脚,这样通过测量该管脚输出信号 的频率就能够获得数字控制振荡器( DCO)的工作频率。MSP430F2619芯片管脚16,同样为并行输入/输出端口 P1的管脚P1.4,也同样是可以用做子时钟信号( SMCLK )的输出管脚。数字控制振荡器(DCO )的工作频率可以调整以满足具体工作的需要。频率的调整通 过前面介绍的数控振荡器( DCO )控制寄存器(DCOCTL )和系统时钟控制寄存器 1
14、(BCSCTL1 )的位Reslx来实现。数字控制振荡器(DCO )的工作频率与相关寄存器中控 制位的关系如图3.2所示。 CO=0 DC0=1 DC0=2 DC0=3 DC0=4 DC0=5 DC0=6 DC0=7图3.2数字控制振荡器(DCO)的工作频率与相关寄存器中控制位的关系图图3.2显示系统时钟控制寄存器 1( BCSCTL1 )的位RSELx可以指定数字控制振荡器(DCO)工作于16个频率段的其中一个。数控振荡器( DCO )控制寄存器(DCOCTL ) 的位DCOx在指定频率段内的 8个频率子段中选择一个。图中没有显示的数控振荡器(DCO)控制寄存器(DCOCTL )的位MODx
15、在指定频率子段中实现的进一步调整。MSP430系列微控制器中每一种芯片的数据手册都给出在一定工作电压和环境温度情 况下,一些寄存器内容对应的工作频率,但是需要注意数控振荡器( DCO)属于RC振荡器,它的工作频率受工作电压、环境温度等很多因素的影响。数据手册中给出的数控振荡 器(DCO )的工作频率仅供参考。在完成应用系统的硬件电路设计以后,采用实际测量的数控振荡器( DCO )工作频率数值,再给予合适的调整将使得系统工作得更精确。程序示例 3.1用来实现数控振荡器(DCO)工作频率的调整。通过测量实际的工作频率就可以确定控制数控振荡器( DCO)工作频率的相关寄存器的具体取值。程序示例3.1
16、/ 程序名称: sysclk_dco/ 程序功能: SMCLK 使用 DCO ,分频比 1,使用管脚 SMCLK 输出时钟信号#include void main(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
17、|=RSEL1;/ 位 RSEL1 置位BCSCTL1|=RSEL0;/ 位 RSEL0 置位DCOCTL&=DCO2;/ 位 DCO2 清零DCOCTL|=DCO1;/ 位 DCO1 置位DCOCTL|=DCO0;/ 位 DCO0 置位while(1)/ 重复执行程序示例 3.1 中首先完成输出信号频率与数字控制振荡器( DCO )的工作频率一样的子时钟信号( SMCLK )输出管脚的配置,然后完成确定数字控制振荡器( DCO )的工作频 率相关寄存器的设置。MSP430 系列微控制器的时钟模块属于它的外围模块之一。外围模块的工作不需要CPU 进行全程控制,一旦完成对这些外围模块的配置,它们
18、将独立工作。程序示例 3.1 中 在完成数字控制振荡器( DCO )工作频率相关寄存器的设置以后,程序就进入while(1) / 重复执行在这个程序段中, CPU 什么都不做, 但是这时 MSP430 系列芯片的时钟模块一直工作,使得子时钟信号(SMCLK )输出管脚,P1.4, 直输出子时钟信号(SMCLK ),这个信 号的频率等于数字控制振荡器( DCO )的工作频率。修改数字控制振荡器 (DCO )的工作频率相关寄存器的内容将可以调整它的工作频率。 程序示例 3.1 没有涉及到利用位 MODx 对频率的进一步的调整。位寻址功能的实现msp430g2231.h图 2.12 的 Embedd
19、ed Workbench for MSP430 开发软件工作窗口, 在工作区 “ Workspace ” 的文件“ Files”栏目中将自动出现选择好目标芯片对应头文件“ msp430g2231.h”。图2.27Code Composer Studio 开发软件的工作窗口, 工程管理栏目 “ Project Explorer 的In eludes ” 中将包含 MSP430 系列微控制器的所有芯片对应的声明寄存器名称与地址对应关系、寄存 器位名称与数值关系的头文件,例如这里的“ msp430g2231.h”。头文件“ msp430g2231.h”的“ STANDARD BITS ”栏目的内容如
20、下#define BIT0(0x0001u)#define BIT1#define BIT2#define BIT3#define BIT4#define BIT5#define BIT6#define BIT7#define BIT8#define BIT9#define BITA#define BITB#define BITC#define BITD#define BITE#define BITF这里定义了 16个符号常量,(0x0002u)(0x0004u)(0x0008u)(0x0010u)(0x0020u)(0x0040u)(0x0080u)(0x0100u)(0x0200u)(0x
21、0400u)(0x0800u)(0x1000u)(0x2000u)(0x4000u)(0x8000u)BIT0BITF 。这个部分内容存在于 MSP430系列微控制器所有芯片对应的头文件。 上面每一个符号常量代表一个 16 位数据, 这个数据中只有 1 位为1 ,其余的全部为 0。程序示例3.1实现数控振荡器(DCO)工作频率调整部分,即对相关寄存器的配置部 分,也出现了一些符号常量。它们也在头文件“ msp430g2231.h ”中被定义,位于头文件的“Basic Clock Module ” 栏目。该栏目的部分内容如下#define DCOCTL_ DEFC( DCOCTL #define BCSCTL1_ DEFC( BCSCTL1 #define BCSCTL2_ DEFC( BCSCTL2 #define BCSCTL3_ DEFC( BCSCTL3(0x0056u) /* DCO Clock Frequency Control */ , DCOCTL_)(0x00
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1