智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5070|回复: 13
打印 上一主题 下一主题

PLL模块初始化的疑问!

  [复制链接]

4

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
582
威望
245
贡献
319
兑换币
0
注册时间
2011-1-9
在线时间
9 小时
跳转到指定楼层
1#
发表于 2011-2-28 14:35:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
void PLL_Init(void){
   REFDV=0x01;                  
   SYNR =0x02;                     
   while(CRGFLG_LOCK==1)
   CLKSEL=0X08;
   
                             }

外部晶振16MHZ,欲得到24MHZ的总线时钟,为什么用以上的程序却得不到呢?

0

主题

1672

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13030
QQ
威望
7128
贡献
3436
兑换币
424
注册时间
2013-1-5
在线时间
1233 小时
14#
发表于 2013-1-18 13:04:08 | 只看该作者
学习下
回复 支持 反对

使用道具 举报

1

主题

33

帖子

0

精华

注册会员

Rank: 2

积分
82
威望
52
贡献
16
兑换币
17
注册时间
2012-11-29
在线时间
7 小时
毕业学校
杭电
13#
发表于 2013-1-17 16:29:24 | 只看该作者
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
威望
247
贡献
101
兑换币
95
注册时间
2012-5-3
在线时间
44 小时
12#
发表于 2013-1-17 14:03:11 | 只看该作者
本帖最后由 willkong 于 2013-1-17 14:05 编辑

/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数设置总线频率为24MHz,晶振频率16MHz
** designer by willkong
****************************************************/
void PLL_Init(void)
{
CLKSEL=0x00; //24mhz
PLLCTL_PLLON=1;
SYNR=0X00 | 0X02;
REFDV=0X80 | 0X01;
POSTDIV=0X00;
_asm(nop);
_asm(nop);
while(0==CRGFLG_LOCK);//锁相环锁定
CLKSEL_PLLSEL=1;//选定外部时钟
}
/***************************************************
这是我写的代码,希望对你有帮助!!
回复 支持 反对

使用道具 举报

11

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
758
威望
396
贡献
142
兑换币
202
注册时间
2012-11-14
在线时间
110 小时
11#
发表于 2012-11-27 11:07:05 | 只看该作者
8楼好帅啊
回复 支持 反对

使用道具 举报

2

主题

93

帖子

0

精华

高级会员

Rank: 4

积分
706
威望
448
贡献
194
兑换币
6
注册时间
2010-12-26
在线时间
32 小时
10#
发表于 2011-4-18 19:51:21 | 只看该作者
不好意思,额错了
8楼正解
回复 支持 反对

使用道具 举报

2

主题

93

帖子

0

精华

高级会员

Rank: 4

积分
706
威望
448
贡献
194
兑换币
6
注册时间
2010-12-26
在线时间
32 小时
9#
发表于 2011-4-18 19:47:41 | 只看该作者
楼上的不对吧
void Init_pll(void)
{
    CLKSEL = 0X00;              //使能锁相环      
    PLLCTL_PLLON = 1;           //打开锁相环                  
    SYNR = 2;
    REFDV=3 ;                   //锁相环时钟=2*16*(1+SYNR)/(1+R)
    _asm(nop);                                                                                       
    _asm(nop);                  //总线时钟=20M                 
    while(!(CRGFLG_LOCK == 1)); //等待锁相环稳定为1时
    CLKSEL_PLLSEL = 1;          //把锁相环写入系统        
}
回复 支持 反对

使用道具 举报

9

主题

86

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1723
QQ
威望
349
贡献
1278
兑换币
10
注册时间
2010-11-15
在线时间
48 小时
8#
发表于 2011-4-11 16:40:07 | 只看该作者
楼上的好像是40M吧
void PLL_init(void)
{   
    CLKSEL=0X00;      //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR=0x00|0x02;         
    REFDV=0x00|0x01;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=48MHz;
    _asm(nop);        //BUS CLOCK=24M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
回复 支持 反对

使用道具 举报

7

主题

77

帖子

0

精华

高级会员

Rank: 4

积分
811
QQ
威望
338
贡献
71
兑换币
0
注册时间
2010-3-5
在线时间
201 小时
7#
发表于 2011-3-6 21:56:00 | 只看该作者
void Init_pll(void)
{   
    CLKSEL = 0X00;                      //disengage PLL to system
    PLLCTL_PLLON = 1;                   //turn on PLL
    SYNR = 4;         
    REFDV=1 ;                           //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
    _asm(nop);                          //BUS CLOCK=40M
    _asm(nop);
    while(!(CRGFLG_LOCK == 1));         //when pll is steady ,then use it;
    CLKSEL_PLLSEL = 1;                  //engage PLL to system;
}
回复 支持 反对

使用道具 举报

7

主题

54

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1730
QQ
威望
280
贡献
1380
兑换币
0
注册时间
2011-3-2
在线时间
35 小时
6#
发表于 2011-3-3 21:15:40 | 只看该作者
while ((CRGFLG&0x08)==0);
CLKSEL|=0x80;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-2 08:34 , Processed in 0.438239 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表