MSP430单片机各种寄存器总结(2)——UCS

作者:BerenCamlost

本文针对于南京理工大学的王宏波老师的MSP430单片机原理与应用课程,请在复习时使用。

参考资料:

  1. 王宏波老师的PPT
  2. MSP430F6638用户手册
  3. 王宏波老师实验教程

本章最新更新日期:2018.12.22

第二章 UCS寄存器

2.1 UCSCTL0

UCSCTL0

bit Field Description
12-8 DCO DCO输出频率范围控制参数
7-3 MOD DCO输出频率范围控制参数

上述的两个区域并不需要设置,在配置FFL的时候直接设置成0即可,FLL配置完成后会自动被设置。

2.2 UCSCTL1

UCSCTL1
DCORSEL,DCOCLK的频率范围设置参数,通过它来设置DCOCLK的频率范围,比如:设置DCOCLK的输出频率范围为0.64~14.0MHz

  • 如下图所示,可知设置频率为0.64~14.0MHz的DCO需要将DCORSEL的值设置为3.

DCO Frequency

UCSCTL1 = DCORSEL_3; //DCORSEL_3是宏定义,为0x0030

2.3 UCSCTL2 & UCSCTL3

2.3.1 寄存器示意图

UCSCTL2
UCSCTL3

2.3.2 锁频环FLL

上述两个是关于锁频环FFL的控制寄存器,FLL示意图如下,务必背过此图
FLL

2.3.3 FLL的计算公式

f D C O C L K ÷ [ D × ( N + 1 ) ] = f F L L R E F C L K ÷ n f_{DCOCLK}\div [D\times (N+1)]=f_{FLLREFCLK}\div n

2.3.4 寄存器中各个位的解释

Field Description 默认值 默认值对应的分频系数
FLLD 图中的FLLD分频,公式中的D 1H 2
FLLN 图中的FLLN分频,公式中的N,实际的分频系数是N+1 1FH 31+1
FLLREFDLV 图中的FLLREFDLV分频,公式中的n 0 1

2.4 UCSCTL4

2.4.1 寄存器示意图

UCSCTL4

  • 这个寄存器的作用是,为SMCLK、ACLK、MCLK选取信号源。在UCS的实验中几乎是必用的。

2.4.2 寄存器功能

BIT Field Description 默认值 默认值对应的选项
10-8 SELA ACLK时钟源选择 0 XT1CLK
6-4 SELS SMCLK时钟源选择 4 DCOCLKDIV
2–0 SELM MCLK时钟源选择 4 DCOCLKDIV

2.4.3 例程

SMCLK=MCLK=DCOCLK,ACLK=XT1CLK

//注意这里的赋值用“=”,而不是“|=”,区别不讲了,重复过很多次了
UCSCTL4 = SELA__XT1CLK + SELM__DCOCLK + SELS__DCOCLK;
/*
#define SELA__XT1CLK           (0x0000)
#define SELS__DCOCLK           (0x0030)
#define SELM__DCOCLK           (0x0003)
*/

2.5 UCSCTL6

UCSCTL6
这个寄存器只需要知道两个位:

BITS FIELD Description 默认
8 XT2OFF 关闭XT2CLK 关闭
0 XT1CLK 关闭XT1CLK 关闭

注意,这里的关闭的条件是,该时钟信号没有被作为ACLK、SMCLK、MCLK、FLL参考时钟的时钟源

2.6 UCSCTL7

UCSCTL7
振荡器故障标志位寄存器,如果想要稳定XT1CLK,需要将这个寄存器的相应区域置0(复位)。
例如下列程序:

do
{
	UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags
	SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag

* 2.7 SFRIE1 & SFRIFG1

SFRIE1
SFRIFG1

Name Description 默认
OFIE 振荡器故障中断使能 0
OFIFG 振荡器失效中断标志位 1
WDTIE 看门狗在间隔定时器模式下的中断使能 0
WDTIFG 看门狗中断标志位 0

*2.8 BAKCTL

BAKCTL

  • LOCKBAK:在使用XT1CLK的时候,需要先将这一位置0来解锁XT1CLK的引脚。
while(BAKCTL & LOCKBAK) // Unlock XT1 pins
    	BAKCTL &= ~(LOCKBAK);

猜你喜欢

转载自blog.csdn.net/weixin_43830248/article/details/85202949