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

本文详细介绍了MSP430单片机的时钟系统配置,包括UCS寄存器的功能解析,如UCSCTL0、UCSCTL1等,以及如何设置DCOCLK频率范围,锁频环FLL的工作原理和计算公式,SMCLK、ACLK、MCLK的信号源选择方法,振荡器故障标志位的处理,和XT1CLK、XT2CLK的关闭条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:BerenCamlost

本文针对于MSP430单片机原理与应用课程,请在复习时使用。

参考资料:

  1. PPT
  2. MSP430F6638用户手册
  3. 实验教程

本章最新更新日期:2018.12.23

第二章 UCS寄存器

2.1 UCSCTL0

UCSCTL0

bitFieldDescription
12-8DCODCO输出频率范围控制参数
7-3MODDCO输出频率范围控制参数

上述的两个区域并不需要设置,在配置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

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

2.3.3 FLL的计算公式

fDCOCLK÷[D×(N+1)]=fFLLREFCLK÷n f_{DCOCLK}\div [D\times (N+1)]=f_{FLLREFCLK}\div n fDCOCLK÷[D×(N+1)]=fFLLREFCLK÷n

2.3.4 寄存器中各个位的解释

FieldDescription默认值默认值对应的分频系数
FLLD图中的FLLD分频,公式中的D1H2
FLLN图中的FLLN分频,公式中的N,实际的分频系数是N+11FH31+1
FLLREFDLV图中的FLLREFDLV分频,公式中的n01

2.4 UCSCTL4

2.4.1 寄存器示意图

UCSCTL4

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

2.4.2 寄存器功能

BITFieldDescription默认值默认值对应的选项
10-8SELAACLK时钟源选择0XT1CLK
6-4SELSSMCLK时钟源选择4DCOCLKDIV
2–0SELMMCLK时钟源选择4DCOCLKDIV

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
这个寄存器只需要知道两个位:

BITSFIELDDescription默认
8XT2OFF关闭XT2CLK关闭
0XT1CLK关闭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

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

*2.8 BAKCTL

BAKCTL

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值