打印

解决一个2410的u-boot的频率不能改写问题

[复制链接]
1745|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
masashinakayama|  楼主 | 2008-11-4 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
board/st2410/st2410.c (cp from smdk2410)
自作聪明写下
#define FCLK_SPEED 2
#define USB_CLOCK 2
然在原本的
#if FCLK_SPEED==0               /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV  0xC3
#define M_PDIV  0x4
#define M_SDIV  0x1
#elif FCLK_SPEED==1             /* Fout = 202.8MHz */
#define M_MDIV  0xA1
#define M_PDIV  0x3
#define M_SDIV  0x1
后面添加
#elif FCLK_SPEED==2
...(设置200M/100M/50M)
#endif
几句话,试图重新修改MPLL和UPLL频率
然后烧录后发现不行,压根没动,示波器测量还是202.8M
嘿嘿嘿,
哪位高人谁能一眼看出来问题啊?小弟来拜一拜

相关帖子

沙发
masashinakayama|  楼主 | 2008-11-4 23:24 | 只看该作者

顺便帖个计算PLL的程序,满足spec限制的

#include <math.h>
#define FOUT (200.0)

算下来,某些人的参数设置有点小问题
main()
{
    const float fin=12.0;
    int t,i;
    int m,p,s;
    float fout,fvco;

    for (s=0;s<4;s++)
        for (p=2;p<(64+2);p++)
            for (m=8;m<(256+8);m++)
            {
                t=1;
                for (i=0;i<s;i++)
                t*=2;
                fout = fin*m/(p*t);
                if (fabs(FOUT-fout)<0.1)
                {
                      fvco=fin*m/p;
                      if (((fin/(25*p))<(28.449/m))&&(fin/(10*p))>(28.449/m))
                      if ((0.7<(8.456/sqrt(m)))&&(8.456/sqrt(m))<1.8)
                      if ((160<=fvco)&&(fvco<=400))
                      if ((20<=fout)&&(fout<=203)) printf ("M=%d P=%d s=%d fout=%8.4f ",m-8,p-2,s,fout);
                }
        }

}

使用特权

评论回复
板凳
masashinakayama|  楼主 | 2008-11-4 23:42 | 只看该作者

NXP

原来是没把前面的屁股擦干净
要make distclean

使用特权

评论回复
地板
masashinakayama|  楼主 | 2008-11-4 23:45 | 只看该作者

搞来搞去,搞得还是smdk2410的东西

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

317

主题

1957

帖子

4

粉丝