常驻嘉宾
我爱雯婕
- 积分
- 4657
- 威望
- 2223
- 贡献
- 1682
- 兑换币
- 4
- 注册时间
- 2009-3-4
- 在线时间
- 376 小时
|
本帖最后由 chenrunshe_007 于 2010-3-18 00:23 编辑
废话少说,我们先来看两段代码:- //Code1
- void SetBusClock(void)
- {
- CLKSEL=0X00; // disengage PLL to system
- PLLCTL_PLLON=1; // turn on PLL
- SYNR=0x00 | 0x02; // VCOFRQ[7:6];SYNDIV[5:0];fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1);fPLL= fVCO/(2 × POSTDIV);fBUS= fPLL/2
- REFDV=0x80 | 0x01; // REFFRQ[7:6];REFDIV[5:0]
- _asm(nop); // BUS CLOCK=24MHz
- _asm(nop);
- while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
- CLKSEL_PLLSEL =1; //engage PLL to system;
- }
复制代码 这时候有人说:你这不是废话吗,地球人都知道这段代码,根据公式,可以算出F_Bus=24MHz,不是我无聊没事干写这玩意来开刷大家,大家请耐心点再看另一段代码:- //Code2
- void SetBusClock(void)
- {
- CLKSEL=0X00; // disengage PLL to system
- PLLCTL_PLLON=1; // turn on PLL
- SYNR=0x00 | 0x0B; // VCOFRQ[7:6];SYNDIV[5:0];fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1);fPLL= fVCO/(2 × POSTDIV);BUS= fPLL/2
- REFDV=0x00 | 0x07; // REFFRQ[7:6];REFDIV[5:0]
- _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;
- }
复制代码 聪明的你看出这两段代码的区别了吧?对,第二段代码同样可以超频到24MHz,但是用了不同的方法,很久以前,我曾经在论坛上面看见过有人问过这个问题,说同样是超频到24MHz,16X(2+1)/(1+1)=24和16X(11+1)/(7+1)=24有什么区别?我当时还没太注意,经过试验发现真没什么区别,等到今年我调的时候就发现了,大家可以看得出如果用的是代码1,超频每次增加的基数是8MHz,而代码2可以小到2MHz,做LED和EM可能还没这个感受,做CCD的就会深刻的体验,超频每快2MHz对图像处理的好处。也就是说使用代码1,你想超频更多,就必须每次8MHz增加,而用代码2,每次你可以增加2MHz,慢慢增加直到不能再超为止,给大家说下我们的例子,我们用的是龙丘的112Pin的板子,用代码1的话只能超到88MHz,再往上怎么也超不到96MHz,而用代码2的话,可以开始试88、90、92、94、96……,最后最高发现可以在94MHz那里达到稳定,比原来预计的88MHz多了6MHz,如果大家用的是龙丘的80Pin的板子,那可能就能超得过96,或者更高了。这种细节大家不要小看它,很多有利的细节加在一起可能就能在成功之路上助你一臂之力。
不过本人倒是有个疑问,某权威说过,LED不用超频那么多,有24MHz够用了,我们用的是激光扫描探测方法,模拟CCD的处理,可能处理的信息会比较多,如果我能超到94MHz,那岂不是比24MHz快了整整将近4倍!在这种“诱惑”下,我们快把持不住了,所以也就超了,觉得好像也没有什么超的多就会不稳定的事情发生,童鞋们觉得怎么样。
1.追求运行速度还是追求稳定重要?
2.到底超频超得多是不是一定会导致运行不稳定?能帮本人解决这两个问题,不胜感激。
以上仅代表个人意见,欢迎指出不足的地方。
PS:代码是引用龙丘的例程修改,特此做一下说明。 |
|