IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MSP430单片机:时钟系统(UCS 模块) -> 正文阅读

[嵌入式]MSP430单片机:时钟系统(UCS 模块)

??? Family User's Guide? 用户指南

UCS 模块最多含有 5 个时钟源:
XT1CLK :低频 / 高频振荡器,可以使用低频 32768HZ 晶振和外部振荡器或者通过外部输入源输入 4MHZ~32MHZ 时钟。
VLOCLK :内部低消耗,低频振荡器。典型值为 12KHZ
REFOCLK :内部低频振荡器,典型值为 32768HZ ,作为 FLL 基准源。
DCOCLK :内部数字控制振荡器 (DCO) 可以通过 FLL 来稳定。
XT2CLK :可选择的高频振荡器,可以使用标准晶振,振荡器或者外部时钟源输 4MHZ~40MHZ
外部:XT1CLK??? XT2CLK
内部: VLOCLK ??? REFOCLK ? ? DCOCLK

UCS 模块可以产生三个时钟信号供cpu和外设使用:
ACLK ?????? 辅助时钟
MCLK????? 主时钟
SMCLK??? 子系统时钟
对这张核心的图,做一些解释:
(1)内部超低功耗低频振荡器VLO

?

无须外部晶振,提供约10khz

(2)内部参考时钟REFO

在不要求或不允许使用外部晶振的应用中,REFO可以用作内部高精度时钟。经过内部调整,REFO的典型频率为32768Hz

(3)XT1振荡器 ?????

XT1DRIVE控制驱动力,低了省电。

XCAP调整负载电容。

XT1OFF清零,XT1无论在任何模式下都可用。

XT1BYPASS的三角形,在数字电路中是驱动门,提升驱动能力。

XT1与通用I/O端口公用引脚,应注意上电复位的默认值,以我手中的这块板为例:

\Delta?crystal mode 和 bypass mode区别

(4)XT2振荡器(参考XT1)

?代码解析:

//***************************************************************************//
//                                                                           //
//                       初始化主时钟: MCLK = XT2                            //
//                                                                           //
//***************************************************************************//
#ifdef   EXTERNAL_HF_OSC
void Init_CLK(void)
{
  WDTCTL     = WDTPW + WDTHOLD                            ; // 关看门狗
  P5SEL     |= 0x0C                                       ; // 端口功能选择振荡器
  UCSCTL6   &= ~XT2OFF                                    ; // 振荡器使能
  UCSCTL3   |= SELREF_2                                   ; // FLLref = REFO,设置FLL的基准时钟
  UCSCTL4   |= SELA_2                                     ; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志                                                          
    SFRIFG1 &= ~OFIFG                                     ; 
  }while(SFRIFG1&OFIFG)                                   ; // 检测振荡器错误标志
  UCSCTL6   |= XT2DRIVE0 + XT2DRIVE1                      ; // XT2 驱动模式 24~32MHz                                            
  UCSCTL4   |= SELS_5 + SELM_5                            ; // SMCLK = MCLK = XT2
}
#endif

1.P5SEL???? |= 0x0C ? ? ? ? //把某一位变成1 ? ? ?? ?? 0x0C=1100

注意控制寄存器以及位

不同型号可能不太一样,https://blog.csdn.net/u014571457/article/details/24412123

2.UCSCTL6?? &= ~XT2OFF? //把某一位变成0

XT2OFF上电默认1,即关闭

(5)FLL锁频环

(6) 内部模块振荡器MODOSC

可产生约4.8MHZ的MODCLK时钟,flash控制器模块,ADC_12模块等片上外设都可以使用MODCLK作为内部参考时钟

有条件/无条件启用请求

例如:flash,adc无条件启用请求


时钟失效以及安全操作

?如图:部件内的检测电路

当时钟刚打开没有正常工作时,晶振故障失效标志位 XT1LFOFFG, XT1HFOFFG 或XT2OFFG 将置位,一旦被置位,即使晶振恢复到正常状态也将一直保持置位,直到手动用软件将故障失效标志位清零。清零之后,若晶振故障失效情况仍然存在,晶振故障失效标志位将自动再次被置位。

DCOFFG总的标志位

tips:断允许位重新置位,以接收新的晶振故障失效请求。注意,振荡器故障失效事件不受中断允许控制位(GIE)的控制。


?https://blog.csdn.net/u011123091/article/details/52740002? (内置函数)


例:

?

//***************************************************************************//
//                                                                           //
//                 初始化主时钟: MCLK = XT1×(FLL_FACTOR+1)                  //
//                                                                           //
//***************************************************************************//
#ifdef   INTERNAL_HF_OSC
void Init_CLK(void)
{
  WDTCTL     = WDTPW + WDTHOLD                            ; // 关看门狗
  P7SEL     |= 0x03                                       ; // 端口选择外部低频晶振XT1
  UCSCTL6   &=~XT1OFF                                     ; // 使能外部晶振 
  UCSCTL6   |= XCAP_3                                     ; // 设置内部负载电容
  UCSCTL3   |= SELREF_2                                   ; // DCOref = REFO
  UCSCTL4   |= SELA_0                                     ; // ACLK   = XT1  
  __bis_SR_register(SCG0)                                 ; // 关闭FLL控制回路
  UCSCTL0    = 0x0000                                     ; // 设置DCOx, MODx
  UCSCTL1    = DCORSEL_7                                  ; // 设置DCO振荡范围
  UCSCTL2    = FLLD__1 + FLL_FACTOR                       ; // Fdco = ( FLL_FACTOR + 1)×FLLRef = (649 + 1) * 32768 = 21.2992MHz
  __bic_SR_register(SCG0)                                 ; // 打开FLL控制回路                                                            
  __delay_cycles(1024000)                                 ; 
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志                                                            
    SFRIFG1 &= ~OFIFG                                     ; 
  }while(SFRIFG1&OFIFG)                                   ; // 检测振荡器错误标志 
}
#endif

?

更多:https://yichen.blog.csdn.net/article/details/88682651

?

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:29:42  更:2021-08-08 11:29:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:17:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码