SD-iNand 时钟配置部分
INAND MMC时钟控制
EPLL 外设倍频器

1.设置APLL/MPLL/EPLL/EPLL锁相环时间
翻看手册,P371页,找到PLL CONTROL REGISTERS。
• (APLL_LOCK, R/W, Address = 0xE010_0000)
• (MPLL_LOCK, R/W, Address = 0xE010_0008)
• (EPLL_LOCK, R/W, Address = 0xE010_0010)
• (VPLL_LOCK, R/W, Address = 0xE010_0020)
这里出现了一个问题,APLL/MPLL/EPLL/VPLL的锁相环的时间是不一样的,而像S5PC100,频率为667MHz,他的A/M/E/HPLL的锁相环时间均是300us,而在Exynos 4xxx中,时间又变成了250,这个时间一定要查芯片手册。那么,所以,这里我们要用4个寄存器来存不同的LOCK_OFFSET的值。查询ATPCS文档(Procedure Call Standard for the ARM v2.08),在第P15页找到,r4-r8是用来存储变量的寄存器,OK,我们选取4个寄存器来保存值。
APLL的锁时间为:24*30=720 --0x2D0
MPLL的锁时间为:24*200=4800 --0x12C0
EPLL的锁时间为:24*375=9000 --0x2328
VPLL的锁时间为:24*100=2400 --0x960
将上面四个值存入寄存器r4--r8,这里使用寄存器的别名v1--v4,然后再将寄存值的分别存入APLL_LOCK/MPLL_LOCK/EPLL_LOCK/VPLL_LOCK对应的寄存器地址中
ldr r0, =0xE0100000 ldr v1, =0x2D0 ldr v2, =0x12C0 ldr v3, =0x2328 ldr v4, =0x960 str v1, [r0, #0x00] str v2, [r0, #0x04] str v3, [r0, #0x08] str v4, [r0, #0x0c]

代入可算出SCLKEPLL 96MHZ
在寄存器中,clock source x - 设置MUX开关,clock divider control - 设置分频系数


xPLL_CON/xPLL_CON0/xPLL_CON1 寄存器:主要是用来打开/关闭PLL电路,设置PLL的倍频产生,查看PLL锁定状态等
CLK_SRC4 MMC MUX时钟配置 CLK_DIV4 分频配置
CLK_MUX_STATn(n:0~1)寄存器:查看MUX的状态是否已经完成还是在进行中
总结:最重要的有三类寄存器,分别是CON、SRC、DIV。其中CON决定PLL倍频多少,SRC决定走哪一条路,DIV决定分频多少。
独坐磐石,亦可日行万里!

浙公网安备 33010602011771号