什么是锁相环?

PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时脉讯号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时脉冲讯号。

锁相环主要作用:

单片机使用锁相环(PLL)功能能够获得更高的总线频率,这对于需要提高单片机运行速度的场合非常必要。

锁相环相关寄存器简介:

1、CRG时钟合成寄存器(SYNR)

该寄存器低6位有效,有效值0~63

2、时钟分频寄存器(REFDV)

该寄存器有效位为寄存器的低4位,有效值为0~15

3、时钟选择寄存器(CLKSEL)

PLLSEL置1:Bus Clock = PLLCLK / 2 置0:Bus Clock = OSCCLK / 2)

设置锁相环计算方法

配置锁相环的主要目的是为了得到新的总线时钟,其配置主要依据下面的三个公式:

Fosc系统总线时钟频率

Fpll锁相环时钟频率

Fbus总线时钟频率

配置流程:

1. CLKSEL=0X00; // 在CLKSEL最高位为0时才能设置其他寄存器

2. 设置相关参数 SYNR ( 时钟合成寄存器 ) REFDY ( 时钟分频寄存器 )

3. 等待 PLL 稳定 该部分用到的寄存器 CRGFLG_LOCK 当 CRGFLG_LOCK=1 表示时钟频率已经稳定

4、CLKSEL=0x80 ;//使用PLL时钟

例程代码:

void PLL_Init(void)
{
CLKSEL=; //时钟选择寄存器的最高位为0 Bus Clock(总线时钟)= OSCCLK / 2)
// 为1 Bus Clock(总线时钟)= PLLCLK / 2)
// 在CLKSEL最高位为0时才能设置其他寄存器 SYNR=0x44;//时钟合成寄存器 0100 0100 因低六位有效所以最大为63
REFDV=0x81;//时钟分频寄存器 1000 0001因低四位有效所以最大为15 外部晶振fosc=8M,BUS clock=20M
_asm(nop); //空操作
_asm(nop);
while(!CRGFLG_LOCK==); //当CRGFLG_LOCK!=1时
//CRGFLG_LOCK=1 表示时钟频率已经稳定 CLKSEL=0X80; //时钟选择寄存器的最高位 // 在CLKSEL最高位设置为1其他寄存器不允许设置
}
void PLL(void)
{
SYNR=0x01; //时钟主频:PLL clock = 2*OSC CLOCK*(1+SYNR)/(1+REFDV)
REFDV=0x00; // PLL clock = 32MHz = 2* 8 * 2 / 1 while(!(CRGFLG_LOCK==)); //等待晶振稳定
CLKSEL_PLLSEL=; //对时钟主频/2得到 //总线时钟:BUS CLOCK = PLL CLOCK / 2
//BUS CLOCK =16MHz = 32 /2
}
//ECT模块的输出比较功能设置
//通道0
//根据元件的工作频率选择单片机合适的主频率
//system clock 8MHZ(系统时钟)
void PLL(void) //设定总线频率 (超频)
{
CLKSEL=0x00; //初始化PLL前先使用外部晶振(晶振时钟)
SYNR=0x01; //时钟主频:PLL clock = 2*OSC CLOCK*(1+SYNR)/(1+REFDV)
REFDV=0x00; //got 32 MHZ = 2*8*2/1
while(!(CRGFLG_LOCK==)); //等待晶振稳定(时钟校正同步)
CLKSEL_PLLSEL=;//(CLKSEL=0x80;) //BUS CLOCK 16 MHZ = PLL CLOCK / 2 (选定锁相环时钟)(PLLSEL置1:Bus Clock = PLLCLK / 2)
}

第十四届智能车培训 PLL锁相环的更多相关文章

  1. 第十四届智能车队员培训 I/O的使用 数据方向寄存器和数据寄存器的配置 MC9S12D64处理器

    I/O的使用 数据方向寄存器和数据寄存器的配置 I/O输入输出的使用: 数据方向寄存器与数据寄存器 寄存器的概念: 寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成.在集成电路设计中,寄存 ...

  2. HDU 6467 简单数学题 【递推公式 && O(1)优化乘法】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6467 简单数学题 Time Limit: 4000/2000 MS (Java/Others)    M ...

  3. HDU 6464 免费送气球 【权值线段树】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6464 免费送气球 Time Limit: 2000/1000 MS (Java/Others)    M ...

  4. HDU 6470 Count 【矩阵快速幂】(广东工业大学第十四届程序设计竞赛 )

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6470 Count Time Limit: 6000/3000 MS (Java/Others)    ...

  5. HDU 6467.简单数学题-数学题 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    简单数学题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  6. HDU 6464.免费送气球-动态开点-权值线段树(序列中第first小至第second小的数值之和)(感觉就是只有一个状态的主席树) (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    免费送气球 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    超级无敌简单题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  8. 第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题

    第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 1.原题呈现 2.试题答案 3.题目解析 因博客园无法打出公式等,所以给你们几个小编推荐的链接去看看,在这里小编深感抱歉! https ...

  9. EOS基础全家桶(十四)智能合约进阶

    简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...

随机推荐

  1. 伪指令 ENTRY 与 END

    ENTRY ENTRY 是程序入口伪指令.在一个完整的汇编程序中至少有一个 ENTRY,编译程序在编译连接时依据程序入口进行连接.在只有一个入口时,编译程序会把这个入口的地址定义为系统复位后的程序起始 ...

  2. MySQL系列详解八:MySQL多线程复制演示-技术流ken

    前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有 ...

  3. Redis中的执行命令的过程

    在redis.c的initServerConfig()方法中,通过调用dictCreate方法初始化server端的命令表.这个命令表是一个hashtable,可以通过key找到相关的命令: /* C ...

  4. 从零开始学安全(二十五)●用nmap做端口扫描

    以上是常用的端口扫描 -T 用法 每个级别发包时间  当没有使用T 时默认的使用T3级别发包 半开扫描  先探测主机是否存活 再用-sS  扫描端口   容易造成syn 包攻击 就是利用僵尸主机  进 ...

  5. 分页Sql语句

    第一种 Top剔除法.去除Top (pageIndex-1)*PageSize * FROM dbo.SBD_EXCHANGE_BILL ) EB_ID FROM dbo.SBD_EXCHANGE_B ...

  6. Netty实战十一之预置的ChannelHandler和编解码器

    Netty为许多通用协议提供了编解码器和处理器,几乎可以开箱即用,这减少了你在那些相当繁琐的事务上本来会花费的时间与精力.我们将探讨这些工具以及它们所带来的好处,其中包括Netty对于SSL/TLS和 ...

  7. Excel通用类工具(二)

    前言 上一篇中写到了用反射来处理类中的不用的属性,但是Excel的列名还得手动输入,这样还是比较麻烦的,今天这篇就利用自定义注解来解决手动传入列名的问题:其实很简单的,只需要在上一篇的基础上加一个类就 ...

  8. git参考, 小结

    git官网: https://git-scm.com 菜鸟教程: http://www.runoob.com/git/git-tutorial.html 廖雪峰: https://www.liaoxu ...

  9. 输出映射resultMap

    ①:编写接口方法 /** * 根据id查询用户 * @param id * @return */ public User queryUserById3(Integer id); ②:编写映射文件 1: ...

  10. 洛谷P3199 [HNOI2009]最小圈(01分数规划)

    题意 题目链接 Sol 暴力01分数规划可过 标算应该是这个 #include<bits/stdc++.h> #define Pair pair<int, double> #d ...