Freescale MC9S12G128 PLL,OSC

2021-07-21来源: eefocus关键字:Freescale  PLL  OSC

PLL OSC简述:

在这里插入图片描述

S12CPMU Block Diagram:

在这里插入图片描述

S12CPMU Synthesizer Register(CPMUSYNR)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

PLL相关主要寄存器:

CPMUPROT:时钟配置寄存器保护

Clock Configuration Registers Protection Bit — This bit protects the clock configuration registers from

accidental overwrite (see list of affected registers above):

Writing 0x26 to the CPMUPROT register clears the PROT bit, other write accesses set the PROT bit.

0 Protection of clock configuration registers is disabled.

1 Protection of clock configuration registers is enabled.

0x26:将0x26写入CPMUPROT寄存器清除PROT位,其他写入访问设置PROT位

0:关闭保护

1:使能保护


S12CPMU PLL Control Register (CPMUPLL)

0x003A

Read:Anytime

Write: Anytime if PROT=0 (CPMUPROT register) and PLLSEL=1 (CPMUCLKS register). Else write has

no effect.

CPMUPLL[5:4] FM1, FM0

0x00:关闭FM

0x10: ±1%

0x20:±2%

0x30:±3%


FM1 FM0 FM Amplitude/Fvco Variation

0 0 FM off

0 1 ±1%

1 0 ±2%

1 1 ±3%

CPMUSYNR:

CPMUREFDIV:REFDIV基准分频器配置

CPMUPOSTDIV:POST分配配置


PLL设置示例:

#include       /* common defines and macros */

#include "derivative.h"      /* derivative-specific definitions */


#define D_


#define LED PORTA

#define LED_DIR DDRA



void delay(void) {

  unsigned int i;

  for(i=0; i<60000; i++) {

    _asm(nop);

    _asm(nop);

    _asm(nop);

    _asm(nop);

    _asm(nop);

    _asm(nop);

  }

}



void pll_init(void) {

  CPMUPROT = 0x26;              //保护时钟配置寄存器

  

  CPMUCLKS_PSTP = 0;            //禁用PLL

  CPMUCLKS_PLLSEL = 1;          //选择PLL作为系统时钟源

  

  CPMUOSC_OSCE = 1;             //外部晶振使能

  while(CPMUOSC_OSCPINS_EN==0); //等待外部晶振使能

  

  /* CPMUSYNR     VCOFRQ[7:6], SYNDIV[5:0] */

  /* CPMUREFDIV   REFFRQ[7:6], REFDIV[3:0] */

  /* CPMUPOSTDIV  POSTDIV [0] = 0,   FPLL = FVCO   */

  

  #if 0

  //fVOC= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) 

  CPMUSYNR = 0x07;                                                  

  CPMUREFDIV = 0x0F; // 16M     

  //CPMUREFDIV = 0x07; // 32M       

  //CPMUREFDIV = 0x03; // 64M       

  #endif

  

  #if 1

  //fVOC配置 fVOC = 2*fREF*(SYNDIV +1)

  //CPMUSYNR = 0x45; // 48M

  //CPMUSYNR = 0x44; // 40M

  //CPMUSYNR = 0x43; // 32M

  //CPMUSYNR = 0x42; // 24M

  CPMUSYNR = 0x01; // 16M

  CPMUREFDIV = 0x81;//REFDIV基准分频器配置

  #endif

    

  CPMUPOSTDIV = 0x00;           // PLL CLOCK = VCO CLOCK / (POSTDIV + 1) 

                              

  _asm(nop);

  _asm(nop);

  

  CPMUPLL=0x10;               //锁相环调频启用,用以减少噪音

    

  while(CPMUFLG_LOCK == 0);   //等待PLL稳定 wait for VCO to stabilize

  

    

  CPMUPROT = 0x00;            //关闭保护时钟

  CPMUCLKS_PLLSEL = 1;        /* Switch clk to use PLL */

}



void led_init(void) {

  LED = 0xFF;

  LED_DIR = 0xFF;

}



void main(void) {

  /* put your own code here */

  

  DisableInterrupts;  // 关闭总中断


  pll_init();

  led_init();

  

EnableInterrupts;   // 开启总中断



  for(;;) {

  

     delay();

     LED = 0x00;

     delay();

     LED = 0xFF;

     

    _FEED_COP(); /* feeds the dog */

  } /* loop forever */

  /* please make sure that you never leave main */

}


关键字:Freescale  PLL  OSC 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic542570.html

上一篇:freescale MC9S12G128单片机概述
下一篇:freescale MC9S12G128 SCI,printf使用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

freescale MC9S12G128 SCI,printf使用
; // PLLCLK:32M     BUSCLK:16M  //CPMUSYNR = 0x42; // PLLCLK:24M     BUSCLK:12M  CPMUSYNR = 0x01; // PLLCLK:16M    BUSCLK:8M  CPMUREFDIV = 0x81;//REFDIV基准分频器配置  #endif      CPMUPOSTDIV = 0x00;           // PLL
发表于 2021-07-21
freescale <font color='red'>MC9S12G128</font> SCI,printf使用
freescale MC9S12G128单片机概述
MC9S12G128MLL开发板实物图DBM下载器:飞翔科技DBM下载实物图:
发表于 2021-07-21
freescale <font color='red'>MC9S12G128</font>单片机概述
freescale MC9S12G128 中断代码实现方法
写法1:中断函数指明中断向量号:main.c#pragma CODE_SEG __NEAR_SEG NON_BANKEDinterrupt 中断向量号 void 中断服务函数名(void) {// 中断服务程序代码段}#pragma CODE_SEG DEFAULT中断向量号在mc9s12g128.h文件里有定义,如:/**************** interrupt vector numbers ****************/#define VectorNumber_Vportj 24U写法2:修改prm文件,在Project.prm文件声明中断函数:main.c:#pragma CODE_SEG __NEAR_SEG
发表于 2021-07-21
Freescale MC9S12G128 GPIO
MC9S12G-Family Block Diagram不同芯片封装端口:Port J相关寄存器The PIM includes these distinctive registers:• Data registers and data direction registers for ports A, B, C, D, E, T, S, M, P, J and AD when usedas general-purpose I/O• Control registers to enable/disable pull devices and select pullups/pulldowns on ports T, S, M, P, Jan
发表于 2021-07-21
<font color='red'>Freescale</font> MC9S12G128 GPIO
Freescale MC9S08AW60汇编学习笔记
能够实现用七段led数码管显示出数字和字母、让它们同时显示甚至于滚动显示,这些功能已经很不错了,但是这样还不够,我们还想实现更准确的控制,让数码管按照我们的想法来显示,而不是呆板的循环,这样我们引入中断的想法。也许其他人会从查询和中断的关系这些地方来引出中断,但是我还是倾向于从控制的观点来引出中断,毕竟中断也是实现更直观的人为控制的方法,程序的运行变得可以加入人的意愿来执行,如果我们要让程序进入某一个中断程序,那么给主程序发一个中断,让它跳到中断子程序中运行就行了;我们不发中断,中断子程序就不会执行。还是用七段led数码管来演示,我们没发一个中断信号,数码管就在0~9之间变化一下。代码如下: INCLUDE MC9S08A
发表于 2021-04-07
<font color='red'>Freescale</font> MC9S08AW60汇编学习笔记
MC9S12G128 SCI设置
以下代码SCI开启了接收中断。  /*************************************************************/  /*                        初始化SCI                          */  /********************
发表于 2021-07-30
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved