历史上的今天
今天是:2026年01月09日(星期五)
2023年01月09日 | s3c2440如何设置fclk
2023-01-09 来源:elecfans
1设置LockTIme变频锁定时间
2设置FCLK与晶振输入频率(Fin)的倍数
3设置FCLK,HCLK,PCLK三者之间的比例
LockTIme 变频锁定时间由LOCKTIME寄存器(见下表)来设置,由于变频后开发板所有依赖时钟工作的硬件都需要一小段调整时间,该时间计数通过设置 LOCKTIME寄存器[31:16]来设置UPLL(USB时钟锁相环)调整时间,通过设置LOCKTIME寄存器 [15:0]设置MPLL调整时间,这两个调整时间数值一般用其默认值即可。
表2-8变频锁定时间寄存器(LOCKTIME)

FCLK与Fin的倍数通过MPLLCON寄存器设置,三者之前有以下关系:
MPLL(FCLK) = (2*m*Fin)/(p*2^s)
其中:m = MDIV + 8, p = PDIV + 2, s = SDIV
当设置完MPLL之后,就会自动进入LockTime变频锁定期间,LockTime之后,MPLL输出稳定时钟频率。
表2-9 MPLL配置寄存器(MPLLCON)

通过上述算法比较难以找到合适的PLL值,下表给出了官方推荐的一些MPLL参考设置:
表2-10 官方推荐MPLL

MPLL(FCLK) = (2*(MDIV+8) * Fin) / ((PDIV+2) * 2^(SDIV))。
确定时钟频率最关键的代码:
ChangeMPllValue((mpll_val》》12)&0xff, (mpll_val》》4)&0x3f, mpll_val&3);
上面调函数实现了MDIV=92 PDIV=1 SDIV=1从而计算MPLL和UPLL的值。
m=(MDIV+8)=100, p=(PDIV+2)=3,s=SDIV=1.
ChangeClockDivider(key, 12);
再找出函数的原型分析下,
//*************************[ MPLL ]*******************************
下面这个函数就是确定MPLLCON寄存器的值也就是确定MDIV、PDIV、SDIV的值。
void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
{
rMPLLCON = (mdiv《《12) | (pdiv《《4) | sdiv;
}
上面已经计算出来m=(MDIV+8)=100, p=(PDIV+2)=3,s=SDIV=1.
m p s 的值,从而可以得出 MPLL=(2*100*12)/(3*1)=400MHZ
m=77+8=85,p=5,s=0
UPLL=(85*12)/(5*1)=97/5=
FCLK=400MHZ
又因为FCLK:HCLK:PCLK的分频比为1:4:8,从而得到HCLK的值为100MHZ,PCLK的值为50MHZ。
史海拾趣
|
应用很简单,2003输入接MCU的IO,输出接一个加热丝(加热丝电阻100欧姆左右),现在的现象是不管MCU的IO是什么信号,加热丝都一直进行加热。现在批量生产的10台机器中有一台出现了这个问题,是元件本身的问题,还是电路的问题呢,小弟很着急,请大 ...… 查看全部问答> |
|
我在PB4.2下定制WINCE,build时出现1个错误,系统提示参考WINCE420目录下的build.err文件,文件的内容如下: Starting sysgen phase for project ( common ) Found localized resources for Languages ( 0404 0407 040C 0410 0411 0412 0413 041 ...… 查看全部问答> |
|
u-boot引导linux,在出现如下问题后就不动了……请求帮助! 网上有两种解决方案: 一是串口的问题,即ttySAC0; 二是时钟频率的问题。 这两个我都排除了,但还是不行! 出现的问题如下: Starting kernel ... Uncompressing Linux................................................................... ...… 查看全部问答> |
|
请问:如果某一个timer到时间而没有被关闭,将会有什么结果产生? 我是这样想: 设置并且启动timer后,timer开始计时,一旦指定的延时结束,函数立即被调用。 可是如果timer到时间没有被关闭,将会产生什么样的结果呢? 请高手们帮助解答一下… 查看全部问答> |
|
现象:使用查询模式能够实现正常收发,使用串口中断时,没有中断时,在主程序循环中正常运行,如果收到字符,不是跳到USART1_IRQHandler,而是跳到了 HardFaultException中断,可能是哪里的原因,如果说硬件有问题,可查询模式很正常。请高手 ...… 查看全部问答> |
|
STM32F103VE 能从电脑上看到USB盘符,文件也能读出,速度也不慢。 可就是一往上写就不行,提示超时错误。 用USBlyer抓包,一大堆都是success,只有一个Remova Relation 显示Not surportted. 只要一写,就卡住。。。。。。N久后说设备超时 ...… 查看全部问答> |
|
用STM32芯片的朋友,你们想在上面用labview开发吗? LabVIEW——Laboratory Virtual Instrument Engineering Workbench(实验室虚拟仪器集成环境)应该包含两种含义:其一,LabVIEW是一种图形化的编程语言,所以LabVIEW也被称为:G(graphical)语言;其二,LabVIEW也包含了支持图形化编程语言进行应 ...… 查看全部问答> |




