2440学习——设置系统时钟

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38139533/article/details/85995694

流程

设置LockTime变频锁定时间
设置FCLK,HCLK,PCLK三者之间的比例
设置FCLK与晶振输入频率(Fin)的倍数
设置CPU工作于异步模式

设置LockTime变频锁定时间

设置LOCKTIME寄存器
LOCKTIME(0x4C000000) = 0xFFFFFFFF
ldr r0, =0x4C000000 /* xy:伪指令 将地址写入寄存器中 /
ldr r1, =0xFFFFFFFF /
xy:伪指令 将地址写入寄存器中 /
str r1, [r0] /
xy:r1中的值写入r0中*/

设置FCLK,HCLK,PCLK三者之间的比例

CLKDIVN(0x4C000014) = 0X5, tFCLK:tHCLK:tPCLK = 1:4:8
HDIVN [2:1]
00 : HCLK = FCLK/1.
01 : HCLK = FCLK/2.
10 : HCLK = FCLK/4 when CAMDIVN[9] = 0.HCLK= FCLK/8 when CAMDIVN[9] = 1.
11 : HCLK = FCLK/3 when CAMDIVN[8] = 0.HCLK = FCLK/6 when CAMDIVN[8] = 1.
PDIVN [0]
0: PCLK has the clock same as the HCLK/1.
1: PCLK has the clock same as the HCLK/2.

ldr r0, =0x4C000014 /* xy:伪指令 将地址写入寄存器中 /
ldr r1, =0x5 /
xy:伪指令 将地址写入寄存器中 /
str r1, [r0] /
xy:r1中的值写入r0中*/

设置FCLK与晶振输入频率(Fin)的倍数

/* 设置MPLLCON(0x4C000004) = (92<<12)|(1<<4)|(1<<0)
* m = MDIV+8 = 92+8=100
* p = PDIV+2 = 1+2 = 3
* s = SDIV = 1
* FCLK = 2mFin/(p2^s) = 210012/(32^1)=400M
*/
/ * xy:当设置完MPLL之后,就会自动进入LockTime变频锁定期间,LockTime之后,MPLL输出稳定时钟频率 */
ldr r0, =0x4C000004
ldr r1, =(92<<12)|(1<<4)|(1<<0)
str r1, [r0]

设置CPU工作于异步模式

/* 设置CPU工作于异步模式 */
/ *
xy:如果HDIV设置为非0,CPU的总线模式要进行改变,默认情况下FCLK = HCLK,
CPU工作在fast bus mode快速总线模式下,
HDIV设置为非0后, FCLK与HCLK不再相等,要将CPU改为asynchronous bus mod异步总线模式
*/
mrc p15,0,r0,c1,c0,0
orr r0,r0,#0xc0000000
mcr p15,0,r0,c1,c0,0

猜你喜欢

转载自blog.csdn.net/m0_38139533/article/details/85995694